Tue, 11 Apr 2006 16:06:24 +0000
[gaim-migrate @ 16009]
Use the GSlice allocator (for logs and log sets) when compiling with glib 2.10 or greater and eliminate some unnecessary memory zeroing. This cuts the log loading time in half for one of Luke's contacts.
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
1 | /** |
|
10297
b36800725b7a
[gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents:
10274
diff
changeset
|
2 | * @file gtkconv.c GTK+ Conversation API |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
3 | * @ingroup gtkui |
| 4359 | 4 | * |
|
10297
b36800725b7a
[gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents:
10274
diff
changeset
|
5 | * gaim |
|
b36800725b7a
[gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents:
10274
diff
changeset
|
6 | * |
| 8046 | 7 | * Gaim is the legal property of its developers, whose names are too numerous |
| 8 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 9 | * source distribution. | |
|
6725
21fa06d508c8
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
10 | * |
| 4359 | 11 | * This program is free software; you can redistribute it and/or modify |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | * | |
| 25 | */ | |
| 9791 | 26 | #include "internal.h" |
| 27 | #include "gtkgaim.h" | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
28 | |
| 4359 | 29 | #ifndef _WIN32 |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
30 | # include <X11/Xlib.h> |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
31 | #endif |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
32 | |
| 4359 | 33 | #ifdef USE_GTKSPELL |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
34 | # include <gtkspell/gtkspell.h> |
|
7538
b20dbe9222e2
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
35 | # ifdef _WIN32 |
|
b20dbe9222e2
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
36 | # include "wspell.h" |
|
b20dbe9222e2
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
37 | # endif |
| 4359 | 38 | #endif |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
39 | |
| 4359 | 40 | #include <gdk/gdkkeysyms.h> |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
41 | |
|
9699
d1ca5dd91cc2
[gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
42 | #include "account.h" |
| 9130 | 43 | #include "cmds.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
44 | #include "debug.h" |
|
12272
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12264
diff
changeset
|
45 | #include "idle.h" |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6877
diff
changeset
|
46 | #include "imgstore.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
47 | #include "log.h" |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
48 | #include "notify.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
49 | #include "prpl.h" |
| 6038 | 50 | #include "request.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
51 | #include "util.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
52 | |
|
10297
b36800725b7a
[gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents:
10274
diff
changeset
|
53 | #include "gtkdnd-hints.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
54 | #include "gtkblist.h" |
| 5717 | 55 | #include "gtkconv.h" |
| 11583 | 56 | #include "gtkconvwin.h" |
|
9709
2e73f176cc80
[gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents:
9706
diff
changeset
|
57 | #include "gtkdialogs.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
58 | #include "gtkimhtml.h" |
| 8317 | 59 | #include "gtkimhtmltoolbar.h" |
| 7431 | 60 | #include "gtklog.h" |
|
11554
940945f8326c
[gaim-migrate @ 13814]
Gary Kramlich <grim@reaperworld.com>
parents:
11552
diff
changeset
|
61 | #include "gtkmenutray.h" |
|
5907
b2812113a4a6
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
62 | #include "gtkpounce.h" |
|
11206
d5dfb077db0b
[gaim-migrate @ 13334]
Daniel Atallah <datallah@pidgin.im>
parents:
11145
diff
changeset
|
63 | #include "gtkprefs.h" |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
64 | #include "gtkprivacy.h" |
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
65 | #include "gtkthemes.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
66 | #include "gtkutils.h" |
|
10297
b36800725b7a
[gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents:
10274
diff
changeset
|
67 | #include "gtkstock.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
68 | |
|
12360
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
69 | #include "gtknickcolors.h" |
|
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
70 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
71 | #define AUTO_RESPONSE "<AUTO-REPLY> : " |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
72 | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
73 | typedef enum |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
74 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
75 | GAIM_GTKCONV_SET_TITLE = 1 << 0, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
76 | GAIM_GTKCONV_BUDDY_ICON = 1 << 1, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
77 | GAIM_GTKCONV_MENU = 1 << 2, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
78 | GAIM_GTKCONV_TAB_ICON = 1 << 3, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
79 | GAIM_GTKCONV_TOPIC = 1 << 4, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
80 | GAIM_GTKCONV_SMILEY_THEME = 1 << 5, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
81 | GAIM_GTKCONV_COLORIZE_TITLE = 1 << 6 |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
82 | }GaimGtkConvFields; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
83 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
84 | #define GAIM_GTKCONV_ALL ((1 << 7) - 1) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
85 | |
|
12359
8e3097eaca09
[gaim-migrate @ 14663]
Richard Laager <rlaager@pidgin.im>
parents:
12358
diff
changeset
|
86 | #define SEND_COLOR "#204a87" |
|
8e3097eaca09
[gaim-migrate @ 14663]
Richard Laager <rlaager@pidgin.im>
parents:
12358
diff
changeset
|
87 | #define RECV_COLOR "#cc0000" |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
88 | #define HIGHLIGHT_COLOR "#AF7F00" |
| 7854 | 89 | |
| 12335 | 90 | /* Undef this to turn off "custom-smiley" debug messages */ |
| 91 | #define DEBUG_CUSTOM_SMILEY | |
| 92 | ||
| 10108 | 93 | #define LUMINANCE(c) (float)((0.3*(c.red))+(0.59*(c.green))+(0.11*(c.blue))) |
| 94 | ||
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
95 | #if 0 |
| 10108 | 96 | /* These colors come from the default GNOME palette */ |
| 97 | static GdkColor nick_colors[] = { | |
|
10117
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
98 | {0, 47616, 46336, 43776}, /* Basic 3D Medium */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
99 | {0, 32768, 32000, 29696}, /* Basic 3D Dark */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
100 | {0, 22016, 20992, 18432}, /* 3D Shadow */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
101 | {0, 33536, 42496, 32512}, /* Green Medium */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
102 | {0, 23808, 29952, 21760}, /* Green Dark */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
103 | {0, 17408, 22016, 12800}, /* Green Shadow */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
104 | {0, 57344, 46592, 44800}, /* Red Hilight */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
105 | {0, 49408, 26112, 23040}, /* Red Medium */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
106 | {0, 34816, 17920, 12544}, /* Red Dark */ |
|
10812
25c595cbffe8
[gaim-migrate @ 12465]
Richard Laager <rlaager@pidgin.im>
parents:
10810
diff
changeset
|
107 | {0, 49408, 14336, 8704}, /* Red Shadow */ |
|
10117
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
108 | {0, 34816, 32512, 41728}, /* Purple Medium */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
109 | {0, 25088, 23296, 33024}, /* Purple Dark */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
110 | {0, 18688, 16384, 26112}, /* Purple Shadow */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
111 | {0, 40192, 47104, 53760}, /* Blue Hilight */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
112 | {0, 29952, 36864, 44544}, /* Blue Medium */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
113 | {0, 57344, 49920, 40448}, /* Face Skin Medium */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
114 | {0, 45824, 37120, 26880}, /* Face skin Dark */ |
|
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
115 | {0, 33280, 26112, 18176}, /* Face Skin Shadow */ |
|
10812
25c595cbffe8
[gaim-migrate @ 12465]
Richard Laager <rlaager@pidgin.im>
parents:
10810
diff
changeset
|
116 | {0, 57088, 16896, 7680}, /* Accent Red */ |
|
25c595cbffe8
[gaim-migrate @ 12465]
Richard Laager <rlaager@pidgin.im>
parents:
10810
diff
changeset
|
117 | {0, 39168, 0, 0}, /* Accent Red Dark */ |
|
10117
063607d5e97e
[gaim-migrate @ 11154]
Luke Schierer <lschiere@pidgin.im>
parents:
10116
diff
changeset
|
118 | {0, 17920, 40960, 17920}, /* Accent Green */ |
|
10812
25c595cbffe8
[gaim-migrate @ 12465]
Richard Laager <rlaager@pidgin.im>
parents:
10810
diff
changeset
|
119 | {0, 9728, 50944, 9728} /* Accent Green Dark */ |
| 4359 | 120 | }; |
| 6291 | 121 | |
| 4359 | 122 | #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors)) |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
123 | #endif |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
124 | |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
125 | /* From http://www.w3.org/TR/AERT#color-contrast */ |
|
12354
899c1084b442
[gaim-migrate @ 14658]
Luke Schierer <lschiere@pidgin.im>
parents:
12353
diff
changeset
|
126 | #define MIN_BRIGHTNESS_CONTRAST 75 |
|
899c1084b442
[gaim-migrate @ 14658]
Luke Schierer <lschiere@pidgin.im>
parents:
12353
diff
changeset
|
127 | #define MIN_COLOR_CONTRAST 200 |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
128 | |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
129 | #define NUM_NICK_COLORS 220 |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
130 | static GdkColor *nick_colors = NULL; |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
131 | static guint nbr_nick_colors; |
| 4359 | 132 | |
| 11581 | 133 | typedef struct { |
| 4359 | 134 | GtkWidget *window; |
| 135 | ||
| 136 | GtkWidget *entry; | |
| 137 | GtkWidget *message; | |
| 138 | ||
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
139 | GaimConversation *conv; |
|
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
140 | |
|
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
141 | } InviteBuddyInfo; |
| 4359 | 142 | |
| 143 | static GtkWidget *invite_dialog = NULL; | |
|
11206
d5dfb077db0b
[gaim-migrate @ 13334]
Daniel Atallah <datallah@pidgin.im>
parents:
11145
diff
changeset
|
144 | static GtkWidget *warn_close_dialog = NULL; |
| 4359 | 145 | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
146 | static GaimGtkWindow *hidden_convwin = NULL; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
147 | static GList *window_list = NULL; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
148 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
149 | |
| 11594 | 150 | static gboolean update_send_to_selection(GaimGtkWindow *win); |
| 151 | static void generate_send_to_items(GaimGtkWindow *win); | |
| 11581 | 152 | |
| 4359 | 153 | /* Prototypes. <-- because Paco-Paco hates this comment. */ |
| 10810 | 154 | static void got_typing_keypress(GaimGtkConversation *gtkconv, gboolean first); |
| 11604 | 155 | static void gray_stuff_out(GaimGtkConversation *gtkconv); |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
156 | static GList *generate_invite_user_names(GaimConnection *gc); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
157 | static void add_chat_buddy_common(GaimConversation *conv, const char *name, |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
158 | GaimConvChatBuddyFlags flags, const char *alias, const char *old_name); |
| 9605 | 159 | static gboolean tab_complete(GaimConversation *conv); |
| 11604 | 160 | static void gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type); |
| 11613 | 161 | static void gtkconv_set_unseen(GaimGtkConversation *gtkconv, GaimUnseenState state); |
| 10810 | 162 | static void update_typing_icon(GaimGtkConversation *gtkconv); |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
163 | static const char *item_factory_translate_func (const char *path, gpointer func_data); |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
164 | gboolean gaim_gtkconv_has_focus(GaimConversation *conv); |
| 12335 | 165 | static void gaim_gtkconv_custom_smiley_allocated(GdkPixbufLoader *loader, gpointer user_data); |
| 166 | static void gaim_gtkconv_custom_smiley_closed(GdkPixbufLoader *loader, gpointer user_data); | |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
167 | static GdkColor* generate_nick_colors(guint *numcolors, GdkColor background); |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
168 | static gboolean color_is_visible(GdkColor foreground, GdkColor background, int color_contrast, int brightness_contrast); |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
169 | static void gaim_gtkconv_update_fields(GaimConversation *conv, GaimGtkConvFields fields); |
| 4359 | 170 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
171 | static GdkColor *get_nick_color(GaimGtkConversation *gtkconv, const char *name) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
172 | static GdkColor col; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
173 | GtkStyle *style = gtk_widget_get_style(gtkconv->imhtml); |
|
11480
7ccbb9220548
[gaim-migrate @ 13722]
Richard Laager <rlaager@pidgin.im>
parents:
11479
diff
changeset
|
174 | float scale; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
175 | |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
176 | col = nick_colors[g_str_hash(name) % nbr_nick_colors]; |
|
11480
7ccbb9220548
[gaim-migrate @ 13722]
Richard Laager <rlaager@pidgin.im>
parents:
11479
diff
changeset
|
177 | scale = ((1-(LUMINANCE(style->base[GTK_STATE_NORMAL]) / LUMINANCE(style->white))) * |
|
7ccbb9220548
[gaim-migrate @ 13722]
Richard Laager <rlaager@pidgin.im>
parents:
11479
diff
changeset
|
178 | (LUMINANCE(style->white)/MAX(MAX(col.red, col.blue), col.green))); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
179 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
180 | /* The colors are chosen to look fine on white; we should never have to darken */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
181 | if (scale > 1) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
182 | col.red *= scale; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
183 | col.green *= scale; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
184 | col.blue *= scale; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
185 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
186 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
187 | return &col; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
188 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
189 | |
| 4359 | 190 | /************************************************************************** |
| 191 | * Callbacks | |
| 192 | **************************************************************************/ | |
|
10971
4c823ffab27a
[gaim-migrate @ 12796]
Mark Doliner <markdoliner@pidgin.im>
parents:
10964
diff
changeset
|
193 | |
| 4359 | 194 | static gint |
| 10810 | 195 | close_conv_cb(GtkWidget *w, GaimGtkConversation *gtkconv) |
| 4359 | 196 | { |
| 10810 | 197 | GList *list = g_list_copy(gtkconv->convs), *l; |
| 11508 | 198 | |
| 10810 | 199 | l = list; |
| 200 | while (l) { | |
| 201 | GaimConversation *conv = l->data; | |
| 202 | gaim_conversation_destroy(conv); | |
| 203 | l = l->next; | |
| 204 | } | |
| 11508 | 205 | |
| 10810 | 206 | g_list_free(list); |
| 11508 | 207 | |
|
4361
23ca251ed655
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
208 | return TRUE; |
| 4359 | 209 | } |
| 210 | ||
| 8914 | 211 | static gboolean |
| 10810 | 212 | size_allocate_cb(GtkWidget *w, GtkAllocation *allocation, GaimGtkConversation *gtkconv) |
| 8914 | 213 | { |
| 10810 | 214 | GaimConversation *conv = gtkconv->active_conv; |
| 11508 | 215 | |
| 8914 | 216 | if (!GTK_WIDGET_VISIBLE(w)) |
| 217 | return FALSE; | |
| 218 | ||
| 219 | if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 220 | return FALSE; | |
| 221 | ||
|
11620
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
222 | /* I find that I resize the window when it has a bunch of conversations in it, mostly so that the |
|
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
223 | * tab bar will fit, but then I don't want new windows taking up the entire screen. I check to see |
|
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
224 | * if there is only one conversation in the window. This way we'll be setting new windows to the |
|
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
225 | * size of the last resized new window. */ |
|
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
226 | /* I think that the above justification is not the majority, and that the new tab resizing should |
|
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
227 | * negate it anyway. --luke */ |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
228 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
| 8914 | 229 | { |
|
11453
16ca326fd6ee
[gaim-migrate @ 13692]
Luke Schierer <lschiere@pidgin.im>
parents:
11452
diff
changeset
|
230 | if (w == gtkconv->imhtml) { |
|
16ca326fd6ee
[gaim-migrate @ 13692]
Luke Schierer <lschiere@pidgin.im>
parents:
11452
diff
changeset
|
231 | gaim_prefs_set_int("/gaim/gtk/conversations/im/default_width", allocation->width); |
|
16ca326fd6ee
[gaim-migrate @ 13692]
Luke Schierer <lschiere@pidgin.im>
parents:
11452
diff
changeset
|
232 | gaim_prefs_set_int("/gaim/gtk/conversations/im/default_height", allocation->height); |
|
16ca326fd6ee
[gaim-migrate @ 13692]
Luke Schierer <lschiere@pidgin.im>
parents:
11452
diff
changeset
|
233 | } |
| 8914 | 234 | if (w == gtkconv->entry) |
| 235 | gaim_prefs_set_int("/gaim/gtk/conversations/im/entry_height", allocation->height); | |
| 236 | } | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
237 | else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
| 8914 | 238 | { |
|
11453
16ca326fd6ee
[gaim-migrate @ 13692]
Luke Schierer <lschiere@pidgin.im>
parents:
11452
diff
changeset
|
239 | if (w == gtkconv->imhtml) { |
|
16ca326fd6ee
[gaim-migrate @ 13692]
Luke Schierer <lschiere@pidgin.im>
parents:
11452
diff
changeset
|
240 | gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_width", allocation->width); |
|
16ca326fd6ee
[gaim-migrate @ 13692]
Luke Schierer <lschiere@pidgin.im>
parents:
11452
diff
changeset
|
241 | gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_height", allocation->height); |
|
16ca326fd6ee
[gaim-migrate @ 13692]
Luke Schierer <lschiere@pidgin.im>
parents:
11452
diff
changeset
|
242 | } |
| 8914 | 243 | if (w == gtkconv->entry) |
| 244 | gaim_prefs_set_int("/gaim/gtk/conversations/chat/entry_height", allocation->height); | |
| 245 | } | |
| 246 | ||
| 247 | return FALSE; | |
| 248 | } | |
| 249 | ||
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
250 | static void |
| 10810 | 251 | default_formatize(GaimGtkConversation *c) |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
252 | { |
| 10810 | 253 | GaimConversation *conv = c->active_conv; |
| 11508 | 254 | |
| 10665 | 255 | if (conv->features & GAIM_CONNECTION_HTML) |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
256 | { |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
257 | char *color; |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
258 | GdkColor fg_color, bg_color; |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
259 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
260 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold") != GTK_IMHTML(c->entry)->edit.bold) |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
261 | gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry)); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
262 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
263 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic") != GTK_IMHTML(c->entry)->edit.italic) |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
264 | gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry)); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
265 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
266 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline") != GTK_IMHTML(c->entry)->edit.underline) |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
267 | gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry)); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
268 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
269 | gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
270 | gaim_prefs_get_string("/gaim/gtk/conversations/font_face")); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
271 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
272 | if (!(conv->features & GAIM_CONNECTION_NO_FONTSIZE)) |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
273 | gtk_imhtml_font_set_size(GTK_IMHTML(c->entry), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
274 | gaim_prefs_get_int("/gaim/gtk/conversations/font_size")); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
275 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
276 | if(strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), "") != 0) |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
277 | { |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
278 | gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
279 | &fg_color); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
280 | color = g_strdup_printf("#%02x%02x%02x", |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
281 | fg_color.red / 256, |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
282 | fg_color.green / 256, |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
283 | fg_color.blue / 256); |
| 8061 | 284 | } |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
285 | else |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
286 | color = g_strdup(""); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
287 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
288 | gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
289 | g_free(color); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
290 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
291 | if(!(conv->features & GAIM_CONNECTION_NO_BGCOLOR) && |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
292 | strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), "") != 0) |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
293 | { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
294 | gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
295 | &bg_color); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
296 | color = g_strdup_printf("#%02x%02x%02x", |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
297 | bg_color.red / 256, |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
298 | bg_color.green / 256, |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
299 | bg_color.blue / 256); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
300 | } |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
301 | else |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
302 | color = g_strdup(""); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
303 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
304 | gtk_imhtml_toggle_background(GTK_IMHTML(c->entry), color); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
305 | g_free(color); |
| 8677 | 306 | |
| 9025 | 307 | |
| 10665 | 308 | if (conv->features & GAIM_CONNECTION_FORMATTING_WBFO) |
| 8677 | 309 | gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(c->entry), TRUE); |
| 310 | else | |
| 311 | gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(c->entry), FALSE); | |
| 8061 | 312 | } |
| 313 | } | |
| 9130 | 314 | |
|
11275
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
315 | static void |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
316 | clear_formatting_cb(GtkIMHtml *imhtml, GaimGtkConversation *gtkconv) |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
317 | { |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
318 | default_formatize(gtkconv); |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
319 | } |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
320 | |
| 9130 | 321 | static const char * |
| 322 | gaim_gtk_get_cmd_prefix(void) | |
| 323 | { | |
| 324 | return "/"; | |
| 325 | } | |
| 326 | ||
| 9167 | 327 | static GaimCmdRet |
| 9829 | 328 | say_command_cb(GaimConversation *conv, |
| 329 | const char *cmd, char **args, char **error, void *data) | |
| 330 | { | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
331 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
| 9829 | 332 | gaim_conv_im_send(GAIM_CONV_IM(conv), args[0]); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
333 | else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
| 9829 | 334 | gaim_conv_chat_send(GAIM_CONV_CHAT(conv), args[0]); |
| 335 | ||
| 336 | return GAIM_CMD_RET_OK; | |
| 337 | } | |
| 338 | ||
| 339 | static GaimCmdRet | |
| 9167 | 340 | me_command_cb(GaimConversation *conv, |
| 9597 | 341 | const char *cmd, char **args, char **error, void *data) |
| 9167 | 342 | { |
| 343 | char *tmp; | |
| 344 | ||
| 345 | tmp = g_strdup_printf("/me %s", args[0]); | |
| 9175 | 346 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
347 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
| 9167 | 348 | gaim_conv_im_send(GAIM_CONV_IM(conv), tmp); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
349 | else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
| 9167 | 350 | gaim_conv_chat_send(GAIM_CONV_CHAT(conv), tmp); |
| 351 | ||
| 352 | g_free(tmp); | |
| 353 | return GAIM_CMD_RET_OK; | |
| 354 | } | |
| 355 | ||
| 9212 | 356 | static GaimCmdRet |
| 357 | debug_command_cb(GaimConversation *conv, | |
| 9597 | 358 | const char *cmd, char **args, char **error, void *data) |
| 9212 | 359 | { |
| 360 | char *tmp, *markup; | |
| 361 | GaimCmdStatus status; | |
| 362 | ||
| 363 | if (!g_ascii_strcasecmp(args[0], "version")) { | |
| 13370 | 364 | tmp = g_strdup_printf("me is using Gaim v%s.", VERSION); |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10698
diff
changeset
|
365 | markup = g_markup_escape_text(tmp, -1); |
| 9212 | 366 | |
| 367 | status = gaim_cmd_do_command(conv, tmp, markup, error); | |
| 368 | ||
| 369 | g_free(tmp); | |
| 370 | g_free(markup); | |
| 371 | return status; | |
| 372 | } else { | |
| 373 | gaim_conversation_write(conv, NULL, _("Supported debug options are: version"), | |
| 374 | GAIM_MESSAGE_NO_LOG|GAIM_MESSAGE_ERROR, time(NULL)); | |
| 375 | return GAIM_CMD_STATUS_OK; | |
| 376 | } | |
| 377 | } | |
| 378 | ||
| 9213 | 379 | static GaimCmdRet |
| 11145 | 380 | clear_command_cb(GaimConversation *conv, |
| 381 | const char *cmd, char **args, char **error, void *data) | |
| 382 | { | |
| 383 | GaimGtkConversation *gtkconv = NULL; | |
| 384 | ||
| 385 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 386 | ||
| 387 | gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); | |
| 388 | return GAIM_CMD_STATUS_OK; | |
| 389 | } | |
| 390 | ||
| 391 | static GaimCmdRet | |
| 9213 | 392 | help_command_cb(GaimConversation *conv, |
| 9597 | 393 | const char *cmd, char **args, char **error, void *data) |
| 9213 | 394 | { |
| 9597 | 395 | GList *l, *text; |
| 9213 | 396 | GString *s; |
| 9597 | 397 | |
| 398 | if (args[0] != NULL) { | |
| 399 | s = g_string_new(""); | |
| 400 | text = gaim_cmd_help(conv, args[0]); | |
| 401 | ||
| 402 | if (text) { | |
| 403 | for (l = text; l; l = l->next) | |
| 404 | if (l->next) | |
| 9816 | 405 | g_string_append_printf(s, "%s\n", (char *)l->data); |
| 9597 | 406 | else |
| 9816 | 407 | g_string_append_printf(s, "%s", (char *)l->data); |
| 9597 | 408 | } else { |
| 409 | g_string_append(s, _("No such command (in this context).")); | |
| 410 | } | |
| 411 | } else { | |
| 412 | s = g_string_new(_("Use \"/help <command>\" for help on a specific command.\n" | |
| 413 | "The following commands are available in this context:\n")); | |
| 414 | ||
| 415 | text = gaim_cmd_list(conv); | |
| 416 | for (l = text; l; l = l->next) | |
| 9213 | 417 | if (l->next) |
| 9597 | 418 | g_string_append_printf(s, "%s, ", (char *)l->data); |
| 9213 | 419 | else |
| 9597 | 420 | g_string_append_printf(s, "%s.", (char *)l->data); |
| 9213 | 421 | } |
| 422 | ||
| 423 | gaim_conversation_write(conv, NULL, s->str, GAIM_MESSAGE_NO_LOG, time(NULL)); | |
| 424 | g_string_free(s, TRUE); | |
| 425 | ||
| 426 | return GAIM_CMD_STATUS_OK; | |
| 427 | } | |
| 428 | ||
| 4359 | 429 | static void |
| 9374 | 430 | send_history_add(GaimConversation *conv, const char *message) |
| 431 | { | |
| 432 | GList *first; | |
| 433 | ||
| 434 | first = g_list_first(conv->send_history); | |
| 435 | ||
| 436 | if (first->data) | |
| 437 | g_free(first->data); | |
| 438 | ||
| 439 | first->data = g_strdup(message); | |
| 440 | ||
| 441 | conv->send_history = g_list_prepend(first, NULL); | |
| 442 | } | |
| 443 | ||
| 9832 | 444 | static gboolean |
| 445 | check_for_and_do_command(GaimConversation *conv) | |
| 446 | { | |
| 447 | GaimGtkConversation *gtkconv; | |
| 448 | char *cmd; | |
| 449 | const char *prefix; | |
| 450 | GaimAccount *account; | |
| 451 | GtkTextIter start; | |
| 452 | ||
| 453 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 454 | account = gaim_conversation_get_account(conv); | |
| 455 | prefix = gaim_gtk_get_cmd_prefix(); | |
| 456 | ||
| 457 | cmd = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry), NULL, NULL); | |
| 458 | gtk_text_buffer_get_start_iter(GTK_IMHTML(gtkconv->entry)->text_buffer, &start); | |
| 459 | ||
| 460 | if (cmd && (strncmp(cmd, prefix, strlen(prefix)) == 0) | |
| 461 | && !gtk_text_iter_get_child_anchor(&start)) { | |
| 462 | GaimCmdStatus status; | |
| 463 | char *error, *cmdline, *markup, *send_history; | |
| 464 | GtkTextIter end; | |
| 465 | ||
| 466 | send_history = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); | |
| 467 | send_history_add(conv, send_history); | |
| 468 | g_free(send_history); | |
| 469 | ||
| 470 | cmdline = cmd + strlen(prefix); | |
| 471 | ||
| 472 | gtk_text_iter_forward_chars(&start, g_utf8_strlen(prefix, -1)); | |
| 473 | gtk_text_buffer_get_end_iter(GTK_IMHTML(gtkconv->entry)->text_buffer, &end); | |
| 474 | markup = gtk_imhtml_get_markup_range(GTK_IMHTML(gtkconv->entry), &start, &end); | |
| 475 | status = gaim_cmd_do_command(conv, cmdline, markup, &error); | |
| 476 | g_free(cmd); | |
| 477 | g_free(markup); | |
| 478 | ||
| 479 | switch (status) { | |
| 480 | case GAIM_CMD_STATUS_OK: | |
| 481 | return TRUE; | |
| 482 | case GAIM_CMD_STATUS_NOT_FOUND: | |
| 483 | if (!gaim_prefs_get_bool("/gaim/gtk/conversations/passthrough_unknown_commands")) { | |
| 484 | gaim_conversation_write(conv, "", _("No such command."), | |
| 485 | GAIM_MESSAGE_NO_LOG, time(NULL)); | |
| 486 | ||
| 487 | return TRUE; | |
| 488 | } | |
| 489 | return FALSE; | |
| 490 | case GAIM_CMD_STATUS_WRONG_ARGS: | |
| 491 | gaim_conversation_write(conv, "", _("Syntax Error: You typed the wrong number of arguments " | |
| 492 | "to that command."), | |
| 493 | GAIM_MESSAGE_NO_LOG, time(NULL)); | |
| 494 | return TRUE; | |
| 495 | case GAIM_CMD_STATUS_FAILED: | |
| 496 | gaim_conversation_write(conv, "", error ? error : _("Your command failed for an unknown reason."), | |
| 497 | GAIM_MESSAGE_NO_LOG, time(NULL)); | |
| 498 | if(error) | |
| 499 | g_free(error); | |
| 500 | return TRUE; | |
| 501 | case GAIM_CMD_STATUS_WRONG_TYPE: | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
502 | if(gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
10843
d9986604e6f1
[gaim-migrate @ 12515]
Richard Laager <rlaager@pidgin.im>
parents:
10839
diff
changeset
|
503 | gaim_conversation_write(conv, "", _("That command only works in chats, not IMs."), |
| 9832 | 504 | GAIM_MESSAGE_NO_LOG, time(NULL)); |
| 505 | else | |
|
10843
d9986604e6f1
[gaim-migrate @ 12515]
Richard Laager <rlaager@pidgin.im>
parents:
10839
diff
changeset
|
506 | gaim_conversation_write(conv, "", _("That command only works in IMs, not chats."), |
| 9832 | 507 | GAIM_MESSAGE_NO_LOG, time(NULL)); |
| 508 | return TRUE; | |
| 509 | case GAIM_CMD_STATUS_WRONG_PRPL: | |
| 510 | gaim_conversation_write(conv, "", _("That command doesn't work on this protocol."), | |
| 511 | GAIM_MESSAGE_NO_LOG, time(NULL)); | |
| 512 | return TRUE; | |
| 513 | } | |
| 514 | } | |
| 515 | ||
| 516 | g_free(cmd); | |
| 517 | return FALSE; | |
| 518 | } | |
| 519 | ||
| 9374 | 520 | static void |
| 10810 | 521 | send_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
| 4359 | 522 | { |
| 10810 | 523 | GaimConversation *conv = gtkconv->active_conv; |
|
8655
3ee9edd2a282
[gaim-migrate @ 9407]
Mark Doliner <markdoliner@pidgin.im>
parents:
8633
diff
changeset
|
524 | GaimAccount *account; |
| 8677 | 525 | GaimConnection *gc; |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
526 | GaimMessageFlags flags = 0; |
| 8448 | 527 | char *buf, *clean; |
| 4359 | 528 | |
|
8655
3ee9edd2a282
[gaim-migrate @ 9407]
Mark Doliner <markdoliner@pidgin.im>
parents:
8633
diff
changeset
|
529 | account = gaim_conversation_get_account(conv); |
| 9130 | 530 | |
| 9471 | 531 | if (!gaim_account_is_connected(account)) |
| 532 | return; | |
| 533 | ||
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
534 | if ((gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) && |
|
9474
04097a64398f
[gaim-migrate @ 10299]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9472
diff
changeset
|
535 | gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv))) |
| 9471 | 536 | return; |
| 537 | ||
| 9832 | 538 | if (check_for_and_do_command(conv)) { |
| 539 | gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); | |
| 540 | return; | |
| 9130 | 541 | } |
| 542 | ||
| 8442 | 543 | buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); |
| 8962 | 544 | clean = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry), NULL, NULL); |
| 8448 | 545 | |
| 4359 | 546 | gtk_widget_grab_focus(gtkconv->entry); |
| 547 | ||
| 8448 | 548 | if (strlen(clean) == 0) { |
| 549 | g_free(clean); | |
| 4359 | 550 | return; |
| 551 | } | |
| 552 | ||
|
12272
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12264
diff
changeset
|
553 | gaim_idle_touch(); |
|
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12264
diff
changeset
|
554 | |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
555 | /* XXX: is there a better way to tell if the message has images? */ |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
556 | if (GTK_IMHTML(gtkconv->entry)->im_images != NULL) |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
557 | flags |= GAIM_MESSAGE_IMAGES; |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
558 | |
| 8677 | 559 | gc = gaim_account_get_connection(account); |
| 10665 | 560 | if (gc && (conv->features & GAIM_CONNECTION_NO_NEWLINES)) { |
| 8677 | 561 | char **bufs; |
| 562 | int i; | |
| 563 | ||
| 564 | bufs = gtk_imhtml_get_markup_lines(GTK_IMHTML(gtkconv->entry)); | |
| 565 | for (i = 0; bufs[i]; i++) { | |
| 9374 | 566 | send_history_add(conv, bufs[i]); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
567 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
568 | gaim_conv_im_send_with_flags(GAIM_CONV_IM(conv), bufs[i], flags); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
569 | else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
570 | gaim_conv_chat_send_with_flags(GAIM_CONV_CHAT(conv), bufs[i], flags); |
| 8677 | 571 | } |
| 572 | ||
| 573 | g_strfreev(bufs); | |
| 574 | ||
| 575 | } else { | |
| 9374 | 576 | send_history_add(conv, buf); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
577 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
578 | gaim_conv_im_send_with_flags(GAIM_CONV_IM(conv), buf, flags); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
579 | else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
580 | gaim_conv_chat_send_with_flags(GAIM_CONV_CHAT(conv), buf, flags); |
| 8677 | 581 | } |
| 4359 | 582 | |
| 8677 | 583 | g_free(clean); |
| 4359 | 584 | g_free(buf); |
| 585 | ||
| 8061 | 586 | gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
| 11613 | 587 | gtkconv_set_unseen(gtkconv, GAIM_UNSEEN_NONE); |
| 4359 | 588 | } |
| 589 | ||
| 590 | static void | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
591 | add_remove_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
| 4359 | 592 | { |
|
7060
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
593 | GaimAccount *account; |
| 4359 | 594 | const char *name; |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
595 | GaimConversation *conv = gtkconv->active_conv; |
| 4359 | 596 | |
|
7060
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
597 | account = gaim_conversation_get_account(conv); |
|
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
598 | name = gaim_conversation_get_name(conv); |
|
7879
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
599 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
600 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { |
|
7859
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
601 | GaimBuddy *b; |
|
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
602 | |
|
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
603 | b = gaim_find_buddy(account, name); |
|
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
604 | if (b != NULL) |
|
9730
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9728
diff
changeset
|
605 | gaim_gtkdialogs_remove_buddy(b); |
|
7859
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
606 | else if (account != NULL && gaim_account_is_connected(account)) |
|
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
607 | gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
608 | } else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) { |
|
7859
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
609 | GaimChat *c; |
|
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
610 | |
|
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
611 | c = gaim_blist_find_chat(account, name); |
|
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
612 | if (c != NULL) |
|
9730
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9728
diff
changeset
|
613 | gaim_gtkdialogs_remove_chat(c); |
|
7859
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
614 | else if (account != NULL && gaim_account_is_connected(account)) |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9750
diff
changeset
|
615 | gaim_blist_request_add_chat(account, NULL, NULL, name); |
|
7859
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
616 | } |
| 4359 | 617 | |
| 618 | gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 619 | } | |
| 620 | ||
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
621 | static void chat_do_info(GaimGtkConversation *gtkconv, const char *who) |
| 7975 | 622 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
623 | GaimConversation *conv = gtkconv->active_conv; |
| 7975 | 624 | GaimPluginProtocolInfo *prpl_info = NULL; |
| 625 | GaimConnection *gc; | |
| 626 | ||
| 627 | if ((gc = gaim_conversation_get_gc(conv))) { | |
| 628 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 629 | ||
| 630 | /* | |
| 631 | * If there are special needs for getting info on users in | |
| 632 | * buddy chat "rooms"... | |
| 633 | */ | |
| 634 | if (prpl_info->get_cb_info != NULL) | |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
635 | { |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
636 | prpl_info->get_cb_info(gc, |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
637 | gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
638 | } |
| 7975 | 639 | else |
| 640 | prpl_info->get_info(gc, who); | |
| 641 | } | |
| 642 | } | |
| 643 | ||
| 644 | ||
| 4359 | 645 | static void |
| 10810 | 646 | info_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
| 4359 | 647 | { |
| 10810 | 648 | GaimConversation *conv = gtkconv->active_conv; |
| 4359 | 649 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
650 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { |
|
7879
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
651 | serv_get_info(gaim_conversation_get_gc(conv), |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
652 | gaim_conversation_get_name(conv)); |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
653 | |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
654 | gtk_widget_grab_focus(gtkconv->entry); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
655 | } else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) { |
|
7879
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
656 | /* Get info of the person currently selected in the GtkTreeView */ |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
657 | GaimGtkChatPane *gtkchat; |
| 4359 | 658 | GtkTreeIter iter; |
| 659 | GtkTreeModel *model; | |
| 660 | GtkTreeSelection *sel; | |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
661 | char *name; |
| 4359 | 662 | |
| 663 | gtkchat = gtkconv->u.chat; | |
| 664 | ||
| 665 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
| 666 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
| 667 | ||
| 668 | if (gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
669 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1); |
| 4359 | 670 | else |
| 671 | return; | |
| 672 | ||
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
673 | chat_do_info(gtkconv, name); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
674 | g_free(name); |
| 4359 | 675 | } |
| 676 | } | |
| 677 | ||
| 678 | static void | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
679 | block_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
| 4359 | 680 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
681 | GaimConversation *conv = gtkconv->active_conv; |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
682 | GaimAccount *account; |
|
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
683 | |
|
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
684 | account = gaim_conversation_get_account(conv); |
|
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
685 | |
|
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
686 | if (account != NULL && gaim_account_is_connected(account)) |
|
6399
36eb1f7411fa
[gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents:
6398
diff
changeset
|
687 | gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv)); |
| 4359 | 688 | |
| 689 | gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 690 | } | |
| 691 | ||
| 692 | static void | |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
693 | do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info) |
| 4359 | 694 | { |
| 695 | const char *buddy, *message; | |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
696 | GaimGtkConversation *gtkconv; |
| 4359 | 697 | |
| 698 | gtkconv = GAIM_GTK_CONVERSATION(info->conv); | |
| 699 | ||
| 700 | if (resp == GTK_RESPONSE_OK) { | |
| 701 | buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry)); | |
| 702 | message = gtk_entry_get_text(GTK_ENTRY(info->message)); | |
| 703 | ||
|
10113
7de12d0de633
[gaim-migrate @ 11147]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10112
diff
changeset
|
704 | if (!g_ascii_strcasecmp(buddy, "")) |
| 4359 | 705 | return; |
| 706 | ||
| 707 | serv_chat_invite(gaim_conversation_get_gc(info->conv), | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
708 | gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)), |
| 4359 | 709 | message, buddy); |
| 710 | } | |
| 711 | ||
| 712 | gtk_widget_destroy(invite_dialog); | |
| 713 | invite_dialog = NULL; | |
| 714 | ||
| 715 | g_free(info); | |
| 716 | } | |
| 717 | ||
| 718 | static void | |
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
719 | invite_dnd_recv(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
720 | GtkSelectionData *sd, guint inf, guint t, gpointer data) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
721 | { |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
722 | InviteBuddyInfo *info = (InviteBuddyInfo *)data; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
723 | const char *convprotocol; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
724 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
725 | convprotocol = gaim_account_get_protocol_id(gaim_conversation_get_account(info->conv)); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
726 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
727 | if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
728 | { |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
729 | GaimBlistNode *node = NULL; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
730 | GaimBuddy *buddy; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
731 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
732 | memcpy(&node, sd->data, sizeof(node)); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
733 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
734 | if (GAIM_BLIST_NODE_IS_CONTACT(node)) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
735 | buddy = gaim_contact_get_priority_buddy((GaimContact *)node); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
736 | else if (GAIM_BLIST_NODE_IS_BUDDY(node)) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
737 | buddy = (GaimBuddy *)node; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
738 | else |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
739 | return; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
740 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
741 | if (strcmp(convprotocol, gaim_account_get_protocol_id(buddy->account))) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
742 | { |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
743 | gaim_notify_error(GAIM_GTK_CONVERSATION(info->conv), NULL, |
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
744 | _("That buddy is not on the same protocol as this " |
|
10843
d9986604e6f1
[gaim-migrate @ 12515]
Richard Laager <rlaager@pidgin.im>
parents:
10839
diff
changeset
|
745 | "chat."), NULL); |
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
746 | } |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
747 | else |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
748 | gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry), buddy->name); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
749 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
750 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
751 | } |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
752 | else if (sd->target == gdk_atom_intern("application/x-im-contact", FALSE)) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
753 | { |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
754 | char *protocol = NULL; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
755 | char *username = NULL; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
756 | GaimAccount *account; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
757 | |
|
11137
cf40226ddff7
[gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents:
11115
diff
changeset
|
758 | if (gaim_gtk_parse_x_im_contact((const char *)sd->data, FALSE, &account, |
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
759 | &protocol, &username, NULL)) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
760 | { |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
761 | if (account == NULL) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
762 | { |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
763 | gaim_notify_error(GAIM_GTK_CONVERSATION(info->conv), NULL, |
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
764 | _("You are not currently signed on with an account that " |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
765 | "can invite that buddy."), NULL); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
766 | } |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
767 | else if (strcmp(convprotocol, gaim_account_get_protocol_id(account))) |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
768 | { |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
769 | gaim_notify_error(GAIM_GTK_CONVERSATION(info->conv), NULL, |
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
770 | _("That buddy is not on the same protocol as this " |
|
10843
d9986604e6f1
[gaim-migrate @ 12515]
Richard Laager <rlaager@pidgin.im>
parents:
10839
diff
changeset
|
771 | "chat."), NULL); |
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
772 | } |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
773 | else |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
774 | { |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
775 | gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry), username); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
776 | } |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
777 | } |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
778 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
779 | if (username != NULL) g_free(username); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
780 | if (protocol != NULL) g_free(protocol); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
781 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
782 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
783 | } |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
784 | } |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
785 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
786 | static const GtkTargetEntry dnd_targets[] = |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
787 | { |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
788 | {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 0}, |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
789 | {"application/x-im-contact", 0, 1} |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
790 | }; |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
791 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
792 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
793 | invite_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
| 4359 | 794 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
795 | GaimConversation *conv = gtkconv->active_conv; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
796 | InviteBuddyInfo *info = NULL; |
| 4359 | 797 | |
| 798 | if (invite_dialog == NULL) { | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
799 | GaimConnection *gc; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
800 | GaimGtkWindow *gtkwin; |
| 4359 | 801 | GtkWidget *label; |
| 802 | GtkWidget *vbox, *hbox; | |
| 803 | GtkWidget *table; | |
| 804 | GtkWidget *img; | |
| 805 | ||
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
806 | img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
| 11581 | 807 | GTK_ICON_SIZE_DIALOG); |
| 4359 | 808 | |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
809 | info = g_new0(InviteBuddyInfo, 1); |
| 4359 | 810 | info->conv = conv; |
| 811 | ||
| 11581 | 812 | gc = gaim_conversation_get_gc(conv); |
| 813 | gtkwin = gaim_gtkconv_get_window(gtkconv); | |
| 4359 | 814 | |
| 815 | /* Create the new dialog. */ | |
| 816 | invite_dialog = gtk_dialog_new_with_buttons( | |
|
7859
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7857
diff
changeset
|
817 | _("Invite Buddy Into Chat Room"), |
|
7879
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
818 | GTK_WINDOW(gtkwin->window), 0, |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
819 | GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
|
9443
cf79841d2705
[gaim-migrate @ 10264]
Christian Hammond <chipx86@chipx86.com>
parents:
9374
diff
changeset
|
820 | GAIM_STOCK_INVITE, GTK_RESPONSE_OK, NULL); |
| 4359 | 821 | |
| 822 | gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog), | |
| 11581 | 823 | GTK_RESPONSE_OK); |
| 11243 | 824 | gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), GAIM_HIG_BOX_SPACE); |
| 4359 | 825 | gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE); |
| 826 | gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE); | |
| 827 | ||
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
828 | info->window = GTK_WIDGET(invite_dialog); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
829 | |
| 4359 | 830 | /* Setup the outside spacing. */ |
| 831 | vbox = GTK_DIALOG(invite_dialog)->vbox; | |
| 832 | ||
| 11243 | 833 | gtk_box_set_spacing(GTK_BOX(vbox), GAIM_HIG_BORDER); |
| 834 | gtk_container_set_border_width(GTK_CONTAINER(vbox), GAIM_HIG_BOX_SPACE); | |
| 4359 | 835 | |
| 836 | /* Setup the inner hbox and put the dialog's icon in it. */ | |
| 11243 | 837 | hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); |
| 4359 | 838 | gtk_container_add(GTK_CONTAINER(vbox), hbox); |
| 839 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 840 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 841 | ||
| 842 | /* Setup the right vbox. */ | |
| 843 | vbox = gtk_vbox_new(FALSE, 0); | |
| 844 | gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 845 | ||
| 846 | /* Put our happy label in it. */ | |
| 847 | label = gtk_label_new(_("Please enter the name of the user you wish " | |
| 848 | "to invite, along with an optional invite " | |
| 849 | "message.")); | |
| 850 | gtk_widget_set_size_request(label, 350, -1); | |
| 851 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 852 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 853 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 854 | ||
| 855 | /* hbox for the table, and to give it some spacing on the left. */ | |
| 11243 | 856 | hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 4359 | 857 | gtk_container_add(GTK_CONTAINER(vbox), hbox); |
| 858 | ||
| 859 | /* Setup the table we're going to use to lay stuff out. */ | |
| 860 | table = gtk_table_new(2, 2, FALSE); | |
| 11243 | 861 | gtk_table_set_row_spacings(GTK_TABLE(table), GAIM_HIG_BOX_SPACE); |
| 862 | gtk_table_set_col_spacings(GTK_TABLE(table), GAIM_HIG_BOX_SPACE); | |
| 863 | gtk_container_set_border_width(GTK_CONTAINER(table), GAIM_HIG_BORDER); | |
| 4359 | 864 | gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); |
| 865 | ||
| 866 | /* Now the Buddy label */ | |
| 867 | label = gtk_label_new(NULL); | |
| 868 | gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:")); | |
| 869 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 870 | gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | |
| 871 | ||
| 872 | /* Now the Buddy drop-down entry field. */ | |
| 873 | info->entry = gtk_combo_new(); | |
| 874 | gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE); | |
| 875 | gtk_entry_set_activates_default( | |
| 876 | GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE); | |
| 877 | ||
| 878 | gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1); | |
| 879 | gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry); | |
| 880 | ||
| 881 | /* Fill in the names. */ | |
| 882 | gtk_combo_set_popdown_strings(GTK_COMBO(info->entry), | |
| 883 | generate_invite_user_names(gc)); | |
| 884 | ||
| 885 | ||
| 886 | /* Now the label for "Message" */ | |
| 887 | label = gtk_label_new(NULL); | |
| 888 | gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:")); | |
| 889 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 890 | gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); | |
| 891 | ||
| 892 | ||
| 893 | /* And finally, the Message entry field. */ | |
| 894 | info->message = gtk_entry_new(); | |
| 895 | gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE); | |
| 896 | ||
| 897 | gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2); | |
| 898 | gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message); | |
| 899 | ||
| 900 | /* Connect the signals. */ | |
| 901 | g_signal_connect(G_OBJECT(invite_dialog), "response", | |
| 902 | G_CALLBACK(do_invite), info); | |
|
9909
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
903 | /* Setup drag-and-drop */ |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
904 | gtk_drag_dest_set(info->window, |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
905 | GTK_DEST_DEFAULT_MOTION | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
906 | GTK_DEST_DEFAULT_DROP, |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
907 | dnd_targets, |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
908 | sizeof(dnd_targets) / sizeof(GtkTargetEntry), |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
909 | GDK_ACTION_COPY); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
910 | gtk_drag_dest_set(info->entry, |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
911 | GTK_DEST_DEFAULT_MOTION | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
912 | GTK_DEST_DEFAULT_DROP, |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
913 | dnd_targets, |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
914 | sizeof(dnd_targets) / sizeof(GtkTargetEntry), |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
915 | GDK_ACTION_COPY); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
916 | |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
917 | g_signal_connect(G_OBJECT(info->window), "drag_data_received", |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
918 | G_CALLBACK(invite_dnd_recv), info); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
919 | g_signal_connect(G_OBJECT(info->entry), "drag_data_received", |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
920 | G_CALLBACK(invite_dnd_recv), info); |
|
b13c36f7d52b
[gaim-migrate @ 10801]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9887
diff
changeset
|
921 | |
| 4359 | 922 | } |
| 923 | ||
| 924 | gtk_widget_show_all(invite_dialog); | |
| 925 | ||
| 926 | if (info != NULL) | |
| 927 | gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry); | |
| 928 | } | |
| 929 | ||
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
930 | static void |
| 7748 | 931 | menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget) |
| 932 | { | |
|
9714
589046af53cb
[gaim-migrate @ 10575]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
933 | gaim_gtkdialogs_im(); |
| 7748 | 934 | } |
| 935 | ||
| 936 | static void | |
|
9504
42685167dd38
[gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents:
9498
diff
changeset
|
937 | savelog_writefile_cb(void *user_data, const char *filename) |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
938 | { |
|
9504
42685167dd38
[gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents:
9498
diff
changeset
|
939 | GaimConversation *conv = (GaimConversation *)user_data; |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
940 | FILE *fp; |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
941 | const char *name; |
|
10849
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
942 | gchar *text; |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
943 | |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10572
diff
changeset
|
944 | if ((fp = g_fopen(filename, "w+")) == NULL) { |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
945 | gaim_notify_error(GAIM_GTK_CONVERSATION(conv), NULL, _("Unable to open file."), NULL); |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
946 | return; |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
947 | } |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
948 | |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
949 | name = gaim_conversation_get_name(conv); |
|
10849
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
950 | fprintf(fp, "<html>\n<head><title>%s</title></head>\n<body>", name); |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
951 | fprintf(fp, _("<h1>Conversation with %s</h1>\n"), name); |
|
10849
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
952 | |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
953 | text = gtk_imhtml_get_markup( |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
954 | GTK_IMHTML(GAIM_GTK_CONVERSATION(conv)->imhtml)); |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
955 | fprintf(fp, "%s", text); |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
956 | g_free(text); |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
957 | |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
958 | fprintf(fp, "\n</body>\n</html>\n"); |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
959 | fclose(fp); |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
960 | } |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
961 | |
|
10849
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
962 | /* |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
963 | * It would be kinda cool if this gave the option of saving a |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
964 | * plaintext v. HTML file. |
|
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
965 | */ |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
966 | static void |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
967 | menu_save_as_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
968 | { |
| 11581 | 969 | GaimGtkWindow *win = data; |
| 970 | GaimConversation *conv = gaim_gtk_conv_window_get_active_conversation(win); | |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
971 | gchar *buf; |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
972 | |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
973 | buf = g_strdup_printf("%s.html", gaim_normalize(conv->account, conv->name)); |
|
9504
42685167dd38
[gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents:
9498
diff
changeset
|
974 | |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
975 | gaim_request_file(GAIM_GTK_CONVERSATION(conv), _("Save Conversation"), |
|
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
976 | gaim_escape_filename(buf), |
|
10849
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
977 | TRUE, G_CALLBACK(savelog_writefile_cb), NULL, conv); |
|
9489
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
978 | |
|
3ee8fdcdbac9
[gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents:
9487
diff
changeset
|
979 | g_free(buf); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
980 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
981 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
982 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
983 | menu_view_log_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
984 | { |
| 11581 | 985 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
986 | GaimConversation *conv; |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9909
diff
changeset
|
987 | GaimLogType type; |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
988 | GaimGtkBuddyList *gtkblist; |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
989 | GdkCursor *cursor; |
|
10809
6353abfefea3
[gaim-migrate @ 12461]
Luke Schierer <lschiere@pidgin.im>
parents:
10807
diff
changeset
|
990 | const char *name; |
|
6353abfefea3
[gaim-migrate @ 12461]
Luke Schierer <lschiere@pidgin.im>
parents:
10807
diff
changeset
|
991 | GaimAccount *account; |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
992 | GSList *buddies; |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
993 | GSList *cur; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
994 | |
| 11581 | 995 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
996 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
997 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9909
diff
changeset
|
998 | type = GAIM_LOG_IM; |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
999 | else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9909
diff
changeset
|
1000 | type = GAIM_LOG_CHAT; |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9909
diff
changeset
|
1001 | else |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9909
diff
changeset
|
1002 | return; |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9909
diff
changeset
|
1003 | |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1004 | gtkblist = gaim_gtk_blist_get_default_gtk_blist(); |
|
13435
4c22eed6e0a6
[gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents:
13425
diff
changeset
|
1005 | |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1006 | cursor = gdk_cursor_new(GDK_WATCH); |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1007 | gdk_window_set_cursor(gtkblist->window->window, cursor); |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1008 | gdk_window_set_cursor(win->window->window, cursor); |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1009 | gdk_cursor_unref(cursor); |
|
13435
4c22eed6e0a6
[gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents:
13425
diff
changeset
|
1010 | #if GTK_CHECK_VERSION(2,4,0) |
|
4c22eed6e0a6
[gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents:
13425
diff
changeset
|
1011 | gdk_display_flush(gdk_drawable_get_display(GDK_DRAWABLE(widget->window))); |
|
4c22eed6e0a6
[gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents:
13425
diff
changeset
|
1012 | #else |
|
4c22eed6e0a6
[gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents:
13425
diff
changeset
|
1013 | gdk_flush(); |
|
4c22eed6e0a6
[gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents:
13425
diff
changeset
|
1014 | #endif |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1015 | |
|
10809
6353abfefea3
[gaim-migrate @ 12461]
Luke Schierer <lschiere@pidgin.im>
parents:
10807
diff
changeset
|
1016 | name = gaim_conversation_get_name(conv); |
|
6353abfefea3
[gaim-migrate @ 12461]
Luke Schierer <lschiere@pidgin.im>
parents:
10807
diff
changeset
|
1017 | account = gaim_conversation_get_account(conv); |
|
6353abfefea3
[gaim-migrate @ 12461]
Luke Schierer <lschiere@pidgin.im>
parents:
10807
diff
changeset
|
1018 | |
|
10845
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1019 | buddies = gaim_find_buddies(account, name); |
|
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1020 | for (cur = buddies; cur != NULL; cur = cur->next) |
|
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1021 | { |
|
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1022 | GaimBlistNode *node = cur->data; |
| 10846 | 1023 | if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL))) |
|
10845
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1024 | { |
|
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1025 | gaim_gtk_log_show_contact((GaimContact *)node->parent); |
|
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1026 | g_slist_free(buddies); |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1027 | gdk_window_set_cursor(gtkblist->window->window, NULL); |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1028 | gdk_window_set_cursor(win->window->window, NULL); |
|
10845
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1029 | return; |
|
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1030 | } |
|
10809
6353abfefea3
[gaim-migrate @ 12461]
Luke Schierer <lschiere@pidgin.im>
parents:
10807
diff
changeset
|
1031 | } |
|
10845
72c2fdf8e16c
[gaim-migrate @ 12517]
Richard Laager <rlaager@pidgin.im>
parents:
10843
diff
changeset
|
1032 | g_slist_free(buddies); |
|
10809
6353abfefea3
[gaim-migrate @ 12461]
Luke Schierer <lschiere@pidgin.im>
parents:
10807
diff
changeset
|
1033 | |
|
6353abfefea3
[gaim-migrate @ 12461]
Luke Schierer <lschiere@pidgin.im>
parents:
10807
diff
changeset
|
1034 | gaim_gtk_log_show(type, name, account); |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1035 | |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1036 | gdk_window_set_cursor(gtkblist->window->window, NULL); |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1037 | gdk_window_set_cursor(win->window->window, NULL); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1038 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1039 | |
| 8974 | 1040 | static void |
| 1041 | menu_clear_cb(gpointer data, guint action, GtkWidget *widget) | |
| 1042 | { | |
| 11581 | 1043 | GaimGtkWindow *win = data; |
| 8974 | 1044 | GaimConversation *conv; |
| 1045 | GaimGtkConversation *gtkconv; | |
| 1046 | ||
| 11581 | 1047 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
| 8974 | 1048 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 1049 | ||
| 1050 | gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); | |
| 1051 | } | |
| 1052 | ||
| 7295 | 1053 | struct _search { |
| 1054 | GaimGtkConversation *gtkconv; | |
| 1055 | GtkWidget *entry; | |
| 1056 | }; | |
| 1057 | ||
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1058 | static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s) |
| 7295 | 1059 | { |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1060 | switch (resp) { |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1061 | case GTK_RESPONSE_OK: |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1062 | gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1063 | gtk_entry_get_text(GTK_ENTRY(s->entry))); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1064 | break; |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1065 | |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1066 | case GTK_RESPONSE_DELETE_EVENT: |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1067 | case GTK_RESPONSE_CLOSE: |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1068 | gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1069 | gtk_widget_destroy(s->gtkconv->dialogs.search); |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1070 | s->gtkconv->dialogs.search = NULL; |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1071 | g_free(s); |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1072 | break; |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1073 | } |
| 7295 | 1074 | } |
| 1075 | ||
| 1076 | static void | |
|
7751
e0dc18b50181
[gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents:
7748
diff
changeset
|
1077 | menu_find_cb(gpointer data, guint action, GtkWidget *widget) |
| 7295 | 1078 | { |
| 11581 | 1079 | GaimGtkWindow *gtkwin = data; |
| 1080 | GaimConversation *conv = gaim_gtk_conv_window_get_active_conversation(gtkwin); | |
| 7295 | 1081 | GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1082 | GtkWidget *hbox; |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1083 | GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1084 | GTK_ICON_SIZE_DIALOG); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1085 | GtkWidget *label; |
| 7295 | 1086 | struct _search *s; |
| 1087 | ||
| 7798 | 1088 | if (gtkconv->dialogs.search) { |
| 1089 | gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search)); | |
| 7295 | 1090 | return; |
| 7798 | 1091 | } |
|
7300
1bf25732bcbe
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
1092 | |
| 7295 | 1093 | s = g_malloc(sizeof(struct _search)); |
| 1094 | s->gtkconv = gtkconv; | |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1095 | |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1096 | gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"), |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1097 | GTK_WINDOW(gtkwin->window), GTK_DIALOG_DESTROY_WITH_PARENT, |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1098 | GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1099 | GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1100 | gtk_dialog_set_default_response(GTK_DIALOG(gtkconv->dialogs.search), |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1101 | GTK_RESPONSE_OK); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1102 | g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1103 | G_CALLBACK(do_search_cb), s); |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1104 | |
| 11243 | 1105 | gtk_container_set_border_width(GTK_CONTAINER(gtkconv->dialogs.search), GAIM_HIG_BOX_SPACE); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1106 | gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1107 | gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE); |
| 11243 | 1108 | gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), GAIM_HIG_BORDER); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1109 | gtk_container_set_border_width( |
| 11243 | 1110 | GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), GAIM_HIG_BOX_SPACE); |
| 1111 | ||
| 1112 | hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); | |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1113 | gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1114 | hbox); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1115 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1116 | |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1117 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1118 | gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search), |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1119 | GTK_RESPONSE_OK, FALSE); |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1120 | |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1121 | label = gtk_label_new(NULL); |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1122 | gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1123 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1124 | |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1125 | s->entry = gtk_entry_new(); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1126 | gtk_entry_set_activates_default(GTK_ENTRY(s->entry), TRUE); |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1127 | gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(s->entry)); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1128 | g_signal_connect(G_OBJECT(s->entry), "changed", |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1129 | G_CALLBACK(gaim_gtk_set_sensitive_if_input), |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1130 | gtkconv->dialogs.search); |
|
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1131 | gtk_box_pack_start(GTK_BOX(hbox), s->entry, FALSE, FALSE, 0); |
|
7300
1bf25732bcbe
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
1132 | |
| 7295 | 1133 | gtk_widget_show_all(gtkconv->dialogs.search); |
|
7929
bccfd0da825f
[gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents:
7928
diff
changeset
|
1134 | gtk_widget_grab_focus(s->entry); |
| 7295 | 1135 | } |
| 1136 | ||
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1137 | static void |
|
9468
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1138 | menu_send_file_cb(gpointer data, guint action, GtkWidget *widget) |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1139 | { |
| 11581 | 1140 | GaimGtkWindow *win = data; |
| 1141 | GaimConversation *conv = gaim_gtk_conv_window_get_active_conversation(win); | |
|
9468
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1142 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
1143 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { |
|
9468
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1144 | serv_send_file(gaim_conversation_get_gc(conv), gaim_conversation_get_name(conv), NULL); |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1145 | } |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1146 | |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1147 | } |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1148 | |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1149 | static void |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1150 | menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1151 | { |
| 11581 | 1152 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1153 | GaimConversation *conv; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1154 | |
| 11581 | 1155 | conv = gaim_gtk_conv_window_get_active_gtkconv(win)->active_conv; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1156 | |
| 12136 | 1157 | gaim_gtk_pounce_editor_show(gaim_conversation_get_account(conv), |
| 1158 | gaim_conversation_get_name(conv), NULL); | |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1159 | } |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1160 | |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1161 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1162 | menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1163 | { |
| 11581 | 1164 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1165 | GaimGtkConversation *gtkconv; |
|
8756
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1166 | GtkIMHtmlToolbar *toolbar; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1167 | |
| 11581 | 1168 | gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win); |
|
8756
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1169 | toolbar = GTK_IMHTMLTOOLBAR(gtkconv->toolbar); |
|
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1170 | |
|
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1171 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link), |
|
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1172 | !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->link))); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1173 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1174 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1175 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1176 | menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1177 | { |
| 11581 | 1178 | GaimGtkWindow *win = data; |
|
8756
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1179 | GaimConversation *conv; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1180 | GaimGtkConversation *gtkconv; |
|
8756
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1181 | GtkIMHtmlToolbar *toolbar; |
|
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1182 | |
| 11581 | 1183 | gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win); |
| 1184 | conv = gtkconv->active_conv; | |
|
8756
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1185 | toolbar = GTK_IMHTMLTOOLBAR(gtkconv->toolbar); |
|
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1186 | |
|
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1187 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), |
|
1a2305f70c1b
[gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents:
8755
diff
changeset
|
1188 | !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->image))); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1189 | } |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1190 | |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1191 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1192 | menu_alias_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1193 | { |
| 11581 | 1194 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1195 | GaimConversation *conv; |
|
7879
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1196 | GaimAccount *account; |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1197 | const char *name; |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1198 | |
| 11581 | 1199 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
7879
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1200 | account = gaim_conversation_get_account(conv); |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1201 | name = gaim_conversation_get_name(conv); |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1202 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
1203 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { |
|
7879
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1204 | GaimBuddy *b; |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1205 | |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1206 | b = gaim_find_buddy(account, name); |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1207 | if (b != NULL) |
|
9730
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9728
diff
changeset
|
1208 | gaim_gtkdialogs_alias_buddy(b); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
1209 | } else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) { |
|
7879
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1210 | GaimChat *c; |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1211 | |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1212 | c = gaim_blist_find_chat(account, name); |
|
8e5689b82138
[gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents:
7859
diff
changeset
|
1213 | if (c != NULL) |
|
9730
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9728
diff
changeset
|
1214 | gaim_gtkdialogs_alias_chat(c); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1215 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1216 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1217 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1218 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1219 | menu_get_info_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1220 | { |
| 11581 | 1221 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1222 | GaimConversation *conv; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1223 | |
| 11581 | 1224 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1225 | |
| 10810 | 1226 | info_cb(NULL, GAIM_GTK_CONVERSATION(conv)); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1227 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1228 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1229 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1230 | menu_invite_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1231 | { |
| 11581 | 1232 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1233 | GaimConversation *conv; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1234 | |
| 11581 | 1235 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1236 | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1237 | invite_cb(NULL, GAIM_GTK_CONVERSATION(conv)); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1238 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1239 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1240 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1241 | menu_block_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1242 | { |
| 11581 | 1243 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1244 | GaimConversation *conv; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1245 | |
| 11581 | 1246 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1247 | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1248 | block_cb(NULL, GAIM_GTK_CONVERSATION(conv)); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1249 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1250 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1251 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1252 | menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1253 | { |
| 11581 | 1254 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1255 | GaimConversation *conv; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1256 | |
| 11581 | 1257 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1258 | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1259 | add_remove_cb(NULL, GAIM_GTK_CONVERSATION(conv)); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1260 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1261 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1262 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1263 | menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1264 | { |
| 11581 | 1265 | GaimGtkWindow *win = data; |
| 1266 | ||
| 1267 | close_conv_cb(NULL, GAIM_GTK_CONVERSATION(gaim_gtk_conv_window_get_active_conversation(win))); | |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1268 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1269 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1270 | static void |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1271 | menu_logging_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1272 | { |
| 11581 | 1273 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1274 | GaimConversation *conv; |
|
11805
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1275 | gboolean logging; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1276 | |
| 11581 | 1277 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1278 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1279 | if (conv == NULL) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1280 | return; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1281 | |
|
11805
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1282 | logging = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1283 | |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1284 | if (logging == gaim_conversation_is_logging(conv)) |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1285 | return; |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1286 | |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1287 | if (logging) |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1288 | { |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1289 | /* Enable logging first so the message below can be logged. */ |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1290 | gaim_conversation_set_logging(conv, TRUE); |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1291 | |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1292 | gaim_conversation_write(conv, NULL, |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1293 | _("Logging started. Future messages in this conversation will be logged."), |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1294 | conv->logs ? (GAIM_MESSAGE_SYSTEM) : |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1295 | (GAIM_MESSAGE_SYSTEM | GAIM_MESSAGE_NO_LOG), |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1296 | time(NULL)); |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1297 | } |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1298 | else |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1299 | { |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1300 | gaim_conversation_write(conv, NULL, |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1301 | _("Logging stopped. Future messages in this conversation will not be logged."), |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1302 | conv->logs ? (GAIM_MESSAGE_SYSTEM) : |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1303 | (GAIM_MESSAGE_SYSTEM | GAIM_MESSAGE_NO_LOG), |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1304 | time(NULL)); |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1305 | |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1306 | /* Disable the logging second, so that the above message can be logged. */ |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1307 | gaim_conversation_set_logging(conv, FALSE); |
|
eb030ba45cfd
[gaim-migrate @ 14096]
Richard Laager <rlaager@pidgin.im>
parents:
11799
diff
changeset
|
1308 | } |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1309 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1310 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1311 | static void |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
1312 | menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget) |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
1313 | { |
| 10377 | 1314 | gaim_prefs_set_bool("/gaim/gtk/conversations/show_formatting_toolbar", |
| 11581 | 1315 | gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
1316 | } |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
1317 | |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
1318 | static void |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1319 | menu_sounds_cb(gpointer data, guint action, GtkWidget *widget) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1320 | { |
| 11581 | 1321 | GaimGtkWindow *win = data; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1322 | GaimConversation *conv; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1323 | GaimGtkConversation *gtkconv; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1324 | |
| 11581 | 1325 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1326 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1327 | if (!conv) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1328 | return; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1329 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1330 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1331 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1332 | gtkconv->make_sound = |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1333 | gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1334 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1335 | |
| 7961 | 1336 | static void |
|
9188
a399de5ce807
[gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents:
9175
diff
changeset
|
1337 | menu_timestamps_cb(gpointer data, guint action, GtkWidget *widget) |
|
a399de5ce807
[gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents:
9175
diff
changeset
|
1338 | { |
|
12188
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
1339 | gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps", |
|
9188
a399de5ce807
[gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents:
9175
diff
changeset
|
1340 | gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); |
|
a399de5ce807
[gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents:
9175
diff
changeset
|
1341 | } |
|
a399de5ce807
[gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents:
9175
diff
changeset
|
1342 | |
|
a399de5ce807
[gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents:
9175
diff
changeset
|
1343 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1344 | chat_do_im(GaimGtkConversation *gtkconv, const char *who) |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1345 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1346 | GaimConversation *conv = gtkconv->active_conv; |
| 10431 | 1347 | GaimAccount *account; |
| 1348 | GaimConnection *gc; | |
| 7961 | 1349 | GaimPluginProtocolInfo *prpl_info = NULL; |
| 1350 | char *real_who; | |
| 1351 | ||
| 1352 | account = gaim_conversation_get_account(conv); | |
| 10431 | 1353 | g_return_if_fail(account != NULL); |
| 1354 | ||
| 1355 | gc = gaim_account_get_connection(account); | |
| 1356 | g_return_if_fail(gc != NULL); | |
| 1357 | ||
| 1358 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 1359 | ||
| 1360 | if (prpl_info && prpl_info->get_cb_real_name) | |
| 1361 | real_who = prpl_info->get_cb_real_name(gc, | |
| 7961 | 1362 | gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
| 1363 | else | |
| 1364 | real_who = g_strdup(who); | |
| 1365 | ||
| 1366 | if(!real_who) | |
| 1367 | return; | |
| 1368 | ||
| 10431 | 1369 | gaim_gtkdialogs_im_with_user(account, real_who); |
| 7961 | 1370 | |
| 1371 | g_free(real_who); | |
| 1372 | } | |
| 1373 | ||
| 1374 | static void | |
| 10810 | 1375 | chat_im_button_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
| 7961 | 1376 | { |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1377 | GaimGtkChatPane *gtkchat; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1378 | GtkTreeIter iter; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1379 | GtkTreeModel *model; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1380 | GtkTreeSelection *sel; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
1381 | char *name; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1382 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1383 | gtkchat = gtkconv->u.chat; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1384 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1385 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1386 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1387 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1388 | if (gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
1389 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1390 | else |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1391 | return; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1392 | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1393 | chat_do_im(gtkconv, name); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
1394 | g_free(name); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1395 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1396 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1397 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1398 | ignore_cb(GtkWidget *w, GaimGtkConversation *gtkconv) |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1399 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1400 | GaimConversation *conv = gtkconv->active_conv; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1401 | GaimGtkChatPane *gtkchat; |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1402 | GaimConvChat *chat; |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
1403 | GaimConvChatBuddyFlags flags; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1404 | GtkTreeIter iter; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1405 | GtkTreeModel *model; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1406 | GtkTreeSelection *sel; |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1407 | char *name; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1408 | char *alias; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1409 | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1410 | chat = GAIM_CONV_CHAT(conv); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1411 | gtkchat = gtkconv->u.chat; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1412 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1413 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1414 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1415 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1416 | if (gtk_tree_selection_get_selected(sel, NULL, &iter)) { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1417 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1418 | CHAT_USERS_NAME_COLUMN, &name, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1419 | CHAT_USERS_ALIAS_COLUMN, &alias, |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
1420 | CHAT_USERS_FLAGS_COLUMN, &flags, |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1421 | -1); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1422 | gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1423 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1424 | else |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1425 | return; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1426 | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1427 | if (gaim_conv_chat_is_user_ignored(chat, name)) |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1428 | gaim_conv_chat_unignore(chat, name); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1429 | else |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1430 | gaim_conv_chat_ignore(chat, name); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1431 | |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
1432 | add_chat_buddy_common(conv, name, flags, alias, NULL); |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1433 | g_free(name); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1434 | g_free(alias); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1435 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1436 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1437 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1438 | menu_chat_im_cb(GtkWidget *w, GaimGtkConversation *gtkconv) |
| 7398 | 1439 | { |
| 1440 | const char *who = g_object_get_data(G_OBJECT(w), "user_data"); | |
| 1441 | ||
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1442 | chat_do_im(gtkconv, who); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1443 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1444 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1445 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1446 | menu_chat_send_file_cb(GtkWidget *w, GaimGtkConversation *gtkconv) |
|
9468
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1447 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1448 | GaimConversation *conv = gtkconv->active_conv; |
|
9468
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1449 | const char *who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1450 | GaimConnection *gc = gaim_conversation_get_gc(conv); |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1451 | |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1452 | serv_send_file(gc, who, NULL); |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1453 | } |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1454 | |
|
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1455 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1456 | menu_chat_info_cb(GtkWidget *w, GaimGtkConversation *gtkconv) |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1457 | { |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1458 | char *who; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1459 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1460 | who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1461 | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1462 | chat_do_info(gtkconv, who); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1463 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1464 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1465 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1466 | menu_chat_get_away_cb(GtkWidget *w, GaimGtkConversation *gtkconv) |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1467 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1468 | GaimConversation *conv = gtkconv->active_conv; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1469 | GaimPluginProtocolInfo *prpl_info = NULL; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1470 | GaimConnection *gc; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1471 | char *who; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1472 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1473 | gc = gaim_conversation_get_gc(conv); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1474 | who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1475 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1476 | if (gc != NULL) { |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1477 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1478 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1479 | /* |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1480 | * May want to expand this to work similarly to menu_info_cb? |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1481 | */ |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1482 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1483 | if (prpl_info->get_cb_away != NULL) |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1484 | { |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1485 | prpl_info->get_cb_away(gc, |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1486 | gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1487 | } |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1488 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1489 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1490 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1491 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1492 | menu_chat_add_remove_cb(GtkWidget *w, GaimGtkConversation *gtkconv) |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1493 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1494 | GaimConversation *conv = gtkconv->active_conv; |
|
7060
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1495 | GaimAccount *account; |
| 6695 | 1496 | GaimBuddy *b; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1497 | char *name; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1498 | |
|
7060
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1499 | account = gaim_conversation_get_account(conv); |
|
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1500 | name = g_object_get_data(G_OBJECT(w), "user_data"); |
|
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1501 | b = gaim_find_buddy(account, name); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1502 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1503 | if (b != NULL) |
|
9730
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9728
diff
changeset
|
1504 | gaim_gtkdialogs_remove_buddy(b); |
|
7060
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1505 | else if (account != NULL && gaim_account_is_connected(account)) |
|
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1506 | gaim_blist_request_add_buddy(account, name, NULL, NULL); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1507 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1508 | gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1509 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1510 | |
| 12939 | 1511 | static GtkTextMark * |
| 1512 | get_mark_for_user(GaimGtkConversation *gtkconv, const char *who) | |
| 1513 | { | |
| 1514 | GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml)); | |
| 1515 | char *tmp = g_strconcat("user:", who, NULL); | |
| 1516 | GtkTextMark *mark = gtk_text_buffer_get_mark(buf, tmp); | |
| 1517 | ||
| 1518 | g_free(tmp); | |
| 1519 | return mark; | |
| 1520 | } | |
| 1521 | ||
| 1522 | static void | |
| 1523 | menu_last_said_cb(GtkWidget *w, GaimGtkConversation *gtkconv) | |
| 1524 | { | |
| 1525 | GtkTextMark *mark; | |
| 1526 | const char *who; | |
| 1527 | ||
| 1528 | who = g_object_get_data(G_OBJECT(w), "user_data"); | |
| 1529 | mark = get_mark_for_user(gtkconv, who); | |
| 1530 | ||
| 1531 | if (mark != NULL) | |
| 1532 | gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(gtkconv->imhtml), mark, 0.1, FALSE, 0, 0); | |
| 1533 | else | |
| 1534 | g_return_if_reached(); | |
| 1535 | } | |
| 1536 | ||
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1537 | static GtkWidget * |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1538 | create_chat_menu(GaimConversation *conv, const char *who, GaimConnection *gc) |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1539 | { |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1540 | static GtkWidget *menu = NULL; |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1541 | GaimPluginProtocolInfo *prpl_info = NULL; |
|
11500
e0965fb5bcd8
[gaim-migrate @ 13745]
Richard Laager <rlaager@pidgin.im>
parents:
11486
diff
changeset
|
1542 | GaimConvChat *chat = GAIM_CONV_CHAT(conv); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1543 | gboolean is_me = FALSE; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1544 | GtkWidget *button; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1545 | |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1546 | if (gc != NULL) |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1547 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1548 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1549 | /* |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1550 | * If a menu already exists, destroy it before creating a new one, |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1551 | * thus freeing-up the memory it occupied. |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1552 | */ |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1553 | if (menu) |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1554 | gtk_widget_destroy(menu); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1555 | |
|
11500
e0965fb5bcd8
[gaim-migrate @ 13745]
Richard Laager <rlaager@pidgin.im>
parents:
11486
diff
changeset
|
1556 | if (!strcmp(chat->nick, gaim_normalize(conv->account, who))) |
|
e0965fb5bcd8
[gaim-migrate @ 13745]
Richard Laager <rlaager@pidgin.im>
parents:
11486
diff
changeset
|
1557 | is_me = TRUE; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1558 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1559 | menu = gtk_menu_new(); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1560 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1561 | if (!is_me) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1562 | button = gaim_new_item_from_stock(menu, _("IM"), GAIM_STOCK_IM, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1563 | G_CALLBACK(menu_chat_im_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1564 | |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1565 | if (gc == NULL) |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1566 | gtk_widget_set_sensitive(button, FALSE); |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1567 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1568 | g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1569 | |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1570 | |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1571 | if (prpl_info && prpl_info->send_file) |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1572 | { |
| 11508 | 1573 | button = gaim_new_item_from_stock(menu, _("Send File"), |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1574 | GAIM_STOCK_FILE_TRANSFER, G_CALLBACK(menu_chat_send_file_cb), |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1575 | GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1576 | |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1577 | if (gc == NULL || prpl_info == NULL || |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1578 | !(!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who))) |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1579 | { |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1580 | gtk_widget_set_sensitive(button, FALSE); |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1581 | } |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1582 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1583 | g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1584 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1585 | |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1586 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1587 | if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1588 | button = gaim_new_item_from_stock(menu, _("Un-Ignore"), GAIM_STOCK_IGNORE, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1589 | G_CALLBACK(ignore_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1590 | else |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1591 | button = gaim_new_item_from_stock(menu, _("Ignore"), GAIM_STOCK_IGNORE, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
1592 | G_CALLBACK(ignore_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1593 | |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1594 | if (gc == NULL) |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1595 | gtk_widget_set_sensitive(button, FALSE); |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1596 | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1597 | g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); |
|
9468
f2108802d596
[gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents:
9459
diff
changeset
|
1598 | } |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
1599 | |
| 13446 | 1600 | if (prpl_info && (prpl_info->get_info || prpl_info->get_cb_info)) { |
| 10221 | 1601 | button = gaim_new_item_from_stock(menu, _("Info"), GAIM_STOCK_INFO, |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1602 | G_CALLBACK(menu_chat_info_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1603 | |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1604 | if (gc == NULL) |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1605 | gtk_widget_set_sensitive(button, FALSE); |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1606 | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1607 | g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1608 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1609 | |
| 13446 | 1610 | if (prpl_info && prpl_info->get_cb_away) { |
| 10221 | 1611 | button = gaim_new_item_from_stock(menu, _("Get Away Message"), GAIM_STOCK_AWAY, |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1612 | G_CALLBACK(menu_chat_get_away_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1613 | |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1614 | if (gc == NULL) |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1615 | gtk_widget_set_sensitive(button, FALSE); |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1616 | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1617 | g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1618 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1619 | |
|
13458
bccf5b3e50c4
[gaim-migrate @ 15832]
Daniel Atallah <datallah@pidgin.im>
parents:
13446
diff
changeset
|
1620 | if (!is_me && prpl_info && !(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1621 | if (gaim_find_buddy(conv->account, who)) |
| 10221 | 1622 | button = gaim_new_item_from_stock(menu, _("Remove"), GTK_STOCK_REMOVE, |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1623 | G_CALLBACK(menu_chat_add_remove_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1624 | else |
| 10221 | 1625 | button = gaim_new_item_from_stock(menu, _("Add"), GTK_STOCK_ADD, |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1626 | G_CALLBACK(menu_chat_add_remove_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1627 | |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1628 | if (gc == NULL) |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1629 | gtk_widget_set_sensitive(button, FALSE); |
|
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1630 | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1631 | g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1632 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1633 | |
| 12939 | 1634 | button = gaim_new_item_from_stock(menu, _("Last said"), GTK_STOCK_INDEX, |
| 1635 | G_CALLBACK(menu_last_said_cb), GAIM_GTK_CONVERSATION(conv), 0, 0, NULL); | |
| 1636 | g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); | |
| 1637 | if (!get_mark_for_user(GAIM_GTK_CONVERSATION(conv), who)) | |
| 1638 | gtk_widget_set_sensitive(button, FALSE); | |
| 1639 | ||
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1640 | return menu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1641 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1642 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1643 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1644 | static gint |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1645 | gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1646 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1647 | GaimConversation *conv = gtkconv->active_conv; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1648 | GaimGtkChatPane *gtkchat; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1649 | GaimConnection *gc; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1650 | GaimAccount *account; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1651 | GtkTreeSelection *sel; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1652 | GtkTreeIter iter; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1653 | GtkTreeModel *model; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1654 | GtkWidget *menu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1655 | gchar *who; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1656 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1657 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1658 | gtkchat = gtkconv->u.chat; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1659 | account = gaim_conversation_get_account(conv); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1660 | gc = account->gc; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1661 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1662 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1663 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1664 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1665 | if(!gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1666 | return FALSE; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1667 | |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
1668 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1); |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1669 | menu = create_chat_menu (conv, who, gc); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1670 | gtk_menu_popup(GTK_MENU(menu), NULL, NULL, |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1671 | gaim_gtk_treeview_popup_menu_position_func, widget, |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1672 | 0, GDK_CURRENT_TIME); |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1673 | g_free(who); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1674 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1675 | return TRUE; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1676 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1677 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1678 | |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1679 | static gint |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1680 | right_click_chat_cb(GtkWidget *widget, GdkEventButton *event, |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1681 | GaimGtkConversation *gtkconv) |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1682 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1683 | GaimConversation *conv = gtkconv->active_conv; |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1684 | GaimGtkChatPane *gtkchat; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1685 | GaimConnection *gc; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1686 | GaimAccount *account; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1687 | GtkTreePath *path; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1688 | GtkTreeIter iter; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1689 | GtkTreeModel *model; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1690 | GtkTreeViewColumn *column; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1691 | gchar *who; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1692 | int x, y; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1693 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1694 | gtkchat = gtkconv->u.chat; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1695 | account = gaim_conversation_get_account(conv); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1696 | gc = account->gc; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1697 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1698 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1699 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1700 | gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(gtkchat->list), |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1701 | event->x, event->y, &path, &column, &x, &y); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1702 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1703 | if (path == NULL) |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1704 | return FALSE; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1705 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1706 | gtk_tree_selection_select_path(GTK_TREE_SELECTION( |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1707 | gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1708 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1709 | gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
1710 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1711 | |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1712 | if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
1713 | chat_do_im(gtkconv, who); |
| 12939 | 1714 | } else if (event->button == 2 && event->type == GDK_BUTTON_PRESS) { |
| 1715 | /* Move to user's anchor */ | |
| 1716 | GtkTextMark *mark = get_mark_for_user(gtkconv, who); | |
| 1717 | ||
| 1718 | if(mark != NULL) | |
| 1719 | gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(gtkconv->imhtml), mark, 0.1, FALSE, 0, 0); | |
| 7398 | 1720 | } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
1721 | GtkWidget *menu = create_chat_menu (conv, who, gc); |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1722 | gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1723 | event->button, event->time); |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1724 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1725 | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1726 | g_free(who); |
|
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1727 | gtk_tree_path_free(path); |
|
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
1728 | |
|
5908
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1729 | return TRUE; |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1730 | } |
|
47ad3b3798ac
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1731 | |
|
8133
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1732 | static void |
|
11467
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1733 | move_to_next_unread_tab(GaimGtkConversation *gtkconv, gboolean forward) |
|
8133
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1734 | { |
| 10827 | 1735 | GaimGtkConversation *next_gtkconv = NULL; |
| 11581 | 1736 | GaimGtkWindow *win; |
|
11467
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1737 | int index, i, total, found = 0; |
|
8133
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1738 | |
| 11581 | 1739 | win = gtkconv->win; |
| 1740 | index = gtk_notebook_page_num(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont); | |
| 1741 | total = gaim_gtk_conv_window_get_gtkconv_count(win); | |
|
11467
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1742 | |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1743 | /* First check the tabs after (forward) or before (!forward) this position. */ |
|
11620
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
1744 | for (i = forward ? index + 1 : index - 1; |
| 11581 | 1745 | !found && (next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, i)); |
|
11467
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1746 | forward ? i++ : i--) { |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1747 | if (i == -1) { |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1748 | break; |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1749 | } |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
1750 | |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
1751 | if (next_gtkconv->unseen_state > 0) |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
1752 | found = 1; |
|
8133
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1753 | } |
|
11252
bb11e4af115c
[gaim-migrate @ 13421]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11245
diff
changeset
|
1754 | |
|
10893
eb87c5657fd8
[gaim-migrate @ 12606]
Luke Schierer <lschiere@pidgin.im>
parents:
10892
diff
changeset
|
1755 | if (!found) { |
|
11467
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1756 | /* Now check from the beginning up to (forward) or end back to (!forward) this position. */ |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1757 | for (i = forward ? 0 : total - 1; |
|
11620
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
1758 | !found && (forward ? i < index : i >= 0) && |
|
42ad6e9af0c4
[gaim-migrate @ 13894]
Luke Schierer <lschiere@pidgin.im>
parents:
11619
diff
changeset
|
1759 | (next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, i)); |
|
11467
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1760 | forward ? i++ : i--) { |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
1761 | |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
1762 | if (next_gtkconv->unseen_state > 0) |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
1763 | found = 1; |
|
8133
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1764 | } |
| 10827 | 1765 | |
|
10893
eb87c5657fd8
[gaim-migrate @ 12606]
Luke Schierer <lschiere@pidgin.im>
parents:
10892
diff
changeset
|
1766 | if (!found) { |
|
11467
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1767 | /* Okay, just grab the next (forward) or previous (!forward) conversation tab. */ |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1768 | if (forward) { |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1769 | index++; |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1770 | } |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1771 | else { |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1772 | index = (index == 0) ? total - 1 : index - 1; |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1773 | } |
| 11581 | 1774 | if (!(next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, index))) |
| 1775 | next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, 0); | |
| 10827 | 1776 | } |
|
8133
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1777 | } |
|
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1778 | |
| 10827 | 1779 | if (next_gtkconv != NULL && next_gtkconv != gtkconv) |
| 11581 | 1780 | gaim_gtk_conv_window_switch_gtkconv(win, next_gtkconv); |
|
8133
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1781 | } |
|
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1782 | |
| 4359 | 1783 | static gboolean |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1784 | entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data) |
| 4359 | 1785 | { |
| 11581 | 1786 | GaimGtkWindow *win; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1787 | GaimConversation *conv; |
|
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1788 | GaimGtkConversation *gtkconv; |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1789 | int curconv; |
|
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1790 | |
| 10810 | 1791 | gtkconv = (GaimGtkConversation *)data; |
|
10849
476d68d7a435
[gaim-migrate @ 12521]
Richard Laager <rlaager@pidgin.im>
parents:
10846
diff
changeset
|
1792 | conv = gtkconv->active_conv; |
| 11581 | 1793 | win = gtkconv->win; |
| 1794 | curconv = gtk_notebook_get_current_page(GTK_NOTEBOOK(win->notebook)); | |
|
10839
bbb241810c03
[gaim-migrate @ 12511]
Richard Laager <rlaager@pidgin.im>
parents:
10827
diff
changeset
|
1795 | |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1796 | /* If CTRL was held down... */ |
|
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1797 | if (event->state & GDK_CONTROL_MASK) { |
| 4359 | 1798 | switch (event->keyval) { |
| 1799 | case GDK_Up: | |
| 1800 | if (!conv->send_history) | |
| 1801 | break; | |
| 1802 | ||
| 1803 | if (!conv->send_history->prev) { | |
| 1804 | GtkTextIter start, end; | |
| 1805 | ||
| 1806 | if (conv->send_history->data) | |
| 1807 | g_free(conv->send_history->data); | |
| 1808 | ||
| 1809 | gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
| 1810 | &start); | |
| 1811 | gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end); | |
| 1812 | ||
| 1813 | conv->send_history->data = | |
| 8506 | 1814 | gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 1815 | } |
| 8677 | 1816 | |
|
11276
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1817 | if (conv->send_history->next && conv->send_history->next->data) { |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1818 | GObject *object; |
| 8677 | 1819 | GtkTextIter iter; |
| 1820 | GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
| 4359 | 1821 | |
| 1822 | conv->send_history = conv->send_history->next; | |
|
11276
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1823 | |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1824 | /* Block the signal to prevent application of default formatting. */ |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1825 | object = g_object_ref(G_OBJECT(gtkconv->entry)); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1826 | g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1827 | NULL, gtkconv); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1828 | /* Clear the formatting. */ |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1829 | gtk_imhtml_clear_formatting(GTK_IMHTML(gtkconv->entry)); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1830 | /* Unblock the signal. */ |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1831 | g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1832 | NULL, gtkconv); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1833 | g_object_unref(object); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1834 | |
| 8061 | 1835 | gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1836 | gtk_imhtml_append_text_with_images( |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1837 | GTK_IMHTML(gtkconv->entry), conv->send_history->data, |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1838 | 0, NULL); |
| 8677 | 1839 | /* this is mainly just a hack so the formatting at the |
| 1840 | * cursor gets picked up. */ | |
| 1841 | gtk_text_buffer_get_end_iter(buffer, &iter); | |
| 1842 | gtk_text_buffer_move_mark_by_name(buffer, "insert", &iter); | |
| 4359 | 1843 | } |
| 1844 | ||
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1845 | return TRUE; |
| 4359 | 1846 | break; |
| 1847 | ||
| 1848 | case GDK_Down: | |
| 1849 | if (!conv->send_history) | |
| 1850 | break; | |
| 1851 | ||
|
11276
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1852 | if (conv->send_history->prev && conv->send_history->prev->data) { |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1853 | GObject *object; |
| 8677 | 1854 | GtkTextIter iter; |
| 1855 | GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1856 | |
| 4359 | 1857 | conv->send_history = conv->send_history->prev; |
|
11276
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1858 | |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1859 | /* Block the signal to prevent application of default formatting. */ |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1860 | object = g_object_ref(G_OBJECT(gtkconv->entry)); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1861 | g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1862 | NULL, gtkconv); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1863 | /* Clear the formatting. */ |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1864 | gtk_imhtml_clear_formatting(GTK_IMHTML(gtkconv->entry)); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1865 | /* Unblock the signal. */ |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1866 | g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1867 | NULL, gtkconv); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1868 | g_object_unref(object); |
|
aec923529d31
[gaim-migrate @ 13463]
Richard Laager <rlaager@pidgin.im>
parents:
11275
diff
changeset
|
1869 | |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1870 | gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1871 | gtk_imhtml_append_text_with_images( |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1872 | GTK_IMHTML(gtkconv->entry), conv->send_history->data, |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1873 | 0, NULL); |
| 8677 | 1874 | /* this is mainly just a hack so the formatting at the |
| 1875 | * cursor gets picked up. */ | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
1876 | if (*(char *)conv->send_history->data) { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
1877 | gtk_text_buffer_get_end_iter(buffer, &iter); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
1878 | gtk_text_buffer_move_mark_by_name(buffer, "insert", &iter); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
1879 | } else { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
1880 | /* Restore the default formatting */ |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
1881 | default_formatize(gtkconv); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
1882 | } |
| 4359 | 1883 | } |
| 1884 | ||
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1885 | return TRUE; |
| 4359 | 1886 | break; |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1887 | |
|
13355
93a15afbb8fb
[gaim-migrate @ 15726]
Richard Laager <rlaager@pidgin.im>
parents:
13353
diff
changeset
|
1888 | case GDK_Page_Down: |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1889 | case ']': |
| 11581 | 1890 | if (!gaim_gtk_conv_window_get_gtkconv_at_index(win, curconv + 1)) |
| 1891 | gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), 0); | |
| 10827 | 1892 | else |
| 11581 | 1893 | gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), curconv + 1); |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1894 | return TRUE; |
|
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1895 | break; |
|
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1896 | |
|
13355
93a15afbb8fb
[gaim-migrate @ 15726]
Richard Laager <rlaager@pidgin.im>
parents:
13353
diff
changeset
|
1897 | case GDK_Page_Up: |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
1898 | case '[': |
| 11581 | 1899 | if (!gaim_gtk_conv_window_get_gtkconv_at_index(win, curconv - 1)) |
| 1900 | gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), -1); | |
| 10827 | 1901 | else |
| 11581 | 1902 | gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), curconv - 1); |
|
8133
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1903 | return TRUE; |
|
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1904 | break; |
|
f59df33a6155
[gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents:
8123
diff
changeset
|
1905 | |
|
8108
7665e1fd72d1
[gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents:
8106
diff
changeset
|
1906 | case GDK_Tab: |
|
11467
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1907 | case GDK_ISO_Left_Tab: |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1908 | if (event->state & GDK_SHIFT_MASK) { |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1909 | move_to_next_unread_tab(gtkconv, FALSE); |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1910 | } else { |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1911 | move_to_next_unread_tab(gtkconv, TRUE); |
|
3a0492b873e7
[gaim-migrate @ 13707]
Luke Schierer <lschiere@pidgin.im>
parents:
11460
diff
changeset
|
1912 | } |
|
8108
7665e1fd72d1
[gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents:
8106
diff
changeset
|
1913 | |
|
7665e1fd72d1
[gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents:
8106
diff
changeset
|
1914 | return TRUE; |
|
7665e1fd72d1
[gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents:
8106
diff
changeset
|
1915 | break; |
|
7665e1fd72d1
[gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents:
8106
diff
changeset
|
1916 | |
|
11252
bb11e4af115c
[gaim-migrate @ 13421]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11245
diff
changeset
|
1917 | case GDK_comma: |
| 11581 | 1918 | gtk_notebook_reorder_child(GTK_NOTEBOOK(win->notebook), |
| 1919 | gtk_notebook_get_nth_page(GTK_NOTEBOOK(win->notebook), curconv), | |
|
11252
bb11e4af115c
[gaim-migrate @ 13421]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11245
diff
changeset
|
1920 | curconv - 1); |
|
bb11e4af115c
[gaim-migrate @ 13421]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11245
diff
changeset
|
1921 | break; |
|
bb11e4af115c
[gaim-migrate @ 13421]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11245
diff
changeset
|
1922 | |
|
bb11e4af115c
[gaim-migrate @ 13421]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11245
diff
changeset
|
1923 | case GDK_period: |
| 11581 | 1924 | gtk_notebook_reorder_child(GTK_NOTEBOOK(win->notebook), |
| 1925 | gtk_notebook_get_nth_page(GTK_NOTEBOOK(win->notebook), curconv), | |
|
11780
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
1926 | #if GTK_CHECK_VERSION(2,2,0) |
| 11581 | 1927 | (curconv + 1) % gtk_notebook_get_n_pages(GTK_NOTEBOOK(win->notebook))); |
|
11780
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
1928 | #else |
|
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
1929 | (curconv + 1) % g_list_length(GTK_NOTEBOOK(win->notebook)->children)); |
|
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
1930 | #endif |
|
11252
bb11e4af115c
[gaim-migrate @ 13421]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11245
diff
changeset
|
1931 | break; |
|
bb11e4af115c
[gaim-migrate @ 13421]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11245
diff
changeset
|
1932 | |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1933 | } /* End of switch */ |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1934 | } |
|
8758
940afe5423a9
[gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents:
8756
diff
changeset
|
1935 | |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1936 | /* If ALT (or whatever) was held down... */ |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1937 | else if (event->state & GDK_MOD1_MASK) |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1938 | { |
| 10864 | 1939 | if (event->keyval > '0' && event->keyval <= '9') |
| 1940 | { | |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
1941 | guint switchto = event->keyval - '1'; |
| 11581 | 1942 | if (switchto < gaim_gtk_conv_window_get_gtkconv_count(win)) |
| 1943 | gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), switchto); | |
| 4359 | 1944 | |
| 1945 | return TRUE; | |
| 1946 | } | |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1947 | } |
|
8758
940afe5423a9
[gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents:
8756
diff
changeset
|
1948 | |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1949 | /* If neither CTRL nor ALT were held down... */ |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1950 | else |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1951 | { |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1952 | switch (event->keyval) |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1953 | { |
| 10678 | 1954 | case GDK_Tab: |
| 9605 | 1955 | return tab_complete(conv); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1956 | break; |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1957 | |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1958 | case GDK_Page_Up: |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1959 | gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml)); |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
1960 | return TRUE; |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1961 | break; |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1962 | |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1963 | case GDK_Page_Down: |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1964 | gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml)); |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1965 | return TRUE; |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1966 | break; |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1967 | |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1968 | } |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1969 | } |
| 4359 | 1970 | return FALSE; |
| 1971 | } | |
| 1972 | ||
| 1973 | /* | |
| 1974 | * NOTE: | |
|
6725
21fa06d508c8
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1975 | * This guy just kills a single right click from being propagated any |
|
21fa06d508c8
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1976 | * further. I have no idea *why* we need this, but we do ... It |
| 4359 | 1977 | * prevents right clicks on the GtkTextView in a convo dialog from |
|
6725
21fa06d508c8
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1978 | * going all the way down to the notebook. I suspect a bug in |
| 4359 | 1979 | * GtkTextView, but I'm not ready to point any fingers yet. |
| 1980 | */ | |
| 1981 | static gboolean | |
| 1982 | entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) | |
| 1983 | { | |
| 1984 | if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
| 1985 | /* Right single click */ | |
| 1986 | g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event"); | |
| 1987 | ||
| 1988 | return TRUE; | |
| 1989 | } | |
| 1990 | ||
| 1991 | return FALSE; | |
| 1992 | } | |
| 1993 | ||
|
8173
8e5c62d7f25f
[gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents:
8172
diff
changeset
|
1994 | /* |
|
8e5c62d7f25f
[gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents:
8172
diff
changeset
|
1995 | * If someone tries to type into the conversation backlog of a |
|
8e5c62d7f25f
[gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents:
8172
diff
changeset
|
1996 | * conversation window then we yank focus from the conversation backlog |
|
8e5c62d7f25f
[gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents:
8172
diff
changeset
|
1997 | * and give it to the text entry box so that people can type |
|
8e5c62d7f25f
[gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents:
8172
diff
changeset
|
1998 | * all the live long day and it will get entered into the entry box. |
|
8e5c62d7f25f
[gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents:
8172
diff
changeset
|
1999 | */ |
| 6057 | 2000 | static gboolean |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
2001 | refocus_entry_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) |
| 6057 | 2002 | { |
| 2003 | GaimGtkConversation *gtkconv = data; | |
| 2004 | ||
|
8237
ad93c98bb387
[gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8229
diff
changeset
|
2005 | /* If we have a valid key for the conversation display, then exit */ |
|
8224
3846a02b8d66
[gaim-migrate @ 8947]
Mark Doliner <markdoliner@pidgin.im>
parents:
8202
diff
changeset
|
2006 | if ((event->state & GDK_CONTROL_MASK) || |
|
8237
ad93c98bb387
[gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8229
diff
changeset
|
2007 | (event->keyval == GDK_F10) || |
|
ad93c98bb387
[gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8229
diff
changeset
|
2008 | (event->keyval == GDK_Shift_L) || |
|
ad93c98bb387
[gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8229
diff
changeset
|
2009 | (event->keyval == GDK_Shift_R) || |
|
ad93c98bb387
[gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8229
diff
changeset
|
2010 | (event->keyval == GDK_Escape) || |
|
8177
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2011 | (event->keyval == GDK_Up) || |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2012 | (event->keyval == GDK_Down) || |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2013 | (event->keyval == GDK_Left) || |
|
8191
0c2d139d5f15
[gaim-migrate @ 8912]
Mark Doliner <markdoliner@pidgin.im>
parents:
8189
diff
changeset
|
2014 | (event->keyval == GDK_Right) || |
|
0c2d139d5f15
[gaim-migrate @ 8912]
Mark Doliner <markdoliner@pidgin.im>
parents:
8189
diff
changeset
|
2015 | (event->keyval == GDK_Home) || |
|
9297
75204ab6a6d7
[gaim-migrate @ 10100]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
2016 | (event->keyval == GDK_End) || |
|
75204ab6a6d7
[gaim-migrate @ 10100]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
2017 | (event->keyval == GDK_Tab) || |
|
75204ab6a6d7
[gaim-migrate @ 10100]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
2018 | (event->keyval == GDK_ISO_Left_Tab)) |
|
8177
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2019 | return FALSE; |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2020 | |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2021 | if (event->type == GDK_KEY_RELEASE) |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2022 | gtk_widget_grab_focus(gtkconv->entry); |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2023 | |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2024 | gtk_widget_event(gtkconv->entry, (GdkEvent *)event); |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2025 | |
|
33b3a01c6318
[gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents:
8176
diff
changeset
|
2026 | return TRUE; |
| 6057 | 2027 | } |
| 2028 | ||
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
2029 | void |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
2030 | gaim_gtkconv_switch_active_conversation(GaimConversation *conv) |
|
11672
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2031 | { |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2032 | GaimGtkConversation *gtkconv; |
|
12899
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2033 | GaimConversation *old_conv; |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2034 | GtkIMHtml *entry; |
|
12831
1c2736221d19
[gaim-migrate @ 15179]
Richard Laager <rlaager@pidgin.im>
parents:
12824
diff
changeset
|
2035 | const char *protocol_name; |
|
11672
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2036 | |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2037 | g_return_if_fail(conv != NULL); |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2038 | |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2039 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
12899
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2040 | old_conv = gtkconv->active_conv; |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2041 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2042 | if (old_conv == conv) |
|
11672
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2043 | return; |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2044 | |
|
12899
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2045 | gaim_conversation_close_logs(old_conv); |
|
11672
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2046 | gtkconv->active_conv = conv; |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2047 | |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2048 | gaim_conversation_set_logging(conv, |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
2049 | gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(gtkconv->win->menu.logging))); |
|
12639
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
2050 | |
|
12899
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2051 | entry = GTK_IMHTML(gtkconv->entry); |
|
12831
1c2736221d19
[gaim-migrate @ 15179]
Richard Laager <rlaager@pidgin.im>
parents:
12824
diff
changeset
|
2052 | protocol_name = gaim_account_get_protocol_name(conv->account); |
|
12899
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2053 | gtk_imhtml_set_protocol_name(entry, protocol_name); |
|
12831
1c2736221d19
[gaim-migrate @ 15179]
Richard Laager <rlaager@pidgin.im>
parents:
12824
diff
changeset
|
2054 | gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->imhtml), protocol_name); |
|
1c2736221d19
[gaim-migrate @ 15179]
Richard Laager <rlaager@pidgin.im>
parents:
12824
diff
changeset
|
2055 | |
|
12899
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2056 | if (!(conv->features & GAIM_CONNECTION_HTML)) |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2057 | gtk_imhtml_clear_formatting(GTK_IMHTML(gtkconv->entry)); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2058 | else if (conv->features & GAIM_CONNECTION_FORMATTING_WBFO && |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2059 | !(old_conv->features & GAIM_CONNECTION_FORMATTING_WBFO)) |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2060 | { |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2061 | /* The old conversation allowed formatting on parts of the |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2062 | * buffer, but the new one only allows it on the whole |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2063 | * buffer. This code saves the formatting from the current |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2064 | * position of the cursor, clears the formatting, then |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2065 | * applies the saved formatting to the entire buffer. */ |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2066 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2067 | gboolean bold; |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2068 | gboolean italic; |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2069 | gboolean underline; |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2070 | char *fontface = gtk_imhtml_get_current_fontface(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2071 | char *forecolor = gtk_imhtml_get_current_forecolor(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2072 | char *backcolor = gtk_imhtml_get_current_backcolor(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2073 | char *background = gtk_imhtml_get_current_background(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2074 | gint fontsize = gtk_imhtml_get_current_fontsize(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2075 | gboolean bold2; |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2076 | gboolean italic2; |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2077 | gboolean underline2; |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2078 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2079 | gtk_imhtml_get_current_format(entry, &bold, &italic, &underline); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2080 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2081 | /* Clear existing formatting */ |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2082 | gtk_imhtml_clear_formatting(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2083 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2084 | /* Apply saved formatting to the whole buffer. */ |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2085 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2086 | gtk_imhtml_get_current_format(entry, &bold2, &italic2, &underline2); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2087 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2088 | if (bold != bold2) |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2089 | gtk_imhtml_toggle_bold(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2090 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2091 | if (italic != italic2) |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2092 | gtk_imhtml_toggle_italic(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2093 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2094 | if (underline != underline2) |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2095 | gtk_imhtml_toggle_underline(entry); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2096 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2097 | gtk_imhtml_toggle_fontface(entry, fontface); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2098 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2099 | if (!(conv->features & GAIM_CONNECTION_NO_FONTSIZE)) |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2100 | gtk_imhtml_font_set_size(entry, fontsize); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2101 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2102 | gtk_imhtml_toggle_forecolor(entry, forecolor); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2103 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2104 | if (!(conv->features & GAIM_CONNECTION_NO_BGCOLOR)) |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2105 | { |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2106 | gtk_imhtml_toggle_backcolor(entry, backcolor); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2107 | gtk_imhtml_toggle_background(entry, background); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2108 | } |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2109 | |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2110 | g_free(fontface); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2111 | g_free(forecolor); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2112 | g_free(backcolor); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2113 | g_free(background); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2114 | } |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2115 | else |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2116 | { |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2117 | /* This is done in default_formatize, which is called from clear_formatting_cb, |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2118 | * which is (obviously) a clear_formatting signal handler. However, if we're |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2119 | * here, we didn't call gtk_imhtml_clear_formatting() (because we want to |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2120 | * preserve the formatting exactly as it is), so we have to do this now. */ |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2121 | gtk_imhtml_set_whole_buffer_formatting_only(entry, |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2122 | (conv->features & GAIM_CONNECTION_FORMATTING_WBFO)); |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2123 | } |
|
b38f0d256715
[gaim-migrate @ 15252]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12897
diff
changeset
|
2124 | |
|
12639
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
2125 | gaim_signal_emit(gaim_gtk_conversations_get_handle(), "conversation-switched", conv); |
| 11604 | 2126 | |
| 2127 | gray_stuff_out(gtkconv); | |
| 2128 | update_typing_icon(gtkconv); | |
| 2129 | ||
| 2130 | gtk_window_set_title(GTK_WINDOW(gtkconv->win->window), | |
| 2131 | gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); | |
| 2132 | } | |
| 2133 | ||
| 2134 | static void | |
| 4673 | 2135 | menu_conv_sel_send_cb(GObject *m, gpointer data) |
| 4359 | 2136 | { |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2137 | GaimAccount *account = g_object_get_data(m, "gaim_account"); |
| 11594 | 2138 | gchar *name = g_object_get_data(m, "gaim_buddy_name"); |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2139 | GaimConversation *conv; |
| 4359 | 2140 | |
|
10059
88025f3b3807
[gaim-migrate @ 11027]
Dave West <kat@users.sourceforge.net>
parents:
10053
diff
changeset
|
2141 | if (gtk_check_menu_item_get_active((GtkCheckMenuItem*) m) == FALSE) |
|
88025f3b3807
[gaim-migrate @ 11027]
Dave West <kat@users.sourceforge.net>
parents:
10053
diff
changeset
|
2142 | return; |
|
88025f3b3807
[gaim-migrate @ 11027]
Dave West <kat@users.sourceforge.net>
parents:
10053
diff
changeset
|
2143 | |
| 11594 | 2144 | conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, account, name); |
| 11604 | 2145 | gaim_gtkconv_switch_active_conversation(conv); |
| 4359 | 2146 | } |
| 2147 | ||
| 2148 | static void | |
| 2149 | insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position, | |
| 2150 | gchar *new_text, gint new_text_length, gpointer user_data) | |
| 2151 | { | |
| 10810 | 2152 | GaimGtkConversation *gtkconv = (GaimGtkConversation *)user_data; |
| 2153 | GaimConversation *conv; | |
| 2154 | ||
| 2155 | g_return_if_fail(gtkconv != NULL); | |
| 11508 | 2156 | |
| 10810 | 2157 | conv = gtkconv->active_conv; |
| 4359 | 2158 | |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
2159 | if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 2160 | return; |
| 2161 | ||
| 10810 | 2162 | got_typing_keypress(gtkconv, (gtk_text_iter_is_start(position) && |
| 2163 | gtk_text_iter_is_end(position))); | |
| 4359 | 2164 | } |
| 2165 | ||
| 2166 | static void | |
| 2167 | delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos, | |
| 2168 | GtkTextIter *end_pos, gpointer user_data) | |
| 2169 | { | |
| 10810 | 2170 | GaimGtkConversation *gtkconv = (GaimGtkConversation *)user_data; |
| 2171 | GaimConversation *conv; | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2172 | GaimConvIm *im; |
| 4359 | 2173 | |
| 10810 | 2174 | g_return_if_fail(gtkconv != NULL); |
| 11508 | 2175 | |
| 10810 | 2176 | conv = gtkconv->active_conv; |
| 4359 | 2177 | |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
2178 | if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 2179 | return; |
| 2180 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2181 | im = GAIM_CONV_IM(conv); |
| 4359 | 2182 | |
| 2183 | if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) { | |
| 2184 | ||
| 2185 | /* We deleted all the text, so turn off typing. */ | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2186 | if (gaim_conv_im_get_type_again_timeout(im)) |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2187 | gaim_conv_im_stop_type_again_timeout(im); |
| 4359 | 2188 | |
| 2189 | serv_send_typing(gaim_conversation_get_gc(conv), | |
| 6695 | 2190 | gaim_conversation_get_name(conv), |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2191 | GAIM_NOT_TYPING); |
| 4359 | 2192 | } |
| 2193 | else { | |
| 2194 | /* We're deleting, but not all of it, so it counts as typing. */ | |
| 10810 | 2195 | got_typing_keypress(gtkconv, FALSE); |
| 4359 | 2196 | } |
| 2197 | } | |
| 2198 | ||
| 8189 | 2199 | /************************************************************************** |
| 2200 | * A bunch of buddy icon functions | |
| 2201 | **************************************************************************/ | |
| 11581 | 2202 | GdkPixbuf * |
| 2203 | gaim_gtkconv_get_tab_icon(GaimConversation *conv, gboolean small_icon) | |
| 7143 | 2204 | { |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2205 | GaimAccount *account = NULL; |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2206 | const char *name = NULL; |
| 7143 | 2207 | GdkPixbuf *status = NULL; |
| 2208 | ||
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2209 | g_return_val_if_fail(conv != NULL, NULL); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2210 | |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2211 | account = gaim_conversation_get_account(conv); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2212 | name = gaim_conversation_get_name(conv); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2213 | |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2214 | g_return_val_if_fail(account != NULL, NULL); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2215 | g_return_val_if_fail(name != NULL, NULL); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2216 | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
2217 | /* Use the buddy icon, if possible */ |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
2218 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { |
| 7143 | 2219 | GaimBuddy *b = gaim_find_buddy(account, name); |
| 2220 | if (b != NULL) { | |
| 2221 | status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, | |
|
8755
0a58adb66b8a
[gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents:
8748
diff
changeset
|
2222 | (small_icon ? GAIM_STATUS_ICON_SMALL : GAIM_STATUS_ICON_LARGE)); |
| 7143 | 2223 | } |
| 2224 | } | |
| 2225 | ||
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
2226 | /* If they don't have a buddy icon, then use the PRPL icon */ |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
2227 | if (status == NULL) |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
2228 | status = gaim_gtk_create_prpl_icon(account, small_icon ? 0.5 : 1.0); |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
2229 | |
| 7143 | 2230 | return status; |
| 2231 | } | |
| 2232 | ||
| 8189 | 2233 | static void |
| 2234 | update_tab_icon(GaimConversation *conv) | |
| 2235 | { | |
| 2236 | GaimGtkConversation *gtkconv; | |
| 11581 | 2237 | GaimGtkWindow *win; |
| 8189 | 2238 | GaimAccount *account; |
| 2239 | const char *name; | |
| 2240 | GdkPixbuf *status = NULL; | |
| 2241 | ||
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2242 | g_return_if_fail(conv != NULL); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2243 | |
| 8189 | 2244 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 11581 | 2245 | win = gtkconv->win; |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
2246 | if (conv != gtkconv->active_conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
2247 | return; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
2248 | |
| 8189 | 2249 | name = gaim_conversation_get_name(conv); |
| 2250 | account = gaim_conversation_get_account(conv); | |
| 2251 | ||
| 11581 | 2252 | status = gaim_gtkconv_get_tab_icon(conv, TRUE); |
| 8189 | 2253 | |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2254 | g_return_if_fail(status != NULL); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
2255 | |
| 8189 | 2256 | gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); |
| 2257 | gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); | |
| 2258 | ||
|
8748
b371a58d0263
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2259 | if (status != NULL) |
|
b371a58d0263
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2260 | g_object_unref(status); |
|
b371a58d0263
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2261 | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2262 | if (gaim_gtk_conv_window_is_active_conversation(conv) && |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
2263 | (gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_IM || |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
2264 | gtkconv->u.im->anim == NULL)) |
|
8748
b371a58d0263
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2265 | { |
| 11581 | 2266 | status = gaim_gtkconv_get_tab_icon(conv, FALSE); |
| 2267 | ||
| 2268 | gtk_window_set_icon(GTK_WINDOW(win->window), status); | |
| 8189 | 2269 | |
|
8748
b371a58d0263
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2270 | if (status != NULL) |
|
b371a58d0263
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2271 | g_object_unref(status); |
|
b371a58d0263
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2272 | } |
| 8189 | 2273 | } |
| 2274 | ||
| 2275 | static gboolean | |
| 2276 | redraw_icon(gpointer data) | |
| 2277 | { | |
| 10810 | 2278 | GaimGtkConversation *gtkconv = (GaimGtkConversation *)data; |
| 2279 | GaimConversation *conv = gtkconv->active_conv; | |
| 9318 | 2280 | GaimAccount *account; |
| 2281 | GaimPluginProtocolInfo *prpl_info = NULL; | |
| 8189 | 2282 | |
| 2283 | GdkPixbuf *buf; | |
| 2284 | GdkPixbuf *scale; | |
| 2285 | GdkPixmap *pm; | |
| 2286 | GdkBitmap *bm; | |
| 2287 | gint delay; | |
| 9318 | 2288 | int scale_width, scale_height; |
| 8189 | 2289 | |
| 2290 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 9318 | 2291 | account = gaim_conversation_get_account(conv); |
| 2292 | if(account && account->gc) | |
| 2293 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl); | |
| 8189 | 2294 | |
| 2295 | gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL); | |
| 2296 | buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
| 2297 | ||
| 10483 | 2298 | gaim_gtk_buddy_icon_get_scale_size(buf, prpl_info ? &prpl_info->icon_spec : |
| 9318 | 2299 | NULL, &scale_width, &scale_height); |
| 2300 | ||
| 2301 | /* this code is ugly, and scares me */ | |
| 8189 | 2302 | scale = gdk_pixbuf_scale_simple(buf, |
| 9318 | 2303 | MAX(gdk_pixbuf_get_width(buf) * scale_width / |
| 8189 | 2304 | gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), |
| 9318 | 2305 | MAX(gdk_pixbuf_get_height(buf) * scale_height / |
| 8189 | 2306 | gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), |
|
11324
e1b9da9925da
[gaim-migrate @ 13535]
Mark Doliner <markdoliner@pidgin.im>
parents:
11299
diff
changeset
|
2307 | GDK_INTERP_BILINEAR); |
| 8189 | 2308 | |
| 2309 | gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 2310 | g_object_unref(G_OBJECT(scale)); | |
| 2311 | gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm); | |
| 2312 | g_object_unref(G_OBJECT(pm)); | |
| 2313 | gtk_widget_queue_draw(gtkconv->u.im->icon); | |
| 2314 | ||
| 2315 | if (bm) | |
| 2316 | g_object_unref(G_OBJECT(bm)); | |
| 2317 | ||
|
9131
10d401d14a89
[gaim-migrate @ 9912]
Mark Doliner <markdoliner@pidgin.im>
parents:
9130
diff
changeset
|
2318 | delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter); |
| 10639 | 2319 | |
| 2320 | if (delay < 100) | |
|
9131
10d401d14a89
[gaim-migrate @ 9912]
Mark Doliner <markdoliner@pidgin.im>
parents:
9130
diff
changeset
|
2321 | delay = 100; |
|
10d401d14a89
[gaim-migrate @ 9912]
Mark Doliner <markdoliner@pidgin.im>
parents:
9130
diff
changeset
|
2322 | |
| 11799 | 2323 | gtkconv->u.im->icon_timer = g_timeout_add(delay, redraw_icon, gtkconv); |
| 8189 | 2324 | |
| 2325 | return FALSE; | |
| 2326 | } | |
| 2327 | ||
| 2328 | static void | |
| 10810 | 2329 | start_anim(GtkObject *obj, GaimGtkConversation *gtkconv) |
| 8189 | 2330 | { |
| 2331 | int delay; | |
| 2332 | ||
|
8228
d4f90900c1a0
[gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents:
8224
diff
changeset
|
2333 | if (gtkconv->u.im->anim == NULL) |
|
d4f90900c1a0
[gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents:
8224
diff
changeset
|
2334 | return; |
|
d4f90900c1a0
[gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents:
8224
diff
changeset
|
2335 | |
| 8202 | 2336 | if (gtkconv->u.im->icon_timer != 0) |
| 2337 | return; | |
| 2338 | ||
| 8189 | 2339 | if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) |
| 2340 | return; | |
| 2341 | ||
| 10639 | 2342 | delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter); |
| 2343 | ||
| 2344 | if (delay < 100) | |
| 2345 | delay = 100; | |
| 2346 | ||
| 11799 | 2347 | gtkconv->u.im->icon_timer = g_timeout_add(delay, redraw_icon, gtkconv); |
| 8189 | 2348 | } |
| 2349 | ||
| 2350 | static void | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
2351 | remove_icon(GaimGtkConversation *gtkconv) |
| 8189 | 2352 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
2353 | GaimConversation *conv = gtkconv->active_conv; |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2354 | GaimGtkWindow *gtkwin; |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2355 | |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2356 | g_return_if_fail(conv != NULL); |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2357 | |
|
9887
d67d35d983a8
[gaim-migrate @ 10772]
Mark Doliner <markdoliner@pidgin.im>
parents:
9885
diff
changeset
|
2358 | if (gtkconv->u.im->icon_container != NULL) |
|
d67d35d983a8
[gaim-migrate @ 10772]
Mark Doliner <markdoliner@pidgin.im>
parents:
9885
diff
changeset
|
2359 | gtk_widget_destroy(gtkconv->u.im->icon_container); |
| 8189 | 2360 | |
| 2361 | if (gtkconv->u.im->anim != NULL) | |
| 2362 | g_object_unref(G_OBJECT(gtkconv->u.im->anim)); | |
| 2363 | ||
| 2364 | if (gtkconv->u.im->icon_timer != 0) | |
| 2365 | g_source_remove(gtkconv->u.im->icon_timer); | |
| 2366 | ||
| 2367 | if (gtkconv->u.im->iter != NULL) | |
| 2368 | g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 2369 | ||
| 2370 | gtkconv->u.im->icon_timer = 0; | |
| 2371 | gtkconv->u.im->icon = NULL; | |
| 2372 | gtkconv->u.im->anim = NULL; | |
| 2373 | gtkconv->u.im->iter = NULL; | |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2374 | gtkconv->u.im->icon_container = NULL; |
| 9687 | 2375 | gtkconv->u.im->show_icon = FALSE; |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2376 | |
| 11581 | 2377 | gtkwin = gtkconv->win; |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2378 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.show_icon), FALSE); |
| 8189 | 2379 | } |
| 2380 | ||
|
9497
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2381 | static void |
|
9504
42685167dd38
[gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents:
9498
diff
changeset
|
2382 | saveicon_writefile_cb(void *user_data, const char *filename) |
|
9497
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2383 | { |
| 10810 | 2384 | GaimGtkConversation *gtkconv = (GaimGtkConversation *)user_data; |
| 2385 | GaimConversation *conv = gtkconv->active_conv; | |
|
9497
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2386 | FILE *fp; |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2387 | GaimBuddyIcon *icon; |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2388 | const void *data; |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2389 | size_t len; |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2390 | |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10572
diff
changeset
|
2391 | if ((fp = g_fopen(filename, "wb")) == NULL) { |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
2392 | gaim_notify_error(gtkconv, NULL, _("Unable to open file."), NULL); |
|
9497
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2393 | return; |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2394 | } |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2395 | |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2396 | icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2397 | data = gaim_buddy_icon_get_data(icon, &len); |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2398 | |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2399 | if ((len <= 0) || (data == NULL)) { |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
2400 | gaim_notify_error(gtkconv, NULL, _("Unable to save icon file to disk."), NULL); |
|
13406
414b4dfdb900
[gaim-migrate @ 15780]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
13394
diff
changeset
|
2401 | fclose(fp); |
|
9497
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2402 | return; |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2403 | } |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2404 | |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2405 | fwrite(data, 1, len, fp); |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2406 | fclose(fp); |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2407 | } |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2408 | |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2409 | static void |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
2410 | icon_menu_save_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
|
9497
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2411 | { |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
2412 | GaimConversation *conv = gtkconv->active_conv; |
|
10953
e5987ea70985
[gaim-migrate @ 12753]
Richard Laager <rlaager@pidgin.im>
parents:
10935
diff
changeset
|
2413 | const gchar *ext; |
|
9497
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2414 | gchar *buf; |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2415 | |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2416 | g_return_if_fail(conv != NULL); |
|
9504
42685167dd38
[gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents:
9498
diff
changeset
|
2417 | |
|
10953
e5987ea70985
[gaim-migrate @ 12753]
Richard Laager <rlaager@pidgin.im>
parents:
10935
diff
changeset
|
2418 | ext = gaim_buddy_icon_get_type(gaim_conv_im_get_icon(GAIM_CONV_IM(conv))); |
|
e5987ea70985
[gaim-migrate @ 12753]
Richard Laager <rlaager@pidgin.im>
parents:
10935
diff
changeset
|
2419 | if (ext == NULL) |
|
e5987ea70985
[gaim-migrate @ 12753]
Richard Laager <rlaager@pidgin.im>
parents:
10935
diff
changeset
|
2420 | ext = "icon"; |
|
e5987ea70985
[gaim-migrate @ 12753]
Richard Laager <rlaager@pidgin.im>
parents:
10935
diff
changeset
|
2421 | |
|
e5987ea70985
[gaim-migrate @ 12753]
Richard Laager <rlaager@pidgin.im>
parents:
10935
diff
changeset
|
2422 | buf = g_strdup_printf("%s.%s", gaim_normalize(conv->account, conv->name), ext); |
|
9504
42685167dd38
[gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents:
9498
diff
changeset
|
2423 | |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
2424 | gaim_request_file(gtkconv, _("Save Icon"), buf, TRUE, |
| 11799 | 2425 | G_CALLBACK(saveicon_writefile_cb), NULL, gtkconv); |
|
9497
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2426 | |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2427 | g_free(buf); |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2428 | } |
|
1df8b47b083e
[gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents:
9495
diff
changeset
|
2429 | |
| 11581 | 2430 | static void |
| 2431 | stop_anim(GtkObject *obj, GaimGtkConversation *gtkconv) | |
| 2432 | { | |
| 2433 | if (gtkconv->u.im->icon_timer != 0) | |
| 2434 | g_source_remove(gtkconv->u.im->icon_timer); | |
| 2435 | ||
| 2436 | gtkconv->u.im->icon_timer = 0; | |
| 2437 | } | |
| 2438 | ||
| 2439 | ||
| 2440 | static void | |
| 2441 | toggle_icon_animate_cb(GtkWidget *w, GaimGtkConversation *gtkconv) | |
| 2442 | { | |
| 2443 | gtkconv->u.im->animate = | |
| 2444 | gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)); | |
| 2445 | ||
| 2446 | if (gtkconv->u.im->animate) | |
| 2447 | start_anim(NULL, gtkconv); | |
| 2448 | else | |
| 2449 | stop_anim(NULL, gtkconv); | |
| 2450 | } | |
| 2451 | ||
| 8189 | 2452 | static gboolean |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
2453 | icon_menu(GtkObject *obj, GdkEventButton *e, GaimGtkConversation *gtkconv) |
| 8189 | 2454 | { |
| 2455 | static GtkWidget *menu = NULL; | |
|
13571
73cc646de0d6
[gaim-migrate @ 15949]
Richard Laager <rlaager@pidgin.im>
parents:
13537
diff
changeset
|
2456 | GtkWidget *item; |
| 8189 | 2457 | |
| 2458 | if (e->button != 3 || e->type != GDK_BUTTON_PRESS) | |
| 2459 | return FALSE; | |
| 2460 | ||
| 2461 | /* | |
| 2462 | * If a menu already exists, destroy it before creating a new one, | |
| 2463 | * thus freeing-up the memory it occupied. | |
| 2464 | */ | |
| 2465 | if (menu != NULL) | |
| 2466 | gtk_widget_destroy(menu); | |
| 2467 | ||
| 2468 | menu = gtk_menu_new(); | |
| 2469 | ||
| 2470 | if (gtkconv->u.im->anim && | |
| 2471 | !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))) | |
| 2472 | { | |
| 2473 | gaim_new_check_item(menu, _("Animate"), | |
| 11799 | 2474 | G_CALLBACK(toggle_icon_animate_cb), gtkconv, |
| 8189 | 2475 | gtkconv->u.im->icon_timer); |
| 2476 | } | |
| 2477 | ||
|
13571
73cc646de0d6
[gaim-migrate @ 15949]
Richard Laager <rlaager@pidgin.im>
parents:
13537
diff
changeset
|
2478 | item = gtk_menu_item_new_with_label(_("Hide Icon")); |
|
73cc646de0d6
[gaim-migrate @ 15949]
Richard Laager <rlaager@pidgin.im>
parents:
13537
diff
changeset
|
2479 | g_signal_connect_swapped(G_OBJECT(item), "activate", |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
2480 | G_CALLBACK(remove_icon), gtkconv); |
|
13571
73cc646de0d6
[gaim-migrate @ 15949]
Richard Laager <rlaager@pidgin.im>
parents:
13537
diff
changeset
|
2481 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
73cc646de0d6
[gaim-migrate @ 15949]
Richard Laager <rlaager@pidgin.im>
parents:
13537
diff
changeset
|
2482 | gtk_widget_show(item); |
| 8189 | 2483 | |
| 2484 | gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS, | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
2485 | G_CALLBACK(icon_menu_save_cb), gtkconv, |
| 8189 | 2486 | 0, 0, NULL); |
| 2487 | ||
| 2488 | gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); | |
| 2489 | ||
| 2490 | return TRUE; | |
| 2491 | } | |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2492 | |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2493 | static void |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2494 | menu_buddyicon_cb(gpointer data, guint action, GtkWidget *widget) |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2495 | { |
| 11581 | 2496 | GaimGtkWindow *win = data; |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2497 | GaimConversation *conv; |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2498 | GaimGtkConversation *gtkconv; |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2499 | gboolean active; |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2500 | |
| 11581 | 2501 | conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2502 | |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2503 | if (!conv) |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2504 | return; |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2505 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
2506 | g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM); |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2507 | |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2508 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2509 | |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2510 | active = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2511 | gtkconv->u.im->show_icon = active; |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2512 | if (active) |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2513 | gaim_gtkconv_update_buddy_icon(conv); |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2514 | else |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
2515 | remove_icon(gtkconv); |
|
10456
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2516 | } |
|
abce605215aa
[gaim-migrate @ 11724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10449
diff
changeset
|
2517 | |
| 8189 | 2518 | /************************************************************************** |
| 2519 | * End of the bunch of buddy icon functions | |
| 2520 | **************************************************************************/ | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2521 | void |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2522 | gaim_gtkconv_present_conversation(GaimConversation *conv) |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2523 | { |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2524 | GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2525 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2526 | if(gtkconv->win==hidden_convwin) { |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
2527 | gaim_gtk_conv_window_remove_gtkconv(hidden_convwin, gtkconv); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2528 | gaim_gtkconv_placement_place(gtkconv); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2529 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2530 | |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
2531 | gaim_gtkconv_switch_active_conversation(conv); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2532 | gaim_gtk_conv_window_switch_gtkconv(gtkconv->win, gtkconv); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2533 | gaim_gtk_conv_window_raise(gtkconv->win); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2534 | gtk_window_present(GTK_WINDOW(gtkconv->win->window)); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2535 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
2536 | |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2537 | GList * |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2538 | gaim_gtk_conversations_find_unseen_list(GaimConversationType type, |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2539 | GaimUnseenState min_state, |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2540 | gboolean hidden_only, |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2541 | guint max_count) |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2542 | { |
|
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2543 | GList *l; |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2544 | GList *r = NULL; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2545 | guint c = 0; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2546 | |
|
12469
e5f46f852486
[gaim-migrate @ 14779]
Richard Laager <rlaager@pidgin.im>
parents:
12468
diff
changeset
|
2547 | if (type == GAIM_CONV_TYPE_IM) { |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2548 | l = gaim_get_ims(); |
|
12469
e5f46f852486
[gaim-migrate @ 14779]
Richard Laager <rlaager@pidgin.im>
parents:
12468
diff
changeset
|
2549 | } else if (type == GAIM_CONV_TYPE_CHAT) { |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2550 | l = gaim_get_chats(); |
|
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2551 | } else { |
|
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2552 | l = gaim_get_conversations(); |
|
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2553 | } |
|
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2554 | |
|
12469
e5f46f852486
[gaim-migrate @ 14779]
Richard Laager <rlaager@pidgin.im>
parents:
12468
diff
changeset
|
2555 | for (; l != NULL && (max_count == 0 || c < max_count); l = l->next) { |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2556 | GaimConversation *conv = (GaimConversation*)l->data; |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2557 | GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2558 | |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2559 | if(gtkconv->active_conv != conv) |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2560 | continue; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2561 | |
|
12469
e5f46f852486
[gaim-migrate @ 14779]
Richard Laager <rlaager@pidgin.im>
parents:
12468
diff
changeset
|
2562 | if (gtkconv->unseen_state >= min_state |
|
e5f46f852486
[gaim-migrate @ 14779]
Richard Laager <rlaager@pidgin.im>
parents:
12468
diff
changeset
|
2563 | && (!hidden_only || |
|
e5f46f852486
[gaim-migrate @ 14779]
Richard Laager <rlaager@pidgin.im>
parents:
12468
diff
changeset
|
2564 | (hidden_only && gtkconv->win == hidden_convwin))) { |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2565 | |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2566 | r = g_list_prepend(r, conv); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2567 | c++; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2568 | } |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2569 | } |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2570 | |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2571 | return r; |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
2572 | } |
| 8189 | 2573 | |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2574 | static void |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2575 | unseen_conv_menu_cb(GtkMenuItem *item, GaimConversation *conv) |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2576 | { |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2577 | g_return_if_fail(conv != NULL); |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2578 | gaim_gtkconv_present_conversation(conv); |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2579 | } |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2580 | |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2581 | guint |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2582 | gaim_gtk_conversations_fill_menu(GtkWidget *menu, GList *convs) |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2583 | { |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2584 | GList *l; |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2585 | guint ret=0; |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2586 | |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2587 | g_return_val_if_fail(menu != NULL, 0); |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2588 | g_return_val_if_fail(convs != NULL, 0); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2589 | |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2590 | for (l = convs; l != NULL ; l = l->next) { |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2591 | GaimConversation *conv = (GaimConversation*)l->data; |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2592 | GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2593 | |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2594 | GtkWidget *icon = gtk_image_new(); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2595 | GdkPixbuf *pbuf = gaim_gtkconv_get_tab_icon(conv, TRUE); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2596 | GtkWidget *item; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2597 | gchar *text = g_strdup_printf("%s (%d)", |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2598 | gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)), |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2599 | gtkconv->unseen_count); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2600 | |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2601 | gtk_image_set_from_pixbuf(GTK_IMAGE(icon), pbuf); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2602 | g_object_unref(pbuf); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2603 | |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2604 | item = gtk_image_menu_item_new_with_label(text); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2605 | gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), icon); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2606 | g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(unseen_conv_menu_cb), conv); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2607 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2608 | g_free(text); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
2609 | ret++; |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2610 | } |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2611 | |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2612 | return ret; |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2613 | } |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
2614 | |
| 11581 | 2615 | GaimGtkWindow * |
| 2616 | gaim_gtkconv_get_window(GaimGtkConversation *gtkconv) | |
| 2617 | { | |
| 2618 | g_return_val_if_fail(gtkconv != NULL, NULL); | |
| 2619 | return gtkconv->win; | |
| 2620 | } | |
| 2621 | ||
| 2622 | static GtkItemFactoryEntry menu_items[] = | |
| 2623 | { | |
| 2624 | /* Conversation menu */ | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2625 | { N_("/_Conversation"), NULL, NULL, 0, "<Branch>", NULL }, |
| 11581 | 2626 | |
| 2627 | { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb, | |
| 2628 | 0, "<StockItem>", GAIM_STOCK_IM }, | |
| 2629 | ||
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2630 | { "/Conversation/sep0", NULL, NULL, 0, "<Separator>", NULL }, |
| 11581 | 2631 | |
| 2632 | { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0, | |
| 2633 | "<StockItem>", GTK_STOCK_FIND }, | |
|
12191
327f2d9ceaa7
[gaim-migrate @ 14493]
Richard Laager <rlaager@pidgin.im>
parents:
12190
diff
changeset
|
2634 | { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, "<StockItem>", GAIM_STOCK_LOG }, |
| 11581 | 2635 | { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, |
| 2636 | "<StockItem>", GTK_STOCK_SAVE_AS }, | |
|
12897
35cbd62fa3de
[gaim-migrate @ 15250]
Richard Laager <rlaager@pidgin.im>
parents:
12867
diff
changeset
|
2637 | { N_("/Conversation/Clea_r Scrollback"), "<CTL>L", menu_clear_cb, 0, "<StockItem>", GTK_STOCK_CLEAR }, |
| 11581 | 2638 | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2639 | { "/Conversation/sep1", NULL, NULL, 0, "<Separator>", NULL }, |
| 11581 | 2640 | |
| 2641 | { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", GAIM_STOCK_FILE_TRANSFER }, | |
| 2642 | { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, | |
|
12191
327f2d9ceaa7
[gaim-migrate @ 14493]
Richard Laager <rlaager@pidgin.im>
parents:
12190
diff
changeset
|
2643 | 0, "<StockItem>", GAIM_STOCK_POUNCE }, |
| 11581 | 2644 | { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, |
| 2645 | "<StockItem>", GAIM_STOCK_INFO }, | |
| 2646 | { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, | |
| 2647 | "<StockItem>", GAIM_STOCK_INVITE }, | |
| 2648 | ||
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2649 | { "/Conversation/sep2", NULL, NULL, 0, "<Separator>", NULL }, |
| 11581 | 2650 | |
| 2651 | { N_("/Conversation/Al_ias..."), NULL, menu_alias_cb, 0, | |
| 2652 | "<StockItem>", GAIM_STOCK_EDIT }, | |
| 2653 | { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, | |
| 2654 | "<StockItem>", GAIM_STOCK_BLOCK }, | |
| 2655 | { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, | |
| 2656 | "<StockItem>", GTK_STOCK_ADD }, | |
| 2657 | { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, | |
| 2658 | "<StockItem>", GTK_STOCK_REMOVE }, | |
| 2659 | ||
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2660 | { "/Conversation/sep3", NULL, NULL, 0, "<Separator>", NULL }, |
| 11581 | 2661 | |
| 2662 | { N_("/Conversation/Insert Lin_k..."), NULL, menu_insert_link_cb, 0, | |
| 2663 | "<StockItem>", GAIM_STOCK_LINK }, | |
| 2664 | { N_("/Conversation/Insert Imag_e..."), NULL, menu_insert_image_cb, 0, | |
| 2665 | "<StockItem>", GAIM_STOCK_IMAGE }, | |
| 2666 | ||
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2667 | { "/Conversation/sep4", NULL, NULL, 0, "<Separator>", NULL }, |
| 11581 | 2668 | |
| 2669 | { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, | |
| 2670 | "<StockItem>", GTK_STOCK_CLOSE }, | |
| 2671 | ||
| 2672 | /* Options */ | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2673 | { N_("/_Options"), NULL, NULL, 0, "<Branch>", NULL }, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2674 | { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>", NULL }, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2675 | { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>", NULL }, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2676 | { N_("/Options/Show Buddy _Icon"), NULL, menu_buddyicon_cb, 0, "<CheckItem>", NULL }, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2677 | { "/Options/sep0", NULL, NULL, 0, "<Separator>", NULL }, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2678 | { N_("/Options/Show Formatting _Toolbars"), NULL, menu_toolbar_cb, 0, "<CheckItem>", NULL }, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12594
diff
changeset
|
2679 | { N_("/Options/Show Ti_mestamps"), "F2", menu_timestamps_cb, 0, "<CheckItem>", NULL }, |
| 11581 | 2680 | }; |
| 2681 | ||
| 2682 | static const int menu_item_count = | |
| 2683 | sizeof(menu_items) / sizeof(*menu_items); | |
| 2684 | ||
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
2685 | static const char * |
| 11581 | 2686 | item_factory_translate_func (const char *path, gpointer func_data) |
| 2687 | { | |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
2688 | return _(path); |
| 11581 | 2689 | } |
| 2690 | ||
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2691 | static void |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
2692 | sound_method_pref_changed_cb(const char *name, GaimPrefType type, |
|
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
2693 | gconstpointer value, gpointer data) |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2694 | { |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2695 | GaimGtkWindow *win = data; |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2696 | const char *method = value; |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2697 | |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2698 | if (!strcmp(method, "none")) |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2699 | { |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2700 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds), |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2701 | FALSE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2702 | gtk_widget_set_sensitive(win->menu.sounds, FALSE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2703 | } |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2704 | else |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2705 | { |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2706 | GaimGtkConversation *gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2707 | |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2708 | if (gtkconv != NULL) |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2709 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds), |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2710 | TRUE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2711 | gtk_widget_set_sensitive(win->menu.sounds, TRUE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2712 | |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2713 | } |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2714 | } |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2715 | |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2716 | static void |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
2717 | show_buddy_icons_pref_changed_cb(const char *name, GaimPrefType type, |
|
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
2718 | gconstpointer value, gpointer data) |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2719 | { |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2720 | GaimGtkWindow *win = data; |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2721 | gboolean show_icons = GPOINTER_TO_INT(value); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2722 | |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2723 | if (!show_icons) |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2724 | { |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2725 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon), |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2726 | FALSE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2727 | gtk_widget_set_sensitive(win->menu.show_icon, FALSE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2728 | } |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2729 | else |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2730 | { |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2731 | GaimGtkConversation *gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2732 | |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2733 | if (gtkconv != NULL) |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2734 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon), |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2735 | TRUE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2736 | gtk_widget_set_sensitive(win->menu.show_icon, TRUE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2737 | |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2738 | } |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2739 | } |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2740 | |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2741 | |
| 11581 | 2742 | static GtkWidget * |
| 2743 | setup_menubar(GaimGtkWindow *win) | |
| 2744 | { | |
| 2745 | GtkAccelGroup *accel_group; | |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2746 | const char *method; |
| 11581 | 2747 | |
| 2748 | accel_group = gtk_accel_group_new (); | |
| 2749 | gtk_window_add_accel_group(GTK_WINDOW(win->window), accel_group); | |
| 2750 | g_object_unref(accel_group); | |
| 2751 | ||
| 2752 | win->menu.item_factory = | |
| 2753 | gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); | |
| 2754 | ||
| 2755 | gtk_item_factory_set_translate_func(win->menu.item_factory, | |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
2756 | (GtkTranslateFunc)item_factory_translate_func, |
| 11581 | 2757 | NULL, NULL); |
| 2758 | ||
| 2759 | gtk_item_factory_create_items(win->menu.item_factory, menu_item_count, | |
| 2760 | menu_items, win); | |
| 2761 | g_signal_connect(G_OBJECT(accel_group), "accel-changed", | |
| 2762 | G_CALLBACK(gaim_gtk_save_accels_cb), NULL); | |
| 2763 | ||
| 2764 | ||
| 2765 | win->menu.menubar = | |
| 2766 | gtk_item_factory_get_widget(win->menu.item_factory, "<main>"); | |
| 2767 | ||
| 2768 | ||
| 2769 | win->menu.view_log = | |
| 2770 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2771 | N_("/Conversation/View Log")); | |
| 2772 | ||
| 2773 | /* --- */ | |
| 2774 | ||
| 2775 | win->menu.send_file = | |
| 2776 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2777 | N_("/Conversation/Send File...")); | |
| 2778 | ||
| 2779 | win->menu.add_pounce = | |
| 2780 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2781 | N_("/Conversation/Add Buddy Pounce...")); | |
| 2782 | ||
| 2783 | /* --- */ | |
| 2784 | ||
| 2785 | win->menu.get_info = | |
| 2786 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2787 | N_("/Conversation/Get Info")); | |
| 2788 | ||
| 2789 | win->menu.invite = | |
| 2790 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2791 | N_("/Conversation/Invite...")); | |
| 2792 | ||
| 2793 | /* --- */ | |
| 2794 | ||
| 2795 | win->menu.alias = | |
| 2796 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2797 | N_("/Conversation/Alias...")); | |
| 2798 | ||
| 2799 | win->menu.block = | |
| 2800 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2801 | N_("/Conversation/Block...")); | |
| 2802 | ||
| 2803 | win->menu.add = | |
| 2804 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2805 | N_("/Conversation/Add...")); | |
| 2806 | ||
| 2807 | win->menu.remove = | |
| 2808 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2809 | N_("/Conversation/Remove...")); | |
| 2810 | ||
| 2811 | /* --- */ | |
| 2812 | ||
| 2813 | win->menu.insert_link = | |
| 2814 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2815 | N_("/Conversation/Insert Link...")); | |
| 2816 | ||
| 2817 | win->menu.insert_image = | |
| 2818 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2819 | N_("/Conversation/Insert Image...")); | |
| 2820 | ||
| 2821 | /* --- */ | |
| 2822 | ||
| 2823 | win->menu.logging = | |
| 2824 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2825 | N_("/Options/Enable Logging")); | |
| 2826 | win->menu.sounds = | |
| 2827 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2828 | N_("/Options/Enable Sounds")); | |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2829 | method = gaim_prefs_get_string("/gaim/gtk/sound/method"); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2830 | if (!strcmp(method, "none")) |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2831 | { |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2832 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds), |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2833 | FALSE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2834 | gtk_widget_set_sensitive(win->menu.sounds, FALSE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2835 | } |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2836 | gaim_prefs_connect_callback(win, "/gaim/gtk/sound/method", |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2837 | sound_method_pref_changed_cb, win); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2838 | |
| 11581 | 2839 | win->menu.show_formatting_toolbar = |
| 2840 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2841 | N_("/Options/Show Formatting Toolbars")); | |
| 2842 | win->menu.show_timestamps = | |
| 2843 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2844 | N_("/Options/Show Timestamps")); | |
| 2845 | win->menu.show_icon = | |
| 2846 | gtk_item_factory_get_widget(win->menu.item_factory, | |
| 2847 | N_("/Options/Show Buddy Icon")); | |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2848 | if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2849 | { |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2850 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon), |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2851 | FALSE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2852 | gtk_widget_set_sensitive(win->menu.show_icon, FALSE); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2853 | } |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2854 | gaim_prefs_connect_callback(win, "/gaim/gtk/conversations/im/show_buddy_icons", |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
2855 | show_buddy_icons_pref_changed_cb, win); |
| 11581 | 2856 | |
| 2857 | win->menu.tray = gaim_gtk_menu_tray_new(); | |
| 2858 | gtk_menu_shell_append(GTK_MENU_SHELL(win->menu.menubar), | |
| 2859 | win->menu.tray); | |
| 2860 | gtk_widget_show(win->menu.tray); | |
| 2861 | ||
| 2862 | gtk_widget_show(win->menu.menubar); | |
| 2863 | ||
| 2864 | return win->menu.menubar; | |
| 2865 | } | |
| 2866 | ||
| 4359 | 2867 | |
| 2868 | /************************************************************************** | |
| 2869 | * Utility functions | |
| 2870 | **************************************************************************/ | |
| 2871 | ||
| 2872 | static void | |
| 10810 | 2873 | got_typing_keypress(GaimGtkConversation *gtkconv, gboolean first) |
| 4359 | 2874 | { |
| 10810 | 2875 | GaimConversation *conv = gtkconv->active_conv; |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2876 | GaimConvIm *im; |
| 4685 | 2877 | |
| 4359 | 2878 | /* |
| 2879 | * We know we got something, so we at least have to make sure we don't | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2880 | * send GAIM_TYPED any time soon. |
| 4359 | 2881 | */ |
| 2882 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2883 | im = GAIM_CONV_IM(conv); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2884 | |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2885 | if (gaim_conv_im_get_type_again_timeout(im)) |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2886 | gaim_conv_im_stop_type_again_timeout(im); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2887 | |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2888 | gaim_conv_im_start_type_again_timeout(im); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2889 | |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2890 | if (first || (gaim_conv_im_get_type_again(im) != 0 && |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2891 | time(NULL) > gaim_conv_im_get_type_again(im))) { |
| 4359 | 2892 | |
| 2893 | int timeout = serv_send_typing(gaim_conversation_get_gc(conv), | |
| 2894 | (char *)gaim_conversation_get_name(conv), | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2895 | GAIM_TYPING); |
| 4359 | 2896 | |
| 2897 | if (timeout) | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2898 | gaim_conv_im_set_type_again(im, time(NULL) + timeout); |
| 4359 | 2899 | else |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2900 | gaim_conv_im_set_type_again(im, 0); |
| 4359 | 2901 | } |
| 2902 | } | |
| 2903 | ||
| 4736 | 2904 | static void |
| 10810 | 2905 | update_typing_icon(GaimGtkConversation *gtkconv) |
| 4736 | 2906 | { |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2907 | GaimGtkWindow *gtkwin; |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2908 | GaimConvIm *im = NULL; |
| 10810 | 2909 | GaimConversation *conv = gtkconv->active_conv; |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
2910 | char *stock_id; |
|
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
2911 | const char *tooltip; |
| 11508 | 2912 | |
| 11581 | 2913 | gtkwin = gtkconv->win; |
| 4736 | 2914 | |
|
12008
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2915 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2916 | im = GAIM_CONV_IM(conv); |
| 4736 | 2917 | |
|
12008
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2918 | if (gtkwin->menu.typing_icon) { |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2919 | gtk_widget_hide(gtkwin->menu.typing_icon); |
|
11787
fb0c7b22368d
[gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents:
11780
diff
changeset
|
2920 | } |
|
fb0c7b22368d
[gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents:
11780
diff
changeset
|
2921 | |
|
12008
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2922 | if (!im || (gaim_conv_im_get_typing_state(im) == GAIM_NOT_TYPING)) |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2923 | return; |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2924 | |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2925 | if (gaim_conv_im_get_typing_state(im) == GAIM_TYPING) { |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2926 | stock_id = GAIM_STOCK_TYPING; |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2927 | tooltip = _("User is typing..."); |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2928 | } else { |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2929 | stock_id = GAIM_STOCK_TYPED; |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2930 | tooltip = _("User has typed something and stopped"); |
|
11787
fb0c7b22368d
[gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents:
11780
diff
changeset
|
2931 | } |
|
12008
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2932 | |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2933 | if (gtkwin->menu.typing_icon == NULL) |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2934 | { |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2935 | gtkwin->menu.typing_icon = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_MENU); |
|
11787
fb0c7b22368d
[gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents:
11780
diff
changeset
|
2936 | gaim_gtk_menu_tray_append(GAIM_GTK_MENU_TRAY(gtkwin->menu.tray), |
|
11908
ad9c7ca74793
[gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11869
diff
changeset
|
2937 | gtkwin->menu.typing_icon, |
|
12008
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2938 | tooltip); |
| 4736 | 2939 | } |
|
12008
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2940 | else |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2941 | { |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2942 | gtk_image_set_from_stock(GTK_IMAGE(gtkwin->menu.typing_icon), stock_id, GTK_ICON_SIZE_MENU); |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2943 | gaim_gtk_menu_tray_set_tooltip(GAIM_GTK_MENU_TRAY(gtkwin->menu.tray), |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2944 | gtkwin->menu.typing_icon, |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2945 | tooltip); |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2946 | } |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2947 | |
|
df998b18ec60
[gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11936
diff
changeset
|
2948 | gtk_widget_show(gtkwin->menu.typing_icon); |
| 4736 | 2949 | } |
| 2950 | ||
| 4685 | 2951 | static gboolean |
| 11594 | 2952 | update_send_to_selection(GaimGtkWindow *win) |
| 4359 | 2953 | { |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2954 | GaimAccount *account; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2955 | GaimConversation *conv; |
| 4359 | 2956 | GtkWidget *menu; |
| 2957 | GList *child; | |
| 11594 | 2958 | GaimBuddy *b; |
| 11581 | 2959 | |
| 2960 | conv = gaim_gtk_conv_window_get_active_conversation(win); | |
| 4359 | 2961 | |
|
5860
27f5a177b7fc
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2962 | if (conv == NULL) |
|
27f5a177b7fc
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2963 | return FALSE; |
|
5678
1d183079b85c
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2964 | |
|
1d183079b85c
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2965 | account = gaim_conversation_get_account(conv); |
| 11581 | 2966 | |
|
13132
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
2967 | if (account == NULL) |
|
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
2968 | return FALSE; |
|
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
2969 | |
| 11594 | 2970 | if (win->menu.send_to == NULL) |
| 4685 | 2971 | return FALSE; |
|
4364
b5e95f7f08c9
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2972 | |
| 11594 | 2973 | if (!(b = gaim_find_buddy(account, conv->name))) |
| 2974 | return FALSE; | |
| 2975 | ||
| 2976 | ||
| 2977 | gtk_widget_show(win->menu.send_to); | |
| 4359 | 2978 | |
| 2979 | menu = gtk_menu_item_get_submenu( | |
| 11594 | 2980 | GTK_MENU_ITEM(win->menu.send_to)); |
| 4359 | 2981 | |
| 2982 | for (child = gtk_container_get_children(GTK_CONTAINER(menu)); | |
| 2983 | child != NULL; | |
| 2984 | child = child->next) { | |
| 2985 | ||
| 2986 | GtkWidget *item = child->data; | |
| 11594 | 2987 | GaimBuddy *item_buddy; |
| 2988 | GaimAccount *item_account = g_object_get_data(G_OBJECT(item), "gaim_account"); | |
| 2989 | gchar *buddy_name = g_object_get_data(G_OBJECT(item), | |
| 2990 | "gaim_buddy_name"); | |
| 2991 | item_buddy = gaim_find_buddy(item_account, buddy_name); | |
| 2992 | ||
| 2993 | if (b == item_buddy) { | |
| 4359 | 2994 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); |
| 2995 | break; | |
| 2996 | } | |
| 2997 | } | |
|
6030
0e20bf585317
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2998 | |
| 4685 | 2999 | return FALSE; |
| 4359 | 3000 | } |
| 3001 | ||
|
12645
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3002 | static gboolean |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3003 | send_to_item_enter_notify_cb(GtkWidget *menuitem, GdkEventCrossing *event, GtkWidget *label) |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3004 | { |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3005 | gtk_widget_set_sensitive(GTK_WIDGET(label), TRUE); |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3006 | return FALSE; |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3007 | } |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3008 | |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3009 | static gboolean |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3010 | send_to_item_leave_notify_cb(GtkWidget *menuitem, GdkEventCrossing *event, GtkWidget *label) |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3011 | { |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3012 | gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE); |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3013 | return FALSE; |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3014 | } |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3015 | |
| 4359 | 3016 | static void |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3017 | create_sendto_item(GtkWidget *menu, GtkSizeGroup *sg, GSList **group, GaimBuddy *buddy, GaimAccount *account, const char *name) |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3018 | { |
| 11594 | 3019 | GtkWidget *box; |
| 3020 | GtkWidget *label; | |
| 3021 | GtkWidget *image; | |
| 3022 | GtkWidget *menuitem; | |
|
11625
416a2a7fabf0
[gaim-migrate @ 13900]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11620
diff
changeset
|
3023 | GdkPixbuf *pixbuf; |
| 11616 | 3024 | gchar *text; |
| 11594 | 3025 | |
| 3026 | /* Create a pixmap for the protocol icon. */ | |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3027 | if (buddy != NULL) |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3028 | pixbuf = gaim_gtk_blist_get_status_icon((GaimBlistNode*)buddy, GAIM_STATUS_ICON_SMALL); |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3029 | else |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
3030 | pixbuf = gaim_gtk_create_prpl_icon(account, 0.5); |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3031 | |
| 11594 | 3032 | /* Now convert it to GtkImage */ |
| 3033 | if (pixbuf == NULL) | |
| 3034 | image = gtk_image_new(); | |
| 3035 | else | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
3036 | { |
|
11625
416a2a7fabf0
[gaim-migrate @ 13900]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11620
diff
changeset
|
3037 | image = gtk_image_new_from_pixbuf(pixbuf); |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
3038 | g_object_unref(G_OBJECT(pixbuf)); |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
3039 | } |
| 11594 | 3040 | |
| 3041 | gtk_size_group_add_widget(sg, image); | |
| 3042 | ||
| 3043 | /* Make our menu item */ | |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3044 | text = g_strdup_printf("%s (%s)", name, gaim_account_get_username(account)); |
| 11616 | 3045 | menuitem = gtk_radio_menu_item_new_with_label(*group, text); |
| 3046 | g_free(text); | |
| 11594 | 3047 | *group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 3048 | ||
| 3049 | /* Do some evil, see some evil, speak some evil. */ | |
| 3050 | box = gtk_hbox_new(FALSE, 0); | |
| 3051 | ||
| 3052 | label = gtk_bin_get_child(GTK_BIN(menuitem)); | |
| 3053 | g_object_ref(label); | |
| 3054 | gtk_container_remove(GTK_CONTAINER(menuitem), label); | |
| 3055 | ||
| 3056 | gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); | |
| 3057 | gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); | |
| 3058 | ||
|
12645
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3059 | if (buddy != NULL && |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3060 | !gaim_presence_is_online(gaim_buddy_get_presence(buddy)) && |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3061 | !gaim_account_supports_offline_message(account, buddy)) |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3062 | { |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3063 | gtk_widget_set_sensitive(label, FALSE); |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3064 | |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3065 | /* Set the label sensitive when the menuitem is highlighted and |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3066 | * insensitive again when the mouse leaves it. This way, it |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3067 | * doesn't appear weird from the highlighting of the embossed |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3068 | * (insensitive style) text.*/ |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3069 | g_signal_connect(menuitem, "enter-notify-event", |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3070 | G_CALLBACK(send_to_item_enter_notify_cb), label); |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3071 | g_signal_connect(menuitem, "leave-notify-event", |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3072 | G_CALLBACK(send_to_item_leave_notify_cb), label); |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3073 | } |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12639
diff
changeset
|
3074 | |
| 11594 | 3075 | g_object_unref(label); |
| 3076 | ||
| 3077 | gtk_container_add(GTK_CONTAINER(menuitem), box); | |
| 3078 | ||
| 3079 | gtk_widget_show(label); | |
| 3080 | gtk_widget_show(image); | |
| 3081 | gtk_widget_show(box); | |
| 3082 | ||
| 3083 | /* Set our data and callbacks. */ | |
| 3084 | g_object_set_data(G_OBJECT(menuitem), "gaim_account", account); | |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3085 | g_object_set_data_full(G_OBJECT(menuitem), "gaim_buddy_name", g_strdup(name), g_free); |
| 11594 | 3086 | |
| 3087 | g_signal_connect(G_OBJECT(menuitem), "activate", | |
| 3088 | G_CALLBACK(menu_conv_sel_send_cb), NULL); | |
| 3089 | ||
| 3090 | gtk_widget_show(menuitem); | |
| 3091 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 3092 | } | |
| 3093 | ||
| 3094 | static void | |
| 3095 | generate_send_to_items(GaimGtkWindow *win) | |
| 11581 | 3096 | { |
| 4359 | 3097 | GtkWidget *menu; |
| 3098 | GSList *group = NULL; | |
|
4669
879e30ac4cf3
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
3099 | GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| 11594 | 3100 | GaimGtkConversation *gtkconv; |
| 3101 | GSList *l, *buds; | |
| 3102 | ||
| 3103 | g_return_if_fail(win != NULL); | |
| 3104 | ||
| 3105 | gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win); | |
| 3106 | ||
| 11604 | 3107 | g_return_if_fail(gtkconv != NULL); |
| 3108 | ||
| 11594 | 3109 | if (win->menu.send_to != NULL) |
| 3110 | gtk_widget_destroy(win->menu.send_to); | |
| 3111 | ||
| 12286 | 3112 | /* Build the Send To menu */ |
| 11594 | 3113 | win->menu.send_to = gtk_menu_item_new_with_mnemonic(_("_Send To")); |
| 3114 | gtk_widget_show(win->menu.send_to); | |
| 4359 | 3115 | |
| 3116 | menu = gtk_menu_new(); | |
| 11581 | 3117 | gtk_menu_shell_insert(GTK_MENU_SHELL(win->menu.menubar), |
| 11594 | 3118 | win->menu.send_to, 2); |
| 3119 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(win->menu.send_to), menu); | |
| 4359 | 3120 | |
| 3121 | gtk_widget_show(menu); | |
| 3122 | ||
| 11604 | 3123 | if (gtkconv->active_conv->type == GAIM_CONV_TYPE_IM) { |
| 3124 | buds = gaim_find_buddies(gtkconv->active_conv->account, gtkconv->active_conv->name); | |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3125 | |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3126 | if (buds == NULL) |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3127 | { |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3128 | /* The user isn't on the buddy list. */ |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3129 | create_sendto_item(menu, sg, &group, NULL, gtkconv->active_conv->account, gtkconv->active_conv->name); |
| 11604 | 3130 | } |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3131 | else |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3132 | { |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3133 | GList *list = NULL, *iter; |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3134 | for (l = buds; l != NULL; l = l->next) |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3135 | { |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3136 | GaimBlistNode *node; |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3137 | |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3138 | node = (GaimBlistNode *) gaim_buddy_get_contact((GaimBuddy *)l->data); |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3139 | |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3140 | for (node = node->child; node != NULL; node = node->next) |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3141 | { |
|
12639
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
3142 | GaimBuddy *buddy = (GaimBuddy *)node; |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3143 | GaimAccount *account; |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3144 | |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3145 | if (!GAIM_BLIST_NODE_IS_BUDDY(node)) |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3146 | continue; |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3147 | |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3148 | account = gaim_buddy_get_account(buddy); |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3149 | if (gaim_account_is_connected(account)) |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3150 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3151 | /* Use the GaimPresence to get unique buddies. */ |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3152 | GaimPresence *presence = gaim_buddy_get_presence(buddy); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3153 | if (!g_list_find(list, presence)) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3154 | list = g_list_prepend(list, presence); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3155 | } |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3156 | } |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3157 | } |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3158 | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3159 | /* Loop over the list backwards so we get the items in the right order, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3160 | * since we did a g_list_prepend() earlier. */ |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3161 | for (iter = g_list_last(list); iter != NULL; iter = iter->prev) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3162 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3163 | GaimPresence *pre = iter->data; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3164 | GaimBuddy *buddy = gaim_presence_get_buddies(pre)->data; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3165 | create_sendto_item(menu, sg, &group, buddy, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3166 | gaim_buddy_get_account(buddy), gaim_buddy_get_name(buddy)); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3167 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
3168 | g_list_free(list); |
|
12638
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3169 | g_slist_free(buds); |
|
1799dfe7f22a
[gaim-migrate @ 14974]
Richard Laager <rlaager@pidgin.im>
parents:
12636
diff
changeset
|
3170 | } |
| 4359 | 3171 | } |
| 3172 | ||
|
4669
879e30ac4cf3
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
3173 | g_object_unref(sg); |
|
879e30ac4cf3
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
3174 | |
| 11594 | 3175 | gtk_widget_show(win->menu.send_to); |
|
12455
6fd012e3f38c
[gaim-migrate @ 14764]
Mark Doliner <markdoliner@pidgin.im>
parents:
12395
diff
changeset
|
3176 | /* TODO: This should never be insensitive. Possibly hidden or not. */ |
| 11594 | 3177 | if (!group) |
| 3178 | gtk_widget_set_sensitive(win->menu.send_to, FALSE); | |
| 3179 | update_send_to_selection(win); | |
| 4359 | 3180 | } |
| 3181 | ||
| 3182 | static GList * | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3183 | generate_invite_user_names(GaimConnection *gc) |
| 4359 | 3184 | { |
| 6695 | 3185 | GaimBlistNode *gnode,*cnode,*bnode; |
| 4359 | 3186 | static GList *tmp = NULL; |
| 3187 | ||
| 3188 | if (tmp) | |
| 3189 | g_list_free(tmp); | |
| 3190 | ||
| 3191 | tmp = g_list_append(NULL, ""); | |
| 3192 | ||
| 3193 | if (gc != NULL) { | |
| 4785 | 3194 | for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 3195 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 3196 | continue; | |
| 6695 | 3197 | for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 3198 | if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 4785 | 3199 | continue; |
| 6695 | 3200 | for(bnode = cnode->child; bnode; bnode = bnode->next) { |
| 3201 | GaimBuddy *buddy; | |
| 3202 | ||
| 3203 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 3204 | continue; | |
| 3205 | ||
| 3206 | buddy = (GaimBuddy *)bnode; | |
| 3207 | ||
| 3208 | if (buddy->account == gc->account && | |
| 3209 | GAIM_BUDDY_IS_ONLINE(buddy)) | |
|
10572
c973b9872d1f
[gaim-migrate @ 11963]
Richard Laager <rlaager@pidgin.im>
parents:
10559
diff
changeset
|
3210 | tmp = g_list_insert_sorted(tmp, buddy->name, |
|
c973b9872d1f
[gaim-migrate @ 11963]
Richard Laager <rlaager@pidgin.im>
parents:
10559
diff
changeset
|
3211 | (GCompareFunc)g_utf8_collate); |
| 6695 | 3212 | } |
| 4359 | 3213 | } |
| 3214 | } | |
| 3215 | } | |
| 3216 | ||
| 3217 | return tmp; | |
| 3218 | } | |
| 3219 | ||
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3220 | static GdkPixbuf * |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3221 | get_chat_buddy_status_icon(GaimConvChat *chat, const char *name, GaimConvChatBuddyFlags flags) |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3222 | { |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3223 | GdkPixbuf *pixbuf, *scale, *scale2; |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3224 | char *filename; |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3225 | const char *image = NULL; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3226 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3227 | if (flags & GAIM_CBFLAGS_FOUNDER) { |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3228 | image = "founder.png"; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3229 | } else if (flags & GAIM_CBFLAGS_OP) { |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3230 | image = "op.png"; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3231 | } else if (flags & GAIM_CBFLAGS_HALFOP) { |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3232 | image = "halfop.png"; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3233 | } else if (flags & GAIM_CBFLAGS_VOICE) { |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3234 | image = "voice.png"; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3235 | } else if ((!flags) && gaim_conv_chat_is_user_ignored(chat, name)) { |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3236 | image = "ignored.png"; |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3237 | } else { |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3238 | return NULL; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3239 | } |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3240 | |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3241 | filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", image, NULL); |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3242 | pixbuf = gdk_pixbuf_new_from_file(filename, NULL); |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3243 | g_free(filename); |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3244 | |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3245 | if (!pixbuf) |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3246 | return NULL; |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3247 | |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3248 | scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR); |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3249 | g_object_unref(pixbuf); |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3250 | |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3251 | if (flags && gaim_conv_chat_is_user_ignored(chat, name)) { |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3252 | filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", "ignored.png", NULL); |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3253 | pixbuf = gdk_pixbuf_new_from_file(filename, NULL); |
|
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3254 | g_free(filename); |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3255 | scale2 = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR); |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3256 | g_object_unref(pixbuf); |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3257 | gdk_pixbuf_composite(scale2, scale, 0, 0, 15, 15, 0, 0, 1, 1, GDK_INTERP_BILINEAR, 192); |
|
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3258 | g_object_unref(scale2); |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3259 | } |
|
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3260 | |
|
10274
f329b1d7fd43
[gaim-migrate @ 11424]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10246
diff
changeset
|
3261 | return scale; |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3262 | } |
|
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3263 | |
| 4359 | 3264 | static void |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
3265 | add_chat_buddy_common(GaimConversation *conv, const char *name, GaimConvChatBuddyFlags flags, const char *alias, const char *old_name) |
| 4359 | 3266 | { |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3267 | GaimGtkConversation *gtkconv; |
|
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3268 | GaimGtkChatPane *gtkchat; |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3269 | GaimConvChat *chat; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3270 | GaimConnection *gc; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3271 | GaimPluginProtocolInfo *prpl_info; |
| 4359 | 3272 | GtkListStore *ls; |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3273 | GdkPixbuf *pixbuf; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3274 | GtkTreeIter iter; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3275 | gboolean is_me = FALSE; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3276 | gboolean is_buddy; |
| 4359 | 3277 | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3278 | chat = GAIM_CONV_CHAT(conv); |
| 4359 | 3279 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 3280 | gtkchat = gtkconv->u.chat; | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3281 | gc = gaim_conversation_get_gc(conv); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3282 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3283 | if (!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl))) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3284 | return; |
| 4359 | 3285 | |
| 3286 | ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list))); | |
| 3287 | ||
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3288 | pixbuf = get_chat_buddy_status_icon(chat, name, flags); |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3289 | |
|
11500
e0965fb5bcd8
[gaim-migrate @ 13745]
Richard Laager <rlaager@pidgin.im>
parents:
11486
diff
changeset
|
3290 | if (!strcmp(chat->nick, gaim_normalize(conv->account, old_name != NULL ? old_name : name))) |
|
e0965fb5bcd8
[gaim-migrate @ 13745]
Richard Laager <rlaager@pidgin.im>
parents:
11486
diff
changeset
|
3291 | is_me = TRUE; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3292 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3293 | is_buddy = (gaim_find_buddy(conv->account, name) != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3294 | |
| 4359 | 3295 | gtk_list_store_append(ls, &iter); |
|
12358
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3296 | |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3297 | if (is_me) |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3298 | { |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3299 | GdkColor send_color; |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3300 | gdk_color_parse(SEND_COLOR, &send_color); |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3301 | |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3302 | gtk_list_store_set(ls, &iter, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3303 | CHAT_USERS_ICON_COLUMN, pixbuf, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3304 | CHAT_USERS_ALIAS_COLUMN, alias, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3305 | CHAT_USERS_NAME_COLUMN, name, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3306 | CHAT_USERS_FLAGS_COLUMN, flags, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3307 | CHAT_USERS_COLOR_COLUMN, &send_color, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3308 | CHAT_USERS_BUDDY_COLUMN, is_buddy, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3309 | -1); |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3310 | } |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3311 | else |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3312 | { |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3313 | gtk_list_store_set(ls, &iter, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3314 | CHAT_USERS_ICON_COLUMN, pixbuf, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3315 | CHAT_USERS_ALIAS_COLUMN, alias, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3316 | CHAT_USERS_NAME_COLUMN, name, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3317 | CHAT_USERS_FLAGS_COLUMN, flags, |
|
12579
2cca132d1426
[gaim-migrate @ 14904]
Richard Laager <rlaager@pidgin.im>
parents:
12553
diff
changeset
|
3318 | CHAT_USERS_COLOR_COLUMN, get_nick_color(gtkconv, name), |
|
12358
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3319 | CHAT_USERS_BUDDY_COLUMN, is_buddy, |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3320 | -1); |
|
dd5cf5a3a46b
[gaim-migrate @ 14662]
Richard Laager <rlaager@pidgin.im>
parents:
12356
diff
changeset
|
3321 | } |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3322 | |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3323 | if (pixbuf) |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3324 | g_object_unref(pixbuf); |
| 4359 | 3325 | } |
| 3326 | ||
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3327 | static void |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3328 | tab_complete_process_item(int *most_matched, char *entered, char **partial, char *nick_partial, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3329 | GList **matches, gboolean command, char *name) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3330 | { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3331 | strncpy(nick_partial, name, strlen(entered)); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3332 | nick_partial[strlen(entered)] = '\0'; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3333 | if (gaim_utf8_strcasecmp(nick_partial, entered)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3334 | return; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3335 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3336 | /* if we're here, it's a possible completion */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3337 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3338 | if (*most_matched == -1) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3339 | /* |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3340 | * this will only get called once, since from now |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3341 | * on *most_matched is >= 0 |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3342 | */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3343 | *most_matched = strlen(name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3344 | *partial = g_strdup(name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3345 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3346 | else if (*most_matched) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3347 | char *tmp = g_strdup(name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3348 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3349 | while (gaim_utf8_strcasecmp(tmp, *partial)) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3350 | (*partial)[*most_matched] = '\0'; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3351 | if (*most_matched < strlen(tmp)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3352 | tmp[*most_matched] = '\0'; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3353 | (*most_matched)--; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3354 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3355 | (*most_matched)++; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3356 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3357 | g_free(tmp); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3358 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3359 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3360 | *matches = g_list_insert_sorted(*matches, g_strdup(name), |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3361 | (GCompareFunc)gaim_utf8_strcasecmp); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3362 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3363 | |
| 9605 | 3364 | static gboolean |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3365 | tab_complete(GaimConversation *conv) |
| 4359 | 3366 | { |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3367 | GaimGtkConversation *gtkconv; |
| 4359 | 3368 | GtkTextIter cursor, word_start, start_buffer; |
| 3369 | int start; | |
| 3370 | int most_matched = -1; | |
| 3371 | char *entered, *partial = NULL; | |
| 3372 | char *text; | |
| 8021 | 3373 | char *nick_partial; |
| 9605 | 3374 | const char *prefix; |
| 4359 | 3375 | GList *matches = NULL; |
| 9605 | 3376 | gboolean command = FALSE; |
| 4359 | 3377 | |
| 3378 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3379 | ||
| 3380 | gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 3381 | gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 3382 | gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 3383 | ||
| 3384 | word_start = cursor; | |
| 3385 | ||
| 3386 | /* if there's nothing there just return */ | |
| 3387 | if (!gtk_text_iter_compare(&cursor, &start_buffer)) | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
3388 | return (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) ? TRUE : FALSE; |
|
6725
21fa06d508c8
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
3389 | |
| 4359 | 3390 | text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer, |
| 3391 | &cursor, FALSE); | |
| 3392 | ||
| 3393 | /* if we're at the end of ": " we need to move back 2 spaces */ | |
| 3394 | start = strlen(text) - 1; | |
| 3395 | ||
| 8021 | 3396 | if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) { |
| 4359 | 3397 | gtk_text_iter_backward_chars(&word_start, 2); |
| 8021 | 3398 | start-=2; |
| 3399 | } | |
| 4359 | 3400 | |
| 3401 | /* find the start of the word that we're tabbing */ | |
| 3402 | while (start >= 0 && text[start] != ' ') { | |
| 3403 | gtk_text_iter_backward_char(&word_start); | |
| 3404 | start--; | |
| 3405 | } | |
| 3406 | ||
| 9605 | 3407 | prefix = gaim_gtk_get_cmd_prefix(); |
| 3408 | if (start == -1 && (strlen(text) >= strlen(prefix)) && !strncmp(text, prefix, strlen(prefix))) { | |
| 3409 | command = TRUE; | |
| 3410 | gtk_text_iter_forward_chars(&word_start, strlen(prefix)); | |
| 3411 | } | |
| 3412 | ||
| 4359 | 3413 | g_free(text); |
| 3414 | ||
| 3415 | entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start, | |
| 3416 | &cursor, FALSE); | |
| 3417 | ||
| 8021 | 3418 | if (!g_utf8_strlen(entered, -1)) { |
| 4359 | 3419 | g_free(entered); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
3420 | return (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) ? TRUE : FALSE; |
| 4359 | 3421 | } |
| 3422 | ||
| 8021 | 3423 | nick_partial = g_malloc(strlen(entered)+1); |
| 3424 | ||
| 9605 | 3425 | if (command) { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3426 | GList *list = gaim_cmd_list(conv); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3427 | GList *l; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3428 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3429 | /* Commands */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3430 | for (l = list; l != NULL; l = l->next) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3431 | tab_complete_process_item(&most_matched, entered, &partial, nick_partial, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3432 | &matches, TRUE, l->data); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3433 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3434 | g_list_free(list); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
3435 | } else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3436 | GaimConvChat *chat = GAIM_CONV_CHAT(conv); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3437 | GList *l = gaim_conv_chat_get_users(chat); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3438 | GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(GAIM_GTK_CONVERSATION(conv)->u.chat->list)); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3439 | GtkTreeIter iter; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3440 | int f; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3441 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3442 | /* Users */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3443 | for (; l != NULL; l = l->next) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3444 | tab_complete_process_item(&most_matched, entered, &partial, nick_partial, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3445 | &matches, TRUE, ((GaimConvChatBuddy *)l->data)->name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3446 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3447 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3448 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3449 | /* Aliases */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3450 | if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3451 | { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3452 | do { |
|
11460
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3453 | char *name; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3454 | char *alias; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3455 | |
|
11460
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3456 | gtk_tree_model_get(model, &iter, |
|
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3457 | CHAT_USERS_NAME_COLUMN, &name, |
|
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3458 | CHAT_USERS_ALIAS_COLUMN, &alias, |
|
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3459 | -1); |
|
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3460 | |
|
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3461 | if (strcmp(name, alias)) |
|
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3462 | tab_complete_process_item(&most_matched, entered, &partial, nick_partial, |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3463 | &matches, FALSE, alias); |
|
11460
b706d483481f
[gaim-migrate @ 13699]
Richard Laager <rlaager@pidgin.im>
parents:
11454
diff
changeset
|
3464 | g_free(name); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3465 | g_free(alias); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3466 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3467 | f = gtk_tree_model_iter_next(model, &iter); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3468 | } while (f != 0); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3469 | } |
| 9605 | 3470 | } else { |
| 3471 | g_free(nick_partial); | |
| 3472 | g_free(entered); | |
| 3473 | return FALSE; | |
| 3474 | } | |
| 3475 | ||
| 8021 | 3476 | g_free(nick_partial); |
| 3477 | ||
| 4359 | 3478 | /* we're only here if we're doing new style */ |
| 3479 | ||
| 3480 | /* if there weren't any matches, return */ | |
| 3481 | if (!matches) { | |
| 3482 | /* if matches isn't set partials won't be either */ | |
| 3483 | g_free(entered); | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
3484 | return (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) ? TRUE : FALSE; |
| 4359 | 3485 | } |
| 3486 | ||
| 3487 | gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor); | |
| 3488 | ||
| 3489 | if (!matches->next) { | |
| 3490 | /* there was only one match. fill it in. */ | |
| 3491 | gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 3492 | gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 3493 | gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 3494 | ||
| 3495 | if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
| 3496 | char *tmp = g_strdup_printf("%s: ", (char *)matches->data); | |
| 3497 | gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1); | |
| 3498 | g_free(tmp); | |
| 3499 | } | |
| 3500 | else | |
| 3501 | gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 3502 | matches->data, -1); | |
| 3503 | ||
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3504 | g_free(matches->data); |
| 4359 | 3505 | matches = g_list_remove(matches, matches->data); |
| 3506 | } | |
| 3507 | else { | |
| 3508 | /* | |
| 3509 | * there were lots of matches, fill in as much as possible | |
| 3510 | * and display all of them | |
| 3511 | */ | |
| 3512 | char *addthis = g_malloc0(1); | |
| 3513 | ||
| 3514 | while (matches) { | |
| 3515 | char *tmp = addthis; | |
| 3516 | addthis = g_strconcat(tmp, matches->data, " ", NULL); | |
| 3517 | g_free(tmp); | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3518 | g_free(matches->data); |
| 4359 | 3519 | matches = g_list_remove(matches, matches->data); |
| 3520 | } | |
| 3521 | ||
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6877
diff
changeset
|
3522 | gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG, |
| 4359 | 3523 | time(NULL)); |
| 3524 | gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1); | |
| 3525 | g_free(addthis); | |
| 3526 | } | |
| 3527 | ||
| 3528 | g_free(entered); | |
| 3529 | g_free(partial); | |
| 9605 | 3530 | |
| 3531 | return TRUE; | |
| 4359 | 3532 | } |
| 3533 | ||
| 10810 | 3534 | static void topic_callback(GtkWidget *w, GaimGtkConversation *gtkconv) |
| 7971 | 3535 | { |
| 3536 | GaimPluginProtocolInfo *prpl_info = NULL; | |
| 3537 | GaimConnection *gc; | |
| 10810 | 3538 | GaimConversation *conv = gtkconv->active_conv; |
| 7971 | 3539 | GaimGtkChatPane *gtkchat; |
| 11261 | 3540 | char *new_topic; |
| 8858 | 3541 | const char *current_topic; |
| 7971 | 3542 | |
| 3543 | gc = gaim_conversation_get_gc(conv); | |
| 3544 | ||
| 3545 | if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl))) | |
| 3546 | return; | |
| 3547 | ||
| 3548 | if(prpl_info->set_chat_topic == NULL) | |
| 3549 | return; | |
| 3550 | ||
| 3551 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3552 | gtkchat = gtkconv->u.chat; | |
| 11261 | 3553 | new_topic = g_strdup(gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text))); |
| 8858 | 3554 | current_topic = gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv)); |
| 3555 | ||
| 11261 | 3556 | if(current_topic && !g_utf8_collate(new_topic, current_topic)){ |
| 3557 | g_free(new_topic); | |
| 7971 | 3558 | return; |
| 11261 | 3559 | } |
| 3560 | ||
| 3561 | gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text), current_topic); | |
| 7971 | 3562 | |
| 8858 | 3563 | prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), |
| 3564 | new_topic); | |
| 11261 | 3565 | |
| 3566 | g_free(new_topic); | |
| 7971 | 3567 | } |
| 3568 | ||
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3569 | static gint |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3570 | sort_chat_users(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer userdata) |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3571 | { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3572 | GaimConvChatBuddyFlags f1 = 0, f2 = 0; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3573 | char *user1 = NULL, *user2 = NULL; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3574 | gboolean buddy1 = FALSE, buddy2 = FALSE; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3575 | gint ret = 0; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3576 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3577 | gtk_tree_model_get(model, a, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3578 | CHAT_USERS_ALIAS_COLUMN, &user1, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3579 | CHAT_USERS_FLAGS_COLUMN, &f1, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3580 | CHAT_USERS_BUDDY_COLUMN, &buddy1, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3581 | -1); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3582 | gtk_tree_model_get(model, b, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3583 | CHAT_USERS_ALIAS_COLUMN, &user2, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3584 | CHAT_USERS_FLAGS_COLUMN, &f2, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3585 | CHAT_USERS_BUDDY_COLUMN, &buddy2, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3586 | -1); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3587 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3588 | if (user1 == NULL || user2 == NULL) { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3589 | if (!(user1 == NULL && user2 == NULL)) |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3590 | ret = (user1 == NULL) ? -1: 1; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3591 | } else if (f1 != f2) { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3592 | /* sort more important users first */ |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3593 | ret = (f1 > f2) ? -1 : 1; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3594 | } else if (buddy1 != buddy2) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3595 | ret = buddy1 ? -1 : 1; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3596 | } else { |
| 10904 | 3597 | ret = gaim_utf8_strcasecmp(user1, user2); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3598 | } |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3599 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3600 | g_free(user1); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3601 | g_free(user2); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3602 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3603 | return ret; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3604 | } |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3605 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3606 | static void |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3607 | update_chat_alias(GaimBuddy *buddy, GaimConversation *conv, GaimConnection *gc, GaimPluginProtocolInfo *prpl_info) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3608 | { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3609 | GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
11500
e0965fb5bcd8
[gaim-migrate @ 13745]
Richard Laager <rlaager@pidgin.im>
parents:
11486
diff
changeset
|
3610 | GaimConvChat *chat = GAIM_CONV_CHAT(conv); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3611 | GtkTreeModel *model; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3612 | char *normalized_name; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3613 | GtkTreeIter iter; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3614 | int f; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3615 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3616 | g_return_if_fail(buddy != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3617 | g_return_if_fail(conv != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3618 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3619 | /* This is safe because this callback is only used in chats, not IMs. */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3620 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkconv->u.chat->list)); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3621 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3622 | if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3623 | return; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3624 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3625 | normalized_name = g_strdup(gaim_normalize(conv->account, buddy->name)); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3626 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3627 | do { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3628 | char *name; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3629 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3630 | gtk_tree_model_get(model, &iter, CHAT_USERS_NAME_COLUMN, &name, -1); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3631 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3632 | if (!strcmp(normalized_name, gaim_normalize(conv->account, name))) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3633 | const char *alias = name; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3634 | GaimBuddy *buddy2; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3635 | |
|
11500
e0965fb5bcd8
[gaim-migrate @ 13745]
Richard Laager <rlaager@pidgin.im>
parents:
11486
diff
changeset
|
3636 | if (strcmp(chat->nick, gaim_normalize(conv->account, name))) { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3637 | /* This user is not me, so look into updating the alias. */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3638 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3639 | if ((buddy2 = gaim_find_buddy(conv->account, name)) != NULL) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3640 | alias = gaim_buddy_get_contact_alias(buddy2); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3641 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3642 | gtk_list_store_set(GTK_LIST_STORE(model), &iter, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3643 | CHAT_USERS_ALIAS_COLUMN, alias, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3644 | -1); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3645 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3646 | g_free(name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3647 | break; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3648 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3649 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3650 | f = gtk_tree_model_iter_next(model, &iter); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3651 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3652 | g_free(name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3653 | } while (f != 0); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3654 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3655 | g_free(normalized_name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3656 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3657 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3658 | static void |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3659 | blist_node_aliased_cb(GaimBlistNode *node, const char *old_alias, GaimConversation *conv) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3660 | { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3661 | GaimConnection *gc; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3662 | GaimPluginProtocolInfo *prpl_info; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3663 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3664 | g_return_if_fail(node != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3665 | g_return_if_fail(conv != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3666 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3667 | gc = gaim_conversation_get_gc(conv); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3668 | g_return_if_fail(gc != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3669 | g_return_if_fail(gc->prpl != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3670 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3671 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3672 | if (prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3673 | return; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3674 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3675 | if (GAIM_BLIST_NODE_IS_CONTACT(node)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3676 | { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3677 | GaimBlistNode *bnode; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3678 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3679 | for(bnode = node->child; bnode; bnode = bnode->next) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3680 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3681 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3682 | continue; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3683 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3684 | update_chat_alias((GaimBuddy *)bnode, conv, gc, prpl_info); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3685 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3686 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3687 | else if (GAIM_BLIST_NODE_IS_BUDDY(node)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3688 | update_chat_alias((GaimBuddy *)node, conv, gc, prpl_info); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3689 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3690 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3691 | static void |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3692 | buddy_cb_common(GaimBuddy *buddy, GaimConversation *conv, gboolean is_buddy) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3693 | { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3694 | GtkTreeModel *model; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3695 | char *normalized_name; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3696 | GtkTreeIter iter; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3697 | int f; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3698 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3699 | g_return_if_fail(buddy != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3700 | g_return_if_fail(conv != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3701 | |
|
11846
4be46c9710e4
[gaim-migrate @ 14137]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11815
diff
changeset
|
3702 | /* Do nothing if the buddy does not belong to the conv's account */ |
|
4be46c9710e4
[gaim-migrate @ 14137]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11815
diff
changeset
|
3703 | if (gaim_buddy_get_account(buddy) != gaim_conversation_get_account(conv)) |
|
4be46c9710e4
[gaim-migrate @ 14137]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11815
diff
changeset
|
3704 | return; |
|
4be46c9710e4
[gaim-migrate @ 14137]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11815
diff
changeset
|
3705 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3706 | /* This is safe because this callback is only used in chats, not IMs. */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3707 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(GAIM_GTK_CONVERSATION(conv)->u.chat->list)); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3708 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3709 | if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3710 | return; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3711 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3712 | normalized_name = g_strdup(gaim_normalize(conv->account, buddy->name)); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3713 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3714 | do { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3715 | char *name; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3716 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3717 | gtk_tree_model_get(model, &iter, CHAT_USERS_NAME_COLUMN, &name, -1); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3718 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3719 | if (!strcmp(normalized_name, gaim_normalize(conv->account, name))) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3720 | gtk_list_store_set(GTK_LIST_STORE(model), &iter, CHAT_USERS_BUDDY_COLUMN, is_buddy, -1); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3721 | g_free(name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3722 | break; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3723 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3724 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3725 | f = gtk_tree_model_iter_next(model, &iter); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3726 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3727 | g_free(name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3728 | } while (f != 0); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3729 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3730 | g_free(normalized_name); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3731 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3732 | blist_node_aliased_cb((GaimBlistNode *)buddy, NULL, conv); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3733 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3734 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3735 | static void |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3736 | buddy_added_cb(GaimBuddy *buddy, GaimConversation *conv) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3737 | { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3738 | buddy_cb_common(buddy, conv, TRUE); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3739 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3740 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3741 | static void |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3742 | buddy_removed_cb(GaimBuddy *buddy, GaimConversation *conv) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3743 | { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3744 | /* If there's another buddy for the same "dude" on the list, do nothing. */ |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3745 | if (gaim_find_buddy(buddy->account, buddy->name) != NULL) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3746 | return; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3747 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3748 | buddy_cb_common(buddy, conv, FALSE); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3749 | } |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3750 | |
|
12710
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
3751 | static void send_menu_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) |
|
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
3752 | { |
|
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
3753 | g_signal_emit_by_name(gtkconv->entry, "message_send"); |
|
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
3754 | } |
|
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
3755 | |
|
12636
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3756 | static void |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3757 | entry_popup_menu_cb(GtkIMHtml *imhtml, GtkMenu *menu, gpointer data) |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3758 | { |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3759 | GtkWidget *menuitem; |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3760 | GaimGtkConversation *gtkconv = data; |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3761 | |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3762 | g_return_if_fail(menu != NULL); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3763 | g_return_if_fail(gtkconv != NULL); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3764 | |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3765 | menuitem = gaim_new_item_from_stock(NULL, _("_Send"), GAIM_STOCK_SEND, |
|
12710
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
3766 | G_CALLBACK(send_menu_cb), gtkconv, |
|
12636
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3767 | 0, 0, NULL); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3768 | if (gtk_text_buffer_get_char_count(imhtml->text_buffer) == 0) |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3769 | gtk_widget_set_sensitive(menuitem, FALSE); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3770 | gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, 0); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3771 | |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3772 | menuitem = gtk_separator_menu_item_new(); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3773 | gtk_widget_show(menuitem); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3774 | gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, 1); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3775 | } |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
3776 | |
| 4359 | 3777 | static GtkWidget * |
| 10810 | 3778 | setup_chat_pane(GaimGtkConversation *gtkconv) |
| 4359 | 3779 | { |
|
13420
c734909b3d43
[gaim-migrate @ 15794]
Richard Laager <rlaager@pidgin.im>
parents:
13417
diff
changeset
|
3780 | GaimPluginProtocolInfo *prpl_info; |
| 10810 | 3781 | GaimConversation *conv = gtkconv->active_conv; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3782 | GaimGtkChatPane *gtkchat; |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3783 | GaimConnection *gc; |
| 4359 | 3784 | GtkWidget *vpaned, *hpaned; |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3785 | GtkWidget *vbox, *hbox, *frame; |
|
13281
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
3786 | GtkWidget *imhtml_sw; |
|
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
3787 | GtkPolicyType imhtml_sw_hscroll; |
| 4359 | 3788 | GtkWidget *lbox, *bbox; |
| 3789 | GtkWidget *label; | |
| 3790 | GtkWidget *list; | |
| 3791 | GtkWidget *button; | |
|
7949
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
3792 | GtkWidget *sw; |
| 4359 | 3793 | GtkListStore *ls; |
| 3794 | GtkCellRenderer *rend; | |
| 3795 | GtkTreeViewColumn *col; | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3796 | void *blist_handle = gaim_blist_get_handle(); |
|
9080
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
3797 | GList *focus_chain = NULL; |
| 4359 | 3798 | |
| 3799 | gtkchat = gtkconv->u.chat; | |
| 3800 | gc = gaim_conversation_get_gc(conv); | |
|
13425
cfc37fb93616
[gaim-migrate @ 15799]
Richard Laager <rlaager@pidgin.im>
parents:
13420
diff
changeset
|
3801 | g_return_val_if_fail(gc != NULL, NULL); |
|
cfc37fb93616
[gaim-migrate @ 15799]
Richard Laager <rlaager@pidgin.im>
parents:
13420
diff
changeset
|
3802 | g_return_val_if_fail(gc->prpl != NULL, NULL); |
|
13420
c734909b3d43
[gaim-migrate @ 15794]
Richard Laager <rlaager@pidgin.im>
parents:
13417
diff
changeset
|
3803 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
| 4359 | 3804 | |
| 3805 | /* Setup the outer pane. */ | |
| 3806 | vpaned = gtk_vpaned_new(); | |
| 3807 | gtk_widget_show(vpaned); | |
| 3808 | ||
| 3809 | /* Setup the top part of the pane. */ | |
| 11243 | 3810 | vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 8914 | 3811 | gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, TRUE); |
| 4359 | 3812 | gtk_widget_show(vbox); |
| 3813 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3814 | if (prpl_info->options & OPT_PROTO_CHAT_TOPIC) |
| 4359 | 3815 | { |
| 11243 | 3816 | hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
|
8253
f69488ceda98
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3817 | gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 4359 | 3818 | gtk_widget_show(hbox); |
| 3819 | ||
| 3820 | label = gtk_label_new(_("Topic:")); | |
|
8253
f69488ceda98
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3821 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 4359 | 3822 | gtk_widget_show(label); |
| 3823 | ||
| 3824 | gtkchat->topic_text = gtk_entry_new(); | |
|
8253
f69488ceda98
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3825 | |
| 7971 | 3826 | if(prpl_info->set_chat_topic == NULL) { |
| 3827 | gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE); | |
| 3828 | } else { | |
| 3829 | g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate", | |
| 10810 | 3830 | G_CALLBACK(topic_callback), gtkconv); |
| 7971 | 3831 | } |
| 3832 | ||
|
8253
f69488ceda98
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3833 | gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0); |
| 4359 | 3834 | gtk_widget_show(gtkchat->topic_text); |
| 3835 | } | |
| 3836 | ||
| 3837 | /* Setup the horizontal pane. */ | |
| 3838 | hpaned = gtk_hpaned_new(); | |
|
8253
f69488ceda98
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3839 | gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); |
| 4359 | 3840 | gtk_widget_show(hpaned); |
| 3841 | ||
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3842 | /* Setup gtkihmtml. */ |
|
13281
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
3843 | frame = gaim_gtk_create_imhtml(FALSE, >kconv->imhtml, NULL, &imhtml_sw); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3844 | gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml"); |
| 10389 | 3845 | gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), TRUE); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3846 | gtk_paned_pack1(GTK_PANED(hpaned), frame, TRUE, TRUE); |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3847 | gtk_widget_show(frame); |
|
13281
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
3848 | gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(imhtml_sw), |
|
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
3849 | &imhtml_sw_hscroll, NULL); |
|
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
3850 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(imhtml_sw), |
|
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
3851 | imhtml_sw_hscroll, GTK_POLICY_ALWAYS); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3852 | |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3853 | gtk_widget_set_size_request(gtkconv->imhtml, |
|
5550
1938d1e59cf8
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3854 | gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), |
|
1938d1e59cf8
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3855 | gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3856 | g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate", |
| 10810 | 3857 | G_CALLBACK(size_allocate_cb), gtkconv); |
| 8914 | 3858 | |
| 4359 | 3859 | g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", |
| 3860 | G_CALLBACK(entry_stop_rclick_cb), NULL); | |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
3861 | g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
| 6057 | 3862 | G_CALLBACK(refocus_entry_cb), gtkconv); |
|
8109
aa340d7d9b54
[gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8108
diff
changeset
|
3863 | g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
|
aa340d7d9b54
[gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8108
diff
changeset
|
3864 | G_CALLBACK(refocus_entry_cb), gtkconv); |
| 4359 | 3865 | |
| 3866 | /* Build the right pane. */ | |
| 11243 | 3867 | lbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
|
4409
a2526adf0f4b
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3868 | gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); |
| 4359 | 3869 | gtk_widget_show(lbox); |
| 3870 | ||
| 3871 | /* Setup the label telling how many people are in the room. */ | |
| 3872 | gtkchat->count = gtk_label_new(_("0 people in room")); | |
| 3873 | gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0); | |
| 3874 | gtk_widget_show(gtkchat->count); | |
| 3875 | ||
| 3876 | /* Setup the list of users. */ | |
|
7949
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
3877 | sw = gtk_scrolled_window_new(NULL, NULL); |
|
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
3878 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
|
8076
1c3c1ad737e8
[gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents:
8068
diff
changeset
|
3879 | GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
|
7949
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
3880 | gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
|
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
3881 | gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0); |
|
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
3882 | gtk_widget_show(sw); |
| 4359 | 3883 | |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3884 | ls = gtk_list_store_new(CHAT_USERS_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3885 | G_TYPE_STRING, G_TYPE_INT, GDK_TYPE_COLOR, G_TYPE_BOOLEAN); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3886 | gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(ls), CHAT_USERS_ALIAS_COLUMN, |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
3887 | sort_chat_users, NULL, NULL); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3888 | gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), CHAT_USERS_ALIAS_COLUMN, |
| 4359 | 3889 | GTK_SORT_ASCENDING); |
| 3890 | ||
| 3891 | list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls)); | |
| 3892 | ||
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3893 | rend = gtk_cell_renderer_pixbuf_new(); |
|
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3894 | |
| 4359 | 3895 | col = gtk_tree_view_column_new_with_attributes(NULL, rend, |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3896 | "pixbuf", CHAT_USERS_ICON_COLUMN, NULL); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3897 | gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3898 | gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); |
| 4359 | 3899 | |
| 3900 | g_signal_connect(G_OBJECT(list), "button_press_event", | |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
3901 | G_CALLBACK(right_click_chat_cb), gtkconv); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
3902 | g_signal_connect(G_OBJECT(list), "popup-menu", |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
3903 | G_CALLBACK(gtkconv_chat_popup_menu_cb), gtkconv); |
| 4359 | 3904 | |
|
9498
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3905 | rend = gtk_cell_renderer_text_new(); |
|
432fc90c7e22
[gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9497
diff
changeset
|
3906 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3907 | g_object_set(rend, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3908 | "foreground-set", TRUE, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3909 | "weight", PANGO_WEIGHT_BOLD, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3910 | NULL); |
| 4359 | 3911 | col = gtk_tree_view_column_new_with_attributes(NULL, rend, |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3912 | "text", CHAT_USERS_ALIAS_COLUMN, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3913 | "foreground-gdk", CHAT_USERS_COLOR_COLUMN, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3914 | "weight-set", CHAT_USERS_BUDDY_COLUMN, |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3915 | NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3916 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3917 | gaim_signal_connect(blist_handle, "buddy-added", |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3918 | gtkchat, GAIM_CALLBACK(buddy_added_cb), conv); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3919 | gaim_signal_connect(blist_handle, "buddy-removed", |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3920 | gtkchat, GAIM_CALLBACK(buddy_removed_cb), conv); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3921 | gaim_signal_connect(blist_handle, "blist-node-aliased", |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3922 | gtkchat, GAIM_CALLBACK(blist_node_aliased_cb), conv); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3923 | |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3924 | #if GTK_CHECK_VERSION(2,6,0) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3925 | gtk_tree_view_column_set_expand(col, TRUE); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3926 | g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
3927 | #endif |
| 4359 | 3928 | |
| 3929 | gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3930 | ||
| 3931 | gtk_widget_set_size_request(list, 150, -1); | |
| 3932 | ||
| 3933 | gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE); | |
| 3934 | gtk_widget_show(list); | |
| 3935 | ||
| 3936 | gtkchat->list = list; | |
| 3937 | ||
|
7949
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
3938 | gtk_container_add(GTK_CONTAINER(sw), list); |
| 4359 | 3939 | |
| 3940 | /* Setup the user list toolbar. */ | |
| 11243 | 3941 | bbox = gtk_hbox_new(TRUE, GAIM_HIG_BOX_SPACE); |
| 4359 | 3942 | gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0); |
| 3943 | gtk_widget_show(bbox); | |
| 3944 | ||
| 3945 | /* IM */ | |
| 10221 | 3946 | button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IM, |
| 4359 | 3947 | GAIM_BUTTON_VERTICAL); |
|
10500
b1d1b55682d7
[gaim-migrate @ 11792]
Mark Doliner <markdoliner@pidgin.im>
parents:
10489
diff
changeset
|
3948 | gtkchat->userlist_im = button; |
| 4359 | 3949 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| 3950 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
|
4370
8a804f16341c
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3951 | gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL); |
| 4359 | 3952 | g_signal_connect(G_OBJECT(button), "clicked", |
| 10810 | 3953 | G_CALLBACK(chat_im_button_cb), gtkconv); |
| 4359 | 3954 | |
| 3955 | gtk_widget_show(button); | |
| 3956 | ||
| 3957 | /* Ignore */ | |
| 3958 | button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE, | |
| 3959 | GAIM_BUTTON_VERTICAL); | |
|
10500
b1d1b55682d7
[gaim-migrate @ 11792]
Mark Doliner <markdoliner@pidgin.im>
parents:
10489
diff
changeset
|
3960 | gtkchat->userlist_ignore = button; |
| 4359 | 3961 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| 3962 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
|
4370
8a804f16341c
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3963 | gtk_tooltips_set_tip(gtkconv->tooltips, button, |
|
8a804f16341c
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3964 | _("Ignore the user"), NULL); |
| 4359 | 3965 | g_signal_connect(G_OBJECT(button), "clicked", |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
3966 | G_CALLBACK(ignore_cb), gtkconv); |
| 4359 | 3967 | gtk_widget_show(button); |
| 3968 | ||
| 3969 | /* Info */ | |
| 3970 | button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO, | |
| 3971 | GAIM_BUTTON_VERTICAL); | |
|
10500
b1d1b55682d7
[gaim-migrate @ 11792]
Mark Doliner <markdoliner@pidgin.im>
parents:
10489
diff
changeset
|
3972 | gtkchat->userlist_info = button; |
| 4359 | 3973 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| 3974 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 3975 | gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
|
4370
8a804f16341c
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3976 | _("Get the user's information"), NULL); |
| 4359 | 3977 | g_signal_connect(G_OBJECT(button), "clicked", |
| 10810 | 3978 | G_CALLBACK(info_cb), gtkconv); |
| 4359 | 3979 | |
| 3980 | gtk_widget_show(button); | |
| 3981 | ||
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3982 | /* Setup the bottom half of the conversation window */ |
| 11243 | 3983 | vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 8914 | 3984 | gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, TRUE); |
|
4963
06be8a0c28e9
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3985 | gtk_widget_show(vbox); |
|
06be8a0c28e9
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3986 | |
| 11243 | 3987 | gtkconv->lower_hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 9332 | 3988 | gtk_box_pack_start(GTK_BOX(vbox), gtkconv->lower_hbox, TRUE, TRUE, 0); |
| 3989 | gtk_widget_show(gtkconv->lower_hbox); | |
| 3990 | ||
| 11243 | 3991 | vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 9332 | 3992 | gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox, TRUE, TRUE, 0); |
| 3993 | gtk_widget_show(vbox); | |
| 3994 | ||
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3995 | /* Setup the toolbar, entry widget and all signals */ |
|
13281
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
3996 | frame = gaim_gtk_create_imhtml(TRUE, >kconv->entry, >kconv->toolbar, NULL); |
| 10080 | 3997 | gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3998 | gtk_widget_show(frame); |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
3999 | |
|
12636
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
4000 | g_signal_connect(G_OBJECT(gtkconv->entry), "populate-popup", |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
4001 | G_CALLBACK(entry_popup_menu_cb), gtkconv); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
4002 | |
| 9005 | 4003 | gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry"); |
| 8456 | 4004 | gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), |
|
9699
d1ca5dd91cc2
[gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
4005 | gaim_account_get_protocol_name(conv->account)); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4006 | gtk_widget_set_size_request(gtkconv->entry, -1, |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4007 | gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height")); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4008 | gtkconv->entry_buffer = |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4009 | gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
| 10810 | 4010 | g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", gtkconv); |
|
7949
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
4011 | |
|
6c8206406511
[gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents:
7946
diff
changeset
|
4012 | g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", |
| 10810 | 4013 | G_CALLBACK(entry_key_press_cb), gtkconv); |
|
12710
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
4014 | g_signal_connect_after(G_OBJECT(gtkconv->entry), "message_send", |
|
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
4015 | G_CALLBACK(send_cb), gtkconv); |
| 4359 | 4016 | g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
| 10810 | 4017 | G_CALLBACK(entry_stop_rclick_cb), NULL); |
| 8914 | 4018 | g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate", |
| 10810 | 4019 | G_CALLBACK(size_allocate_cb), gtkconv); |
| 4020 | ||
| 4021 | default_formatize(gtkconv); | |
| 4359 | 4022 | |
|
9080
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4023 | /* |
|
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4024 | * Focus for chat windows should be as follows: |
|
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4025 | * Tab title -> chat topic -> conversation scrollback -> user list -> |
|
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4026 | * user list buttons -> entry -> buttons at bottom |
|
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4027 | */ |
| 9332 | 4028 | focus_chain = g_list_prepend(focus_chain, gtkconv->entry); |
|
9080
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4029 | gtk_container_set_focus_chain(GTK_CONTAINER(vbox), focus_chain); |
|
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4030 | |
| 4359 | 4031 | return vpaned; |
| 4032 | } | |
| 4033 | ||
| 4034 | static GtkWidget * | |
| 10810 | 4035 | setup_im_pane(GaimGtkConversation *gtkconv) |
| 4359 | 4036 | { |
| 10810 | 4037 | GaimConversation *conv = gtkconv->active_conv; |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4038 | GtkWidget *frame; |
|
13281
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
4039 | GtkWidget *imhtml_sw; |
|
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
4040 | GtkPolicyType imhtml_sw_hscroll; |
| 4359 | 4041 | GtkWidget *paned; |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4042 | GtkWidget *vbox; |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4043 | GtkWidget *vbox2; |
|
9080
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4044 | GList *focus_chain = NULL; |
| 4359 | 4045 | |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4046 | /* Setup the outer pane */ |
| 4359 | 4047 | paned = gtk_vpaned_new(); |
| 4048 | gtk_widget_show(paned); | |
| 4049 | ||
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4050 | /* Setup the top part of the pane */ |
| 11243 | 4051 | vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
|
4409
a2526adf0f4b
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
4052 | gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
| 4359 | 4053 | gtk_widget_show(vbox); |
| 4054 | ||
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4055 | /* Setup the gtkimhtml widget */ |
|
13281
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
4056 | frame = gaim_gtk_create_imhtml(FALSE, >kconv->imhtml, NULL, &imhtml_sw); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4057 | gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml"); |
| 10389 | 4058 | gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),TRUE); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4059 | gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4060 | gtk_widget_show(frame); |
|
13281
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
4061 | gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(imhtml_sw), |
|
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
4062 | &imhtml_sw_hscroll, NULL); |
|
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
4063 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(imhtml_sw), |
|
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
4064 | imhtml_sw_hscroll, GTK_POLICY_ALWAYS); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4065 | |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4066 | gtk_widget_set_size_request(gtkconv->imhtml, |
|
5550
1938d1e59cf8
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
4067 | gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), |
|
1938d1e59cf8
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
4068 | gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4069 | g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate", |
| 10810 | 4070 | G_CALLBACK(size_allocate_cb), gtkconv); |
| 4359 | 4071 | |
| 4072 | g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 10810 | 4073 | G_CALLBACK(entry_stop_rclick_cb), NULL); |
|
8105
54ea897b764e
[gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8091
diff
changeset
|
4074 | g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
| 10810 | 4075 | G_CALLBACK(refocus_entry_cb), gtkconv); |
|
8109
aa340d7d9b54
[gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8108
diff
changeset
|
4076 | g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
| 10810 | 4077 | G_CALLBACK(refocus_entry_cb), gtkconv); |
| 4359 | 4078 | |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4079 | /* Setup the bottom half of the conversation window */ |
| 11243 | 4080 | vbox2 = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 8914 | 4081 | gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, TRUE); |
|
4963
06be8a0c28e9
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
4082 | gtk_widget_show(vbox2); |
|
06be8a0c28e9
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
4083 | |
| 11243 | 4084 | gtkconv->lower_hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 9332 | 4085 | gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->lower_hbox, TRUE, TRUE, 0); |
| 4086 | gtk_widget_show(gtkconv->lower_hbox); | |
| 4087 | ||
| 11243 | 4088 | vbox2 = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 9332 | 4089 | gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox2, TRUE, TRUE, 0); |
| 4090 | gtk_widget_show(vbox2); | |
| 8821 | 4091 | |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4092 | /* Setup the toolbar, entry widget and all signals */ |
|
13281
3558cb15ebb9
[gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents:
13234
diff
changeset
|
4093 | frame = gaim_gtk_create_imhtml(TRUE, >kconv->entry, >kconv->toolbar, NULL); |
| 10080 | 4094 | gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4095 | gtk_widget_show(frame); |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4096 | |
|
12636
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
4097 | g_signal_connect(G_OBJECT(gtkconv->entry), "populate-popup", |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
4098 | G_CALLBACK(entry_popup_menu_cb), gtkconv); |
|
72de6423d3c7
[gaim-migrate @ 14972]
Richard Laager <rlaager@pidgin.im>
parents:
12624
diff
changeset
|
4099 | |
| 9005 | 4100 | gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry"); |
| 8456 | 4101 | gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), |
|
9699
d1ca5dd91cc2
[gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
4102 | gaim_account_get_protocol_name(conv->account)); |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4103 | gtk_widget_set_size_request(gtkconv->entry, -1, |
|
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
4104 | gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height")); |
|
8407
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4105 | gtkconv->entry_buffer = |
|
0f9d77fe1dc6
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4106 | gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
| 10810 | 4107 | g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", gtkconv); |
|
4963
06be8a0c28e9
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
4108 | |
| 4359 | 4109 | g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", |
| 10810 | 4110 | G_CALLBACK(entry_key_press_cb), gtkconv); |
|
12710
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
4111 | g_signal_connect_after(G_OBJECT(gtkconv->entry), "message_send", |
|
034143c3ed9f
[gaim-migrate @ 15054]
Richard Laager <rlaager@pidgin.im>
parents:
12682
diff
changeset
|
4112 | G_CALLBACK(send_cb), gtkconv); |
| 4359 | 4113 | g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
| 10810 | 4114 | G_CALLBACK(entry_stop_rclick_cb), NULL); |
| 8914 | 4115 | g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate", |
| 10810 | 4116 | G_CALLBACK(size_allocate_cb), gtkconv); |
| 4359 | 4117 | |
| 4118 | g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", | |
| 10810 | 4119 | G_CALLBACK(insert_text_cb), gtkconv); |
| 4359 | 4120 | g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", |
| 10810 | 4121 | G_CALLBACK(delete_text_cb), gtkconv); |
| 4359 | 4122 | |
| 8481 | 4123 | /* had to move this after the imtoolbar is attached so that the |
| 4124 | * signals get fired to toggle the buttons on the toolbar as well. | |
| 4125 | */ | |
| 10810 | 4126 | default_formatize(gtkconv); |
| 4359 | 4127 | |
|
11275
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
4128 | g_signal_connect_after(G_OBJECT(gtkconv->entry), "format_function_clear", |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
4129 | G_CALLBACK(clear_formatting_cb), gtkconv); |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11269
diff
changeset
|
4130 | |
|
8758
940afe5423a9
[gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents:
8756
diff
changeset
|
4131 | gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons"); |
| 9687 | 4132 | gtkconv->u.im->show_icon = TRUE; |
| 4359 | 4133 | |
|
9080
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4134 | /* |
|
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4135 | * Focus for IM windows should be as follows: |
| 10356 | 4136 | * Tab title -> conversation scrollback -> entry |
|
9080
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4137 | */ |
| 9332 | 4138 | focus_chain = g_list_prepend(focus_chain, gtkconv->entry); |
|
9080
e687d72cbcb4
[gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents:
9049
diff
changeset
|
4139 | gtk_container_set_focus_chain(GTK_CONTAINER(vbox2), focus_chain); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8133
diff
changeset
|
4140 | |
| 4359 | 4141 | return paned; |
| 4142 | } | |
| 4143 | ||
| 4144 | static void | |
|
4689
524a0357d05b
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4145 | conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y, |
| 10810 | 4146 | GtkSelectionData *sd, guint info, guint t, |
| 4147 | GaimGtkConversation *gtkconv) | |
|
4689
524a0357d05b
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4148 | { |
| 10810 | 4149 | GaimConversation *conv = gtkconv->active_conv; |
| 11581 | 4150 | GaimGtkWindow *win = gtkconv->win; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4151 | GaimConversation *c; |
|
7712
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4152 | if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4153 | { |
| 4781 | 4154 | GaimBlistNode *n = NULL; |
| 6695 | 4155 | GaimBuddy *b; |
| 11581 | 4156 | GaimGtkConversation *gtkconv = NULL; |
|
9622
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4157 | |
|
11812
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4158 | n = *(GaimBlistNode **)sd->data; |
|
4939
ea6aed119816
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
4159 | |
| 6695 | 4160 | if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
| 4161 | b = gaim_contact_get_priority_buddy((GaimContact*)n); | |
| 4162 | else if (GAIM_BLIST_NODE_IS_BUDDY(n)) | |
| 4163 | b = (GaimBuddy*)n; | |
| 4164 | else | |
| 4781 | 4165 | return; |
|
4939
ea6aed119816
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
4166 | |
|
9622
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4167 | /* |
|
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4168 | * If we already have an open conversation with this buddy, then |
|
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4169 | * just move the conv to this window. Otherwise, create a new |
|
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4170 | * conv and add it to this window. |
|
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4171 | */ |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
4172 | c = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, b->name, b->account); |
|
9622
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4173 | if (c != NULL) { |
| 11581 | 4174 | GaimGtkWindow *oldwin; |
| 4175 | gtkconv = GAIM_GTK_CONVERSATION(c); | |
| 4176 | oldwin = gtkconv->win; | |
|
9622
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4177 | if (oldwin != win) { |
| 11581 | 4178 | gaim_gtk_conv_window_remove_gtkconv(oldwin, gtkconv); |
| 4179 | gaim_gtk_conv_window_add_gtkconv(win, gtkconv); | |
|
9622
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4180 | } |
|
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4181 | } else { |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
4182 | c = gaim_conversation_new(GAIM_CONV_TYPE_IM, b->account, b->name); |
| 11581 | 4183 | gtkconv = GAIM_GTK_CONVERSATION(c); |
|
11812
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4184 | if (gtkconv->win != win) |
|
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4185 | { |
|
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4186 | gaim_gtk_conv_window_remove_gtkconv(gtkconv->win, gtkconv); |
|
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4187 | gaim_gtk_conv_window_add_gtkconv(win, gtkconv); |
|
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4188 | } |
|
9622
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4189 | } |
|
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4190 | |
|
e86bf8cf1fac
[gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents:
9614
diff
changeset
|
4191 | /* Make this conversation the active conversation */ |
| 11581 | 4192 | gaim_gtk_conv_window_switch_gtkconv(win, gtkconv); |
|
8802
210f40a52277
[gaim-migrate @ 9564]
Christian Hammond <chipx86@chipx86.com>
parents:
8758
diff
changeset
|
4193 | |
|
210f40a52277
[gaim-migrate @ 9564]
Christian Hammond <chipx86@chipx86.com>
parents:
8758
diff
changeset
|
4194 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
| 4702 | 4195 | } |
|
7712
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4196 | else if (sd->target == gdk_atom_intern("application/x-im-contact", FALSE)) |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4197 | { |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4198 | char *protocol = NULL; |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4199 | char *username = NULL; |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4200 | GaimAccount *account; |
| 11581 | 4201 | GaimGtkConversation *gtkconv; |
|
7712
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4202 | |
|
11137
cf40226ddff7
[gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents:
11115
diff
changeset
|
4203 | if (gaim_gtk_parse_x_im_contact((const char *)sd->data, FALSE, &account, |
| 7718 | 4204 | &protocol, &username, NULL)) |
|
7712
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4205 | { |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4206 | if (account == NULL) |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4207 | { |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
4208 | gaim_notify_error(win, NULL, |
|
7712
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4209 | _("You are not currently signed on with an account that " |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4210 | "can add that buddy."), NULL); |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4211 | } |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4212 | else |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4213 | { |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
4214 | c = gaim_conversation_new(GAIM_CONV_TYPE_IM, account, username); |
| 11581 | 4215 | gtkconv = GAIM_GTK_CONVERSATION(c); |
|
11812
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4216 | if (gtkconv->win != win) |
|
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4217 | { |
|
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4218 | gaim_gtk_conv_window_remove_gtkconv(gtkconv->win, gtkconv); |
|
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4219 | gaim_gtk_conv_window_add_gtkconv(win, gtkconv); |
|
1dc4177239f9
[gaim-migrate @ 14103]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11805
diff
changeset
|
4220 | } |
|
7712
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4221 | } |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4222 | } |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4223 | |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4224 | if (username != NULL) g_free(username); |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4225 | if (protocol != NULL) g_free(protocol); |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4226 | |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4227 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
|
74af9358b808
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4228 | } |
| 9525 | 4229 | else if (sd->target == gdk_atom_intern("text/uri-list", FALSE)) { |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
4230 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
10229
39ffee70c286
[gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents:
10224
diff
changeset
|
4231 | gaim_dnd_file_manage(sd, gaim_conversation_get_account(conv), gaim_conversation_get_name(conv)); |
|
10145
f1405f65ff41
[gaim-migrate @ 11218]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10117
diff
changeset
|
4232 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
| 9495 | 4233 | } |
|
10145
f1405f65ff41
[gaim-migrate @ 11218]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10117
diff
changeset
|
4234 | else |
|
f1405f65ff41
[gaim-migrate @ 11218]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10117
diff
changeset
|
4235 | gtk_drag_finish(dc, FALSE, FALSE, t); |
|
4689
524a0357d05b
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4236 | } |
| 4359 | 4237 | |
| 4238 | ||
|
4689
524a0357d05b
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4239 | static const GtkTargetEntry te[] = |
|
524a0357d05b
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4240 | { |
|
10145
f1405f65ff41
[gaim-migrate @ 11218]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10117
diff
changeset
|
4241 | GTK_IMHTML_DND_TARGETS, |
|
f1405f65ff41
[gaim-migrate @ 11218]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10117
diff
changeset
|
4242 | {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, GTK_IMHTML_DRAG_NUM}, |
|
f1405f65ff41
[gaim-migrate @ 11218]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10117
diff
changeset
|
4243 | {"application/x-im-contact", 0, GTK_IMHTML_DRAG_NUM + 1} |
|
4689
524a0357d05b
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4244 | }; |
|
524a0357d05b
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4245 | |
| 10810 | 4246 | static GaimGtkConversation * |
| 4247 | gaim_gtk_conv_find_gtkconv(GaimConversation * conv) | |
| 4248 | { | |
| 4249 | GaimBuddy *bud = gaim_find_buddy(conv->account, conv->name), *b; | |
| 4250 | GaimContact *c; | |
| 4251 | GaimBlistNode *cn; | |
| 10935 | 4252 | |
| 10810 | 4253 | if (!bud) |
| 4254 | return NULL; | |
| 10935 | 4255 | |
| 10810 | 4256 | if (!(c = gaim_buddy_get_contact(bud))) |
| 4257 | return NULL; | |
| 10935 | 4258 | |
| 10810 | 4259 | cn = (GaimBlistNode *)c; |
| 4260 | for (b = (GaimBuddy *)cn->child; b; b = (GaimBuddy *) ((GaimBlistNode *)b)->next) { | |
| 4261 | GaimConversation *conv; | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
4262 | if ((conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, b->name, b->account))) { |
| 10810 | 4263 | if (conv->ui_data) |
| 4264 | return conv->ui_data; | |
| 4265 | } | |
| 4266 | } | |
| 10935 | 4267 | |
| 10810 | 4268 | return NULL; |
| 4269 | } | |
| 4270 | ||
|
11855
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4271 | static void |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4272 | buddy_update_cb(GaimBlistNode *bnode, gpointer null) |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4273 | { |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4274 | GList *list; |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4275 | |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4276 | g_return_if_fail(bnode); |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4277 | g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(bnode)); |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4278 | |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4279 | for (list = gaim_gtk_conv_windows_get_list(); list; list = list->next) |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4280 | { |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4281 | GaimGtkWindow *win = list->data; |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4282 | GaimConversation *conv = gaim_gtk_conv_window_get_active_conversation(win); |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4283 | |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4284 | if (gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_IM) |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4285 | continue; |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4286 | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
4287 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_MENU); |
|
11855
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4288 | } |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4289 | } |
|
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
4290 | |
| 11581 | 4291 | /************************************************************************** |
| 4292 | * Conversation UI operations | |
| 4293 | **************************************************************************/ | |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4294 | static void |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4295 | private_gtkconv_new(GaimConversation *conv, gboolean hidden) |
| 11581 | 4296 | { |
| 4297 | GaimGtkConversation *gtkconv; | |
| 4298 | GaimConversationType conv_type = gaim_conversation_get_type(conv); | |
| 4359 | 4299 | GtkWidget *pane = NULL; |
| 4300 | GtkWidget *tab_cont; | |
| 11581 | 4301 | |
| 4302 | if (conv_type == GAIM_CONV_TYPE_IM && (gtkconv = gaim_gtk_conv_find_gtkconv(conv))) { | |
| 10810 | 4303 | conv->ui_data = gtkconv; |
| 4304 | if (!g_list_find(gtkconv->convs, conv)) | |
| 4305 | gtkconv->convs = g_list_prepend(gtkconv->convs, conv); | |
| 11604 | 4306 | gaim_gtkconv_switch_active_conversation(conv); |
| 10810 | 4307 | return; |
| 4359 | 4308 | } |
| 4309 | ||
| 11581 | 4310 | gtkconv = g_new0(GaimGtkConversation, 1); |
| 4311 | conv->ui_data = gtkconv; | |
| 4312 | gtkconv->active_conv = conv; | |
| 4313 | gtkconv->convs = g_list_prepend(gtkconv->convs, conv); | |
| 4314 | ||
| 4315 | /* Setup some initial variables. */ | |
| 4316 | gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); | |
| 4317 | gtkconv->tooltips = gtk_tooltips_new(); | |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
4318 | gtkconv->unseen_state = GAIM_UNSEEN_NONE; |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
4319 | gtkconv->unseen_count = 0; |
| 11581 | 4320 | |
| 4321 | if (conv_type == GAIM_CONV_TYPE_IM) { | |
| 4322 | gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane)); | |
| 4323 | ||
| 4324 | pane = setup_im_pane(gtkconv); | |
| 4325 | } else if (conv_type == GAIM_CONV_TYPE_CHAT) { | |
| 4326 | gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane)); | |
| 4327 | pane = setup_chat_pane(gtkconv); | |
| 4328 | } | |
| 4329 | ||
|
12101
cb966da05dfc
[gaim-migrate @ 14398]
Mark Doliner <markdoliner@pidgin.im>
parents:
12099
diff
changeset
|
4330 | gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->imhtml), |
|
cb966da05dfc
[gaim-migrate @ 14398]
Mark Doliner <markdoliner@pidgin.im>
parents:
12099
diff
changeset
|
4331 | gtk_imhtml_get_format_functions(GTK_IMHTML(gtkconv->imhtml)) | GTK_IMHTML_IMAGE); |
|
cb966da05dfc
[gaim-migrate @ 14398]
Mark Doliner <markdoliner@pidgin.im>
parents:
12099
diff
changeset
|
4332 | |
| 11581 | 4333 | if (pane == NULL) { |
| 4334 | if (conv_type == GAIM_CONV_TYPE_CHAT) | |
| 4335 | g_free(gtkconv->u.chat); | |
| 4336 | else if (conv_type == GAIM_CONV_TYPE_IM) | |
| 4337 | g_free(gtkconv->u.im); | |
| 4338 | ||
| 4339 | g_free(gtkconv); | |
| 4340 | conv->ui_data = NULL; | |
| 4341 | return; | |
|
10449
4174c2957405
[gaim-migrate @ 11714]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10443
diff
changeset
|
4342 | } |
| 11581 | 4343 | |
| 4344 | /* Setup drag-and-drop */ | |
| 4345 | gtk_drag_dest_set(pane, | |
| 4346 | GTK_DEST_DEFAULT_MOTION | | |
| 4347 | GTK_DEST_DEFAULT_DROP, | |
| 4348 | te, sizeof(te) / sizeof(GtkTargetEntry), | |
| 4349 | GDK_ACTION_COPY); | |
| 4350 | gtk_drag_dest_set(pane, | |
| 4351 | GTK_DEST_DEFAULT_MOTION | | |
| 4352 | GTK_DEST_DEFAULT_DROP, | |
| 4353 | te, sizeof(te) / sizeof(GtkTargetEntry), | |
| 4354 | GDK_ACTION_COPY); | |
| 4355 | gtk_drag_dest_set(gtkconv->imhtml, 0, | |
| 4356 | te, sizeof(te) / sizeof(GtkTargetEntry), | |
| 4357 | GDK_ACTION_COPY); | |
| 4358 | ||
| 4359 | gtk_drag_dest_set(gtkconv->entry, 0, | |
| 4360 | te, sizeof(te) / sizeof(GtkTargetEntry), | |
| 4361 | GDK_ACTION_COPY); | |
| 4362 | ||
| 4363 | g_signal_connect(G_OBJECT(pane), "drag_data_received", | |
| 4364 | G_CALLBACK(conv_dnd_recv), gtkconv); | |
| 4365 | g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", | |
| 4366 | G_CALLBACK(conv_dnd_recv), gtkconv); | |
| 4367 | g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", | |
| 4368 | G_CALLBACK(conv_dnd_recv), gtkconv); | |
| 4369 | ||
| 4370 | /* Setup the container for the tab. */ | |
| 4371 | gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); | |
| 4372 | g_object_set_data(G_OBJECT(tab_cont), "GaimGtkConversation", gtkconv); | |
| 4373 | gtk_container_set_border_width(GTK_CONTAINER(tab_cont), GAIM_HIG_BOX_SPACE); | |
| 4374 | gtk_container_add(GTK_CONTAINER(tab_cont), pane); | |
| 4375 | gtk_widget_show(pane); | |
| 4376 | ||
| 4377 | gtkconv->make_sound = TRUE; | |
| 4378 | ||
| 4379 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar")) | |
| 4380 | gtk_widget_show(gtkconv->toolbar); | |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4381 | else |
| 11581 | 4382 | gtk_widget_hide(gtkconv->toolbar); |
| 4383 | ||
|
12188
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
4384 | gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
4385 | gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
|
11603
aba8cfaf4755
[gaim-migrate @ 13874]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11602
diff
changeset
|
4386 | gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->imhtml), |
|
aba8cfaf4755
[gaim-migrate @ 13874]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11602
diff
changeset
|
4387 | gaim_account_get_protocol_name(conv->account)); |
| 11581 | 4388 | |
| 4389 | g_signal_connect_swapped(G_OBJECT(pane), "focus", | |
| 4390 | G_CALLBACK(gtk_widget_grab_focus), | |
| 4391 | gtkconv->entry); | |
| 4392 | ||
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4393 | if (hidden) |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4394 | gaim_gtk_conv_window_add_gtkconv(hidden_convwin, gtkconv); |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4395 | else |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4396 | gaim_gtkconv_placement_place(gtkconv); |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
4397 | |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
4398 | if (nick_colors == NULL) { |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
4399 | nbr_nick_colors = NUM_NICK_COLORS; |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
4400 | nick_colors = generate_nick_colors(&nbr_nick_colors, gtk_widget_get_style(gtkconv->imhtml)->base[GTK_STATE_NORMAL]); |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
4401 | } |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4402 | } |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4403 | |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4404 | static void |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4405 | gaim_gtkconv_new_hidden(GaimConversation *conv) |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4406 | { |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4407 | private_gtkconv_new(conv, TRUE); |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4408 | } |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4409 | |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4410 | void |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4411 | gaim_gtkconv_new(GaimConversation *conv) |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4412 | { |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4413 | private_gtkconv_new(conv, FALSE); |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4414 | } |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4415 | |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4416 | static void |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4417 | received_im_msg_cb(GaimAccount *account, char *sender, char *message, |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4418 | GaimConversation *conv, int flags) |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4419 | { |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4420 | GaimConversationUiOps *ui_ops = gaim_gtk_conversations_get_conv_ui_ops(); |
|
12719
acf70b8c30b2
[gaim-migrate @ 15063]
Richard Laager <rlaager@pidgin.im>
parents:
12710
diff
changeset
|
4421 | if (conv != NULL) |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4422 | return; |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4423 | |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4424 | /* create hidden conv if hide_new pref is always */ |
|
12719
acf70b8c30b2
[gaim-migrate @ 15063]
Richard Laager <rlaager@pidgin.im>
parents:
12710
diff
changeset
|
4425 | if (strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/im/hide_new"), "always") == 0) |
|
acf70b8c30b2
[gaim-migrate @ 15063]
Richard Laager <rlaager@pidgin.im>
parents:
12710
diff
changeset
|
4426 | { |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4427 | ui_ops->create_conversation = gaim_gtkconv_new_hidden; |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4428 | gaim_conversation_new(GAIM_CONV_TYPE_IM, account, sender); |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4429 | ui_ops->create_conversation = gaim_gtkconv_new; |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4430 | return; |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4431 | } |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4432 | |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4433 | /* create hidden conv if hide_new pref is away and account is away */ |
|
12719
acf70b8c30b2
[gaim-migrate @ 15063]
Richard Laager <rlaager@pidgin.im>
parents:
12710
diff
changeset
|
4434 | if (strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/im/hide_new"), "away") == 0 && |
|
acf70b8c30b2
[gaim-migrate @ 15063]
Richard Laager <rlaager@pidgin.im>
parents:
12710
diff
changeset
|
4435 | !gaim_status_is_available(gaim_account_get_active_status(account))) |
|
acf70b8c30b2
[gaim-migrate @ 15063]
Richard Laager <rlaager@pidgin.im>
parents:
12710
diff
changeset
|
4436 | { |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4437 | ui_ops->create_conversation = gaim_gtkconv_new_hidden; |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4438 | gaim_conversation_new(GAIM_CONV_TYPE_IM, account, sender); |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4439 | ui_ops->create_conversation = gaim_gtkconv_new; |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4440 | return; |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
4441 | } |
| 11581 | 4442 | } |
| 4443 | ||
| 4359 | 4444 | static void |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4445 | gaim_gtkconv_destroy(GaimConversation *conv) |
| 4359 | 4446 | { |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4447 | GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4359 | 4448 | |
| 10810 | 4449 | gtkconv->convs = g_list_remove(gtkconv->convs, conv); |
| 4450 | /* Don't destroy ourselves until all our convos are gone */ | |
| 4451 | if (gtkconv->convs) | |
| 4452 | return; | |
| 11508 | 4453 | |
| 11581 | 4454 | gaim_gtk_conv_window_remove_gtkconv(gtkconv->win, gtkconv); |
| 4455 | ||
|
9504
42685167dd38
[gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents:
9498
diff
changeset
|
4456 | /* If the "Save Conversation" or "Save Icon" dialogs are open then close them */ |
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
4457 | gaim_request_close_with_handle(gtkconv); |
|
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
4458 | gaim_notify_close_with_handle(gtkconv); |
| 4359 | 4459 | |
|
4571
57ca8feb5fd3
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4460 | gtk_widget_destroy(gtkconv->tab_cont); |
| 4892 | 4461 | g_object_unref(gtkconv->tab_cont); |
|
4571
57ca8feb5fd3
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4462 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
4463 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { |
|
4755
64ee7fb9cdba
[gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents:
4748
diff
changeset
|
4464 | if (gtkconv->u.im->icon_timer != 0) |
|
64ee7fb9cdba
[gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents:
4748
diff
changeset
|
4465 | g_source_remove(gtkconv->u.im->icon_timer); |
|
64ee7fb9cdba
[gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents:
4748
diff
changeset
|
4466 | |
| 4359 | 4467 | if (gtkconv->u.im->anim != NULL) |
| 4793 | 4468 | g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 4359 | 4469 | |
| 4470 | g_free(gtkconv->u.im); | |
| 11581 | 4471 | } else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4472 | gaim_signals_disconnect_by_handle(gtkconv->u.chat); |
| 4359 | 4473 | g_free(gtkconv->u.chat); |
| 4474 | } | |
| 4475 | ||
| 4633 | 4476 | gtk_object_sink(GTK_OBJECT(gtkconv->tooltips)); |
| 4477 | ||
| 4359 | 4478 | g_free(gtkconv); |
| 4479 | } | |
| 4480 | ||
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4481 | |
| 4359 | 4482 | static void |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4483 | gaim_gtkconv_write_im(GaimConversation *conv, const char *who, |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6877
diff
changeset
|
4484 | const char *message, GaimMessageFlags flags, |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4485 | time_t mtime) |
| 4359 | 4486 | { |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4487 | GaimGtkConversation *gtkconv; |
| 4359 | 4488 | |
| 4489 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4490 | |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4491 | if (conv != gtkconv->active_conv && |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4492 | flags & GAIM_MESSAGE_ACTIVE_ONLY) |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4493 | { |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4494 | /* Plugins that want these messages suppressed should be |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4495 | * calling gaim_conv_im_write(), so they get suppressed here, |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4496 | * before being written to the log. */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4497 | gaim_debug_info("gtkconv", |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4498 | "Suppressing message for an inactive conversation in gaim_gtkconv_write_im()\n"); |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4499 | return; |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4500 | } |
| 4359 | 4501 | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6877
diff
changeset
|
4502 | gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4503 | } |
| 4504 | ||
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4505 | /* The callback for an event on a link tag. */ |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4506 | static gboolean buddytag_event(GtkTextTag *tag, GObject *imhtml, |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4507 | GdkEvent *event, GtkTextIter *arg2, gpointer data) { |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4508 | if (event->type == GDK_BUTTON_PRESS |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4509 | || event->type == GDK_2BUTTON_PRESS) { |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4510 | GdkEventButton *btn_event = (GdkEventButton*) event; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4511 | GaimConversation *conv = data; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4512 | char *buddyname; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4513 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4514 | /* strlen("BUDDY ") == 6 */ |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4515 | g_return_val_if_fail((tag->name != NULL) |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4516 | && (strlen(tag->name) > 6), FALSE); |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4517 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4518 | buddyname = (tag->name) + 6; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4519 | |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4520 | if (btn_event->button == 2 |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4521 | && event->type == GDK_2BUTTON_PRESS) { |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4522 | chat_do_info(GAIM_GTK_CONVERSATION(conv), buddyname); |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4523 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4524 | return TRUE; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4525 | } else if (btn_event->button == 3 |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4526 | && event->type == GDK_BUTTON_PRESS) { |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4527 | GtkTextIter start, end; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4528 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4529 | /* we shouldn't display the popup |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4530 | * if the user has selected something: */ |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4531 | if (!gtk_text_buffer_get_selection_bounds( |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4532 | gtk_text_iter_get_buffer(arg2), |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4533 | &start, &end)) { |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4534 | GtkWidget *menu = NULL; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4535 | GaimConnection *gc = |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4536 | gaim_conversation_get_gc(conv); |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4537 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4538 | |
|
13506
056604f3537f
[gaim-migrate @ 15881]
Richard Laager <rlaager@pidgin.im>
parents:
13505
diff
changeset
|
4539 | menu = create_chat_menu(conv, buddyname, gc); |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4540 | gtk_menu_popup(GTK_MENU(menu), NULL, NULL, |
|
10999
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4541 | NULL, GTK_WIDGET(imhtml), |
|
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4542 | btn_event->button, |
|
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4543 | btn_event->time); |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4544 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4545 | /* Don't propagate the event any further */ |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4546 | return TRUE; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4547 | } |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4548 | } |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4549 | } |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4550 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4551 | return FALSE; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4552 | } |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4553 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4554 | static GtkTextTag *get_buddy_tag(GaimConversation *conv, const char *who) { |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4555 | GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4556 | GtkTextTag *buddytag; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4557 | /* strlen("BUDDY ") == 6 */ |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4558 | gchar str[strlen(who) + 7]; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4559 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4560 | g_snprintf(str, sizeof(str), "BUDDY %s", who); |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4561 | str[sizeof(str)] = '\0'; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4562 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4563 | buddytag = gtk_text_tag_table_lookup( |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4564 | gtk_text_buffer_get_tag_table( |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4565 | GTK_IMHTML(gtkconv->imhtml)->text_buffer), str); |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4566 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4567 | if (buddytag == NULL) { |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4568 | buddytag = gtk_text_buffer_create_tag( |
| 11096 | 4569 | GTK_IMHTML(gtkconv->imhtml)->text_buffer, str, NULL); |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4570 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4571 | g_signal_connect(G_OBJECT(buddytag), "event", |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4572 | G_CALLBACK(buddytag_event), conv); |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4573 | } |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4574 | |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4575 | return buddytag; |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4576 | } |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4577 | |
| 4359 | 4578 | static void |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4579 | gaim_gtkconv_write_conv(GaimConversation *conv, const char *name, const char *alias, |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6877
diff
changeset
|
4580 | const char *message, GaimMessageFlags flags, |
| 4359 | 4581 | time_t mtime) |
| 4582 | { | |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4583 | GaimGtkConversation *gtkconv; |
| 11581 | 4584 | GaimGtkWindow *win; |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4585 | GaimConnection *gc; |
|
11485
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4586 | GaimAccount *account; |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4587 | GaimPluginProtocolInfo *prpl_info; |
| 4359 | 4588 | int gtk_font_options = 0; |
| 12553 | 4589 | int gtk_font_options_all = 0; |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4590 | int max_scrollback_lines; |
|
11224
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4591 | int line_count; |
| 4359 | 4592 | char buf2[BUF_LONG]; |
|
12737
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4593 | char *mdate; |
| 4359 | 4594 | char color[10]; |
| 4595 | char *str; | |
| 4596 | char *with_font_tag; | |
| 4896 | 4597 | char *sml_attrib = NULL; |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4598 | size_t length; |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4599 | GaimConversationType type; |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4600 | char *displaying; |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4601 | gboolean plugin_return; |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4602 | struct tm tm; |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4603 | |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4604 | g_return_if_fail(conv != NULL); |
| 4359 | 4605 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4606 | g_return_if_fail(gtkconv != NULL); |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4607 | |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4608 | if (conv != gtkconv->active_conv) |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4609 | { |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4610 | if (flags & GAIM_MESSAGE_ACTIVE_ONLY) |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4611 | { |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4612 | /* Unless this had GAIM_MESSAGE_NO_LOG, this message |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4613 | * was logged. Plugin writers: if this isn't what |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4614 | * you wanted, call gaim_conv_im_write() instead of |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4615 | * gaim_conversation_write(). */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4616 | gaim_debug_info("gtkconv", |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4617 | "Suppressing message for an inactive conversation in gaim_gtkconv_write_conv()\n"); |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4618 | return; |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4619 | } |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4620 | |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4621 | /* Set the active conversation to the one that just messaged us. */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4622 | /* TODO: consider not doing this if the account is offline or something */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4623 | if (flags & (GAIM_MESSAGE_SEND | GAIM_MESSAGE_RECV)) |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4624 | gaim_gtkconv_switch_active_conversation(conv); |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4625 | } |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4626 | |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4627 | type = gaim_conversation_get_type(conv); |
|
11485
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4628 | account = gaim_conversation_get_account(conv); |
|
13420
c734909b3d43
[gaim-migrate @ 15794]
Richard Laager <rlaager@pidgin.im>
parents:
13417
diff
changeset
|
4629 | g_return_if_fail(account != NULL); |
|
c734909b3d43
[gaim-migrate @ 15794]
Richard Laager <rlaager@pidgin.im>
parents:
13417
diff
changeset
|
4630 | gc = gaim_account_get_connection(account); |
|
c734909b3d43
[gaim-migrate @ 15794]
Richard Laager <rlaager@pidgin.im>
parents:
13417
diff
changeset
|
4631 | g_return_if_fail(gc != NULL); |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4632 | |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4633 | displaying = g_strdup(message); |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4634 | plugin_return = GPOINTER_TO_INT(gaim_signal_emit_return_1( |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4635 | gaim_gtk_conversations_get_handle(), (type == GAIM_CONV_TYPE_IM ? |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4636 | "displaying-im-msg" : "displaying-chat-msg"), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
4637 | account, name, &displaying, conv, flags)); |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4638 | if (plugin_return) |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4639 | { |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4640 | g_free(displaying); |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4641 | return; |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4642 | } |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4643 | message = displaying; |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4644 | length = strlen(message) + 1; |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
4645 | |
| 11581 | 4646 | win = gtkconv->win; |
|
11485
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4647 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4648 | |
|
11224
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4649 | line_count = gtk_text_buffer_get_line_count( |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4650 | gtk_text_view_get_buffer(GTK_TEXT_VIEW( |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4651 | gtkconv->imhtml))); |
|
11227
654fbcc31bf4
[gaim-migrate @ 13365]
Daniel Atallah <datallah@pidgin.im>
parents:
11224
diff
changeset
|
4652 | |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4653 | max_scrollback_lines = gaim_prefs_get_int( |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4654 | "/gaim/gtk/conversations/scrollback_lines"); |
|
11224
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4655 | /* If we're sitting at more than 100 lines more than the |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4656 | max scrollback, trim down to max scrollback */ |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4657 | if (max_scrollback_lines > 0 |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4658 | && line_count > (max_scrollback_lines + 100)) { |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4659 | GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4660 | GTK_TEXT_VIEW(gtkconv->imhtml)); |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4661 | GtkTextIter start, end; |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4662 | |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4663 | gtk_text_buffer_get_start_iter(text_buffer, &start); |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4664 | gtk_text_buffer_get_iter_at_line(text_buffer, &end, |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4665 | (line_count - max_scrollback_lines)); |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4666 | gtk_imhtml_delete(GTK_IMHTML(gtkconv->imhtml), &start, &end); |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4667 | } |
|
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
4668 | |
| 12939 | 4669 | if (type == GAIM_CONV_TYPE_CHAT) |
| 4670 | { | |
| 4671 | /* Create anchor for user */ | |
| 4672 | GtkTextIter iter; | |
| 4673 | char *tmp = g_strconcat("user:", name, NULL); | |
| 4674 | ||
| 4675 | gtk_text_buffer_get_end_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml)), &iter); | |
| 4676 | gtk_text_buffer_create_mark(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml)), | |
| 4677 | tmp, &iter, TRUE); | |
| 4678 | g_free(tmp); | |
| 4679 | } | |
| 4680 | ||
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4681 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_smooth_scrolling")) |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4682 | gtk_font_options_all |= GTK_IMHTML_USE_SMOOTHSCROLLING; |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4683 | |
| 8677 | 4684 | if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml)))) |
| 12553 | 4685 | gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", gtk_font_options_all); |
| 8677 | 4686 | |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4687 | tm = *(localtime(&mtime)); |
|
12737
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4688 | mdate = gaim_signal_emit_return_1(gaim_gtk_conversations_get_handle(), |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4689 | "conversation-timestamp", |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4690 | conv, &tm); |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4691 | if (mdate == NULL) |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4692 | { |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4693 | if (time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */ |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13091
diff
changeset
|
4694 | mdate = g_strdup(gaim_date_format_long(&tm)); |
|
12737
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4695 | else |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13091
diff
changeset
|
4696 | mdate = g_strdup(gaim_time_format(&tm)); |
|
12737
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4697 | } |
| 4359 | 4698 | |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4699 | sml_attrib = g_strdup_printf("sml=\"%s\"", gaim_account_get_protocol_name(account)); |
| 7440 | 4700 | |
|
10503
6f6f0b990441
[gaim-migrate @ 11795]
Mark Doliner <markdoliner@pidgin.im>
parents:
10500
diff
changeset
|
4701 | gtk_font_options |= GTK_IMHTML_NO_COMMENTS; |
| 4359 | 4702 | |
|
12064
f5ff969af2ce
[gaim-migrate @ 14359]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12061
diff
changeset
|
4703 | if ((flags & GAIM_MESSAGE_RECV) && |
|
f5ff969af2ce
[gaim-migrate @ 14359]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12061
diff
changeset
|
4704 | !gaim_prefs_get_bool("/gaim/gtk/conversations/show_incoming_formatting")) |
|
11485
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4705 | gtk_font_options |= GTK_IMHTML_NO_COLOURS | GTK_IMHTML_NO_FONTS | GTK_IMHTML_NO_SIZES | GTK_IMHTML_NO_FORMATTING; |
| 4359 | 4706 | |
| 7956 | 4707 | /* this is gonna crash one day, I can feel it. */ |
| 4708 | if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(conv->account)))->options & | |
| 7431 | 4709 | OPT_PROTO_USE_POINTSIZE) { |
|
10503
6f6f0b990441
[gaim-migrate @ 11795]
Mark Doliner <markdoliner@pidgin.im>
parents:
10500
diff
changeset
|
4710 | gtk_font_options |= GTK_IMHTML_USE_POINTSIZE; |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4711 | } |
| 4359 | 4712 | |
| 12553 | 4713 | |
|
10737
c7759d698996
[gaim-migrate @ 12339]
Mark Doliner <markdoliner@pidgin.im>
parents:
10732
diff
changeset
|
4714 | /* TODO: These colors should not be hardcoded so log.c can use them */ |
|
6621
2a18ef3e5224
[gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents:
6495
diff
changeset
|
4715 | if (flags & GAIM_MESSAGE_SYSTEM) { |
| 4359 | 4716 | g_snprintf(buf2, sizeof(buf2), |
| 8690 | 4717 | "<FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT>", |
|
10854
f40fd2c1bc21
[gaim-migrate @ 12529]
Daniel Atallah <datallah@pidgin.im>
parents:
10849
diff
changeset
|
4718 | sml_attrib ? sml_attrib : "", mdate, message); |
| 7440 | 4719 | |
| 12553 | 4720 | gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all); |
| 7440 | 4721 | |
| 8722 | 4722 | } else if (flags & GAIM_MESSAGE_ERROR) { |
| 4723 | g_snprintf(buf2, sizeof(buf2), | |
| 9627 | 4724 | "<FONT COLOR=\"#ff0000\"><FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT></FONT>", |
|
10854
f40fd2c1bc21
[gaim-migrate @ 12529]
Daniel Atallah <datallah@pidgin.im>
parents:
10849
diff
changeset
|
4725 | sml_attrib ? sml_attrib : "", mdate, message); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4726 | |
| 12553 | 4727 | gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all); |
| 8962 | 4728 | |
| 7431 | 4729 | } else if (flags & GAIM_MESSAGE_NO_LOG) { |
|
10884
672f44600655
[gaim-migrate @ 12582]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10883
diff
changeset
|
4730 | g_snprintf(buf2, BUF_LONG, |
| 8690 | 4731 | "<B><FONT %s COLOR=\"#777777\">%s</FONT></B>", |
|
10854
f40fd2c1bc21
[gaim-migrate @ 12529]
Daniel Atallah <datallah@pidgin.im>
parents:
10849
diff
changeset
|
4732 | sml_attrib ? sml_attrib : "", message); |
| 7440 | 4733 | |
| 12553 | 4734 | gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all); |
|
10346
9c65a007b4a5
[gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10320
diff
changeset
|
4735 | } else if (flags & GAIM_MESSAGE_RAW) { |
| 12553 | 4736 | gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), message, gtk_font_options_all); |
|
10346
9c65a007b4a5
[gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10320
diff
changeset
|
4737 | } else { |
| 4895 | 4738 | char *new_message = g_memdup(message, length); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4739 | char *alias_escaped = (alias ? g_markup_escape_text(alias, strlen(alias)) : g_strdup("")); |
|
10999
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4740 | /* The initial offset is to deal with |
|
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4741 | * escaped entities making the string longer */ |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4742 | int tag_start_offset = alias ? (strlen(alias_escaped) - strlen(alias)) : 0; |
|
10999
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4743 | int tag_end_offset = 0; |
|
12618
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4744 | GtkSmileyTree *tree = NULL; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4745 | GHashTable *smiley_data = NULL; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4746 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4747 | if (flags & GAIM_MESSAGE_SEND) |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4748 | { |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4749 | /* Temporarily revert to the original smiley-data to avoid showing up |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4750 | * custom smileys of the buddy when sending message |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4751 | */ |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4752 | tree = GTK_IMHTML(gtkconv->imhtml)->default_smilies; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4753 | GTK_IMHTML(gtkconv->imhtml)->default_smilies = |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4754 | GTK_IMHTML(gtkconv->entry)->default_smilies; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4755 | smiley_data = GTK_IMHTML(gtkconv->imhtml)->smiley_data; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4756 | GTK_IMHTML(gtkconv->imhtml)->smiley_data = GTK_IMHTML(gtkconv->entry)->smiley_data; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4757 | } |
| 7440 | 4758 | |
|
6621
2a18ef3e5224
[gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents:
6495
diff
changeset
|
4759 | if (flags & GAIM_MESSAGE_WHISPER) { |
| 4359 | 4760 | str = g_malloc(1024); |
| 7440 | 4761 | |
| 4359 | 4762 | /* If we're whispering, it's not an autoresponse. */ |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
4763 | if (gaim_message_meify(new_message, -1 )) { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4764 | g_snprintf(str, 1024, "***%s", alias_escaped); |
| 4359 | 4765 | strcpy(color, "#6C2585"); |
|
10999
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4766 | tag_start_offset += 3; |
| 4359 | 4767 | } |
| 4768 | else { | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4769 | g_snprintf(str, 1024, "*%s*:", alias_escaped); |
|
10999
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4770 | tag_start_offset += 1; |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4771 | tag_end_offset = 2; |
| 4359 | 4772 | strcpy(color, "#00FF00"); |
| 4773 | } | |
| 7440 | 4774 | } |
| 4359 | 4775 | else { |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10503
diff
changeset
|
4776 | if (gaim_message_meify(new_message, -1)) { |
| 4359 | 4777 | str = g_malloc(1024); |
| 7440 | 4778 | |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4779 | if (flags & GAIM_MESSAGE_AUTO_RESP) { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4780 | g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, alias_escaped); |
|
10999
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4781 | tag_start_offset += 4 |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4782 | + strlen(AUTO_RESPONSE); |
|
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4783 | } else { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4784 | g_snprintf(str, 1024, "***%s", alias_escaped); |
|
10999
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4785 | tag_start_offset += 3; |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4786 | } |
| 7440 | 4787 | |
|
6621
2a18ef3e5224
[gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents:
6495
diff
changeset
|
4788 | if (flags & GAIM_MESSAGE_NICK) |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
4789 | strcpy(color, HIGHLIGHT_COLOR); |
| 4359 | 4790 | else |
| 4791 | strcpy(color, "#062585"); | |
| 4792 | } | |
| 4793 | else { | |
| 4794 | str = g_malloc(1024); | |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4795 | if (flags & GAIM_MESSAGE_AUTO_RESP) { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4796 | g_snprintf(str, 1024, "%s %s", alias_escaped, AUTO_RESPONSE); |
|
10999
0084fffff214
[gaim-migrate @ 12841]
Daniel Atallah <datallah@pidgin.im>
parents:
10971
diff
changeset
|
4797 | tag_start_offset += 1 |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4798 | + strlen(AUTO_RESPONSE); |
|
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4799 | } else { |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4800 | g_snprintf(str, 1024, "%s:", alias_escaped); |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4801 | tag_end_offset = 1; |
|
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4802 | } |
|
6621
2a18ef3e5224
[gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents:
6495
diff
changeset
|
4803 | if (flags & GAIM_MESSAGE_NICK) |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
4804 | strcpy(color, HIGHLIGHT_COLOR); |
|
6621
2a18ef3e5224
[gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents:
6495
diff
changeset
|
4805 | else if (flags & GAIM_MESSAGE_RECV) { |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
4806 | if (type == GAIM_CONV_TYPE_CHAT) { |
|
12579
2cca132d1426
[gaim-migrate @ 14904]
Richard Laager <rlaager@pidgin.im>
parents:
12553
diff
changeset
|
4807 | GdkColor *col = get_nick_color(gtkconv, name); |
|
10346
9c65a007b4a5
[gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10320
diff
changeset
|
4808 | |
| 10108 | 4809 | g_snprintf(color, sizeof(color), "#%02X%02X%02X", |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4810 | col->red >> 8, col->green >> 8, col->blue >> 8); |
| 10108 | 4811 | } else |
| 7854 | 4812 | strcpy(color, RECV_COLOR); |
| 4359 | 4813 | } |
|
6621
2a18ef3e5224
[gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents:
6495
diff
changeset
|
4814 | else if (flags & GAIM_MESSAGE_SEND) |
| 7854 | 4815 | strcpy(color, SEND_COLOR); |
|
10892
83c6064e1eab
[gaim-migrate @ 12603]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10884
diff
changeset
|
4816 | else { |
|
83c6064e1eab
[gaim-migrate @ 12603]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10884
diff
changeset
|
4817 | gaim_debug_error("gtkconv", "message missing flags\n"); |
|
83c6064e1eab
[gaim-migrate @ 12603]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10884
diff
changeset
|
4818 | strcpy(color, "#000000"); |
|
83c6064e1eab
[gaim-migrate @ 12603]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10884
diff
changeset
|
4819 | } |
| 4359 | 4820 | } |
| 4821 | } | |
|
10892
83c6064e1eab
[gaim-migrate @ 12603]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10884
diff
changeset
|
4822 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4823 | if(alias_escaped) |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4824 | g_free(alias_escaped); |
| 11508 | 4825 | |
|
11485
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4826 | /* Are we in a chat where we can tell which users are buddies? */ |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4827 | if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME) && |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4828 | gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) { |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4829 | |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4830 | /* Bold buddies to make them stand out from non-buddies. */ |
| 11581 | 4831 | if (flags & GAIM_MESSAGE_SEND || |
|
11530
ae577fe73264
[gaim-migrate @ 13779]
Richard Laager <rlaager@pidgin.im>
parents:
11525
diff
changeset
|
4832 | flags & GAIM_MESSAGE_NICK || |
|
ae577fe73264
[gaim-migrate @ 13779]
Richard Laager <rlaager@pidgin.im>
parents:
11525
diff
changeset
|
4833 | gaim_find_buddy(account, name) != NULL) { |
|
11485
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4834 | g_snprintf(buf2, BUF_LONG, |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4835 | "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>" |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4836 | "<B>%s</B></FONT> ", |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4837 | color, sml_attrib ? sml_attrib : "", mdate, str); |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4838 | } else { |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4839 | g_snprintf(buf2, BUF_LONG, |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4840 | "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>" |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4841 | "%s</FONT> ", |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4842 | color, sml_attrib ? sml_attrib : "", mdate, str); |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4843 | |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4844 | } |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4845 | } else { |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4846 | /* Bold everyone's name to make the name stand out from the message. */ |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4847 | g_snprintf(buf2, BUF_LONG, |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4848 | "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>" |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4849 | "<B>%s</B></FONT> ", |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4850 | color, sml_attrib ? sml_attrib : "", mdate, str); |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4851 | } |
| 7440 | 4852 | |
| 12553 | 4853 | gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all); |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4854 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4855 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT && |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4856 | !(flags & GAIM_MESSAGE_SEND)) { |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4857 | |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4858 | GtkTextIter start, end; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4859 | GtkTextTag *buddytag = get_buddy_tag(conv, name); |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4860 | |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4861 | gtk_text_buffer_get_end_iter( |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4862 | GTK_IMHTML(gtkconv->imhtml)->text_buffer, |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4863 | &end); |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4864 | gtk_text_iter_backward_chars(&end, |
|
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4865 | tag_end_offset + 1); |
|
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4866 | |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4867 | gtk_text_buffer_get_end_iter( |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4868 | GTK_IMHTML(gtkconv->imhtml)->text_buffer, |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4869 | &start); |
|
10964
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4870 | gtk_text_iter_backward_chars(&start, |
|
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4871 | strlen(str) + 1 - tag_start_offset); |
|
e4d763dea484
[gaim-migrate @ 12771]
Daniel Atallah <datallah@pidgin.im>
parents:
10961
diff
changeset
|
4872 | |
|
10961
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4873 | gtk_text_buffer_apply_tag( |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4874 | GTK_IMHTML(gtkconv->imhtml)->text_buffer, |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4875 | buddytag, &start, &end); |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4876 | } |
|
cc6f60ec20a4
[gaim-migrate @ 12764]
Daniel Atallah <datallah@pidgin.im>
parents:
10953
diff
changeset
|
4877 | |
| 4359 | 4878 | g_free(str); |
| 4879 | ||
| 4895 | 4880 | if(gc){ |
| 4896 | 4881 | char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : ""); |
| 4895 | 4882 | char *post = "</font>"; |
| 4883 | int pre_len = strlen(pre); | |
| 4884 | int post_len = strlen(post); | |
| 7440 | 4885 | |
| 4895 | 4886 | with_font_tag = g_malloc(length + pre_len + post_len + 1); |
| 7440 | 4887 | |
| 4895 | 4888 | strcpy(with_font_tag, pre); |
| 4889 | memcpy(with_font_tag + pre_len, new_message, length); | |
| 4890 | strcpy(with_font_tag + pre_len + length, post); | |
| 7440 | 4891 | |
| 4895 | 4892 | length += pre_len + post_len; |
| 4893 | g_free(pre); | |
| 4894 | } | |
| 4608 | 4895 | else |
| 4895 | 4896 | with_font_tag = g_memdup(new_message, length); |
| 7440 | 4897 | |
| 8962 | 4898 | gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), |
| 12553 | 4899 | with_font_tag, gtk_font_options | gtk_font_options_all); |
| 7440 | 4900 | |
|
12618
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4901 | if (flags & GAIM_MESSAGE_SEND) |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4902 | { |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4903 | /* Restore the smiley-data */ |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4904 | GTK_IMHTML(gtkconv->imhtml)->default_smilies = tree; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4905 | GTK_IMHTML(gtkconv->imhtml)->smiley_data = smiley_data; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4906 | } |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
4907 | |
| 7440 | 4908 | g_free(with_font_tag); |
|
7447
4876aeb16c60
[gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents:
7446
diff
changeset
|
4909 | g_free(new_message); |
| 7440 | 4910 | } |
| 4911 | ||
|
12737
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4912 | g_free(mdate); |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
4913 | g_free(sml_attrib); |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4914 | |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4915 | /* Tab highlighting stuff */ |
|
13139
e4e19bdb8b6e
[gaim-migrate @ 15500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13132
diff
changeset
|
4916 | if (!(flags & GAIM_MESSAGE_SEND) && !gaim_gtkconv_has_focus(conv)) |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4917 | { |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4918 | GaimUnseenState unseen = GAIM_UNSEEN_NONE; |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4919 | |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
4920 | if ((flags & GAIM_MESSAGE_NICK) == GAIM_MESSAGE_NICK) |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4921 | unseen = GAIM_UNSEEN_NICK; |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
4922 | else if (((flags & GAIM_MESSAGE_SYSTEM) == GAIM_MESSAGE_SYSTEM) || |
|
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
4923 | ((flags & GAIM_MESSAGE_ERROR) == GAIM_MESSAGE_ERROR)) |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4924 | unseen = GAIM_UNSEEN_EVENT; |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
4925 | else if ((flags & GAIM_MESSAGE_NO_LOG) == GAIM_MESSAGE_NO_LOG) |
|
12132
7d6ad34fff3a
[gaim-migrate @ 14432]
Richard Laager <rlaager@pidgin.im>
parents:
12131
diff
changeset
|
4926 | unseen = GAIM_UNSEEN_NO_LOG; |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4927 | else |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4928 | unseen = GAIM_UNSEEN_TEXT; |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4929 | |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4930 | gtkconv_set_unseen(gtkconv, unseen); |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
4931 | } |
|
12902
de9e0cc3feab
[gaim-migrate @ 15255]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12899
diff
changeset
|
4932 | |
|
de9e0cc3feab
[gaim-migrate @ 15255]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12899
diff
changeset
|
4933 | gaim_signal_emit(gaim_gtk_conversations_get_handle(), |
|
de9e0cc3feab
[gaim-migrate @ 15255]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12899
diff
changeset
|
4934 | (type == GAIM_CONV_TYPE_IM ? "displayed-im-msg" : "displayed-chat-msg"), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
4935 | account, name, message, conv, flags); |
|
12902
de9e0cc3feab
[gaim-migrate @ 15255]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12899
diff
changeset
|
4936 | g_free(displaying); |
| 4359 | 4937 | } |
| 4938 | ||
| 4939 | static void | |
|
12463
8d8c5436803a
[gaim-migrate @ 14773]
Evan Schoenberg <evands@pidgin.im>
parents:
12455
diff
changeset
|
4940 | gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users, GList *flags, GList *aliases, gboolean new_arrivals) |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4941 | { |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4942 | GaimConvChat *chat; |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4943 | GaimGtkConversation *gtkconv; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4944 | GaimGtkChatPane *gtkchat; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4945 | GList *l; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4946 | GList *ll; |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
4947 | GList *lll; |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4948 | char tmp[BUF_LONG]; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4949 | int num_users; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4950 | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4951 | chat = GAIM_CONV_CHAT(conv); |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4952 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4953 | gtkchat = gtkconv->u.chat; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4954 | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4955 | num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4956 | |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4957 | g_snprintf(tmp, sizeof(tmp), |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4958 | ngettext("%d person in room", "%d people in room", |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4959 | num_users), |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4960 | num_users); |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4961 | |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4962 | gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4963 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4964 | l = users; |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
4965 | ll = flags; |
|
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
4966 | lll = aliases; |
|
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
4967 | while (l != NULL && ll != NULL && lll != NULL) { |
|
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
4968 | add_chat_buddy_common(conv, (const char *)l->data, GPOINTER_TO_INT(ll->data), (const char *)lll->data, NULL); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4969 | l = l->next; |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
4970 | ll = ll->next; |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
4971 | lll = lll->next; |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4972 | } |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4973 | } |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4974 | |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4975 | static void |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4976 | gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name, |
|
11485
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
4977 | const char *new_name, const char *new_alias) |
| 4359 | 4978 | { |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4979 | GaimConvChat *chat; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4980 | GaimGtkConversation *gtkconv; |
|
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4981 | GaimGtkChatPane *gtkchat; |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
4982 | GaimConvChatBuddyFlags flags; |
| 4359 | 4983 | GtkTreeIter iter; |
| 4984 | GtkTreeModel *model; | |
| 4985 | int f = 1; | |
| 4986 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4987 | chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4988 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4989 | gtkchat = gtkconv->u.chat; | |
| 4990 | ||
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4991 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4992 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4993 | if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4994 | return; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4995 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4996 | while (f != 0) { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4997 | char *val; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
4998 | |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
4999 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &val, CHAT_USERS_FLAGS_COLUMN, &flags, -1); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5000 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5001 | if (!gaim_utf8_strcasecmp(old_name, val)) { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5002 | gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5003 | g_free(val); |
| 4359 | 5004 | break; |
| 5005 | } | |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5006 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5007 | f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5008 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5009 | g_free(val); |
| 4359 | 5010 | } |
| 5011 | ||
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5012 | if (!gaim_conv_chat_find_user(chat, old_name)) |
| 4359 | 5013 | return; |
| 5014 | ||
|
11485
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
5015 | g_return_if_fail(new_alias != NULL); |
|
fe334b13d1d0
[gaim-migrate @ 13727]
Peter Lawler <pidgin@bleeter.id.au>
parents:
11480
diff
changeset
|
5016 | |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
5017 | add_chat_buddy_common(conv, new_name, flags, new_alias, old_name); |
| 4359 | 5018 | } |
| 5019 | ||
| 5020 | static void | |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5021 | gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users) |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5022 | { |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5023 | GaimConvChat *chat; |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5024 | GaimGtkConversation *gtkconv; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5025 | GaimGtkChatPane *gtkchat; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5026 | GtkTreeIter iter; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5027 | GtkTreeModel *model; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5028 | GList *l; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5029 | char tmp[BUF_LONG]; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5030 | int num_users; |
| 8256 | 5031 | gboolean f; |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5032 | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5033 | chat = GAIM_CONV_CHAT(conv); |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5034 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5035 | gtkchat = gtkconv->u.chat; |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5036 | |
|
12982
c8a26cf625fc
[gaim-migrate @ 15335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12939
diff
changeset
|
5037 | num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5038 | |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5039 | for (l = users; l != NULL; l = l->next) { |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5040 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5041 | |
|
10812
25c595cbffe8
[gaim-migrate @ 12465]
Richard Laager <rlaager@pidgin.im>
parents:
10810
diff
changeset
|
5042 | if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5043 | continue; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5044 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5045 | do { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5046 | char *val; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5047 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5048 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5049 | CHAT_USERS_NAME_COLUMN, &val, -1); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5050 | |
|
9696
9d62e1ec5977
[gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9687
diff
changeset
|
5051 | if (!gaim_utf8_strcasecmp((char *)l->data, val)) { |
|
9d62e1ec5977
[gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9687
diff
changeset
|
5052 | #if GTK_CHECK_VERSION(2,2,0) |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5053 | f = gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
9696
9d62e1ec5977
[gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9687
diff
changeset
|
5054 | #else |
|
9d62e1ec5977
[gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9687
diff
changeset
|
5055 | gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
9d62e1ec5977
[gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9687
diff
changeset
|
5056 | f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
|
9d62e1ec5977
[gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9687
diff
changeset
|
5057 | #endif |
|
9d62e1ec5977
[gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9687
diff
changeset
|
5058 | } |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5059 | else |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5060 | f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5061 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5062 | g_free(val); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5063 | } while (f); |
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5064 | } |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5065 | |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5066 | g_snprintf(tmp, sizeof(tmp), |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5067 | ngettext("%d person in room", "%d people in room", |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5068 | num_users), num_users); |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5069 | |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5070 | gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5071 | } |
|
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5072 | |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5073 | static void |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5074 | gaim_gtkconv_chat_update_user(GaimConversation *conv, const char *user) |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5075 | { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5076 | GaimConvChat *chat; |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
5077 | GaimConvChatBuddyFlags flags; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5078 | GaimGtkConversation *gtkconv; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5079 | GaimGtkChatPane *gtkchat; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5080 | GtkTreeIter iter; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5081 | GtkTreeModel *model; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5082 | int f = 1; |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
5083 | char *alias = NULL; |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5084 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5085 | chat = GAIM_CONV_CHAT(conv); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5086 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5087 | gtkchat = gtkconv->u.chat; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5088 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5089 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5090 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5091 | if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5092 | return; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5093 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5094 | while (f != 0) { |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5095 | char *val; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5096 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5097 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &val, -1); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5098 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5099 | if (!gaim_utf8_strcasecmp(user, val)) { |
|
11500
e0965fb5bcd8
[gaim-migrate @ 13745]
Richard Laager <rlaager@pidgin.im>
parents:
11486
diff
changeset
|
5100 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_ALIAS_COLUMN, &alias, -1); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5101 | gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5102 | g_free(val); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5103 | break; |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5104 | } |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5105 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5106 | f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5107 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5108 | g_free(val); |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5109 | } |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5110 | |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5111 | if (!gaim_conv_chat_find_user(chat, user)) |
|
12982
c8a26cf625fc
[gaim-migrate @ 15335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12939
diff
changeset
|
5112 | { |
|
c8a26cf625fc
[gaim-migrate @ 15335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12939
diff
changeset
|
5113 | g_free(alias); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5114 | return; |
|
12982
c8a26cf625fc
[gaim-migrate @ 15335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12939
diff
changeset
|
5115 | } |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5116 | |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
5117 | g_return_if_fail(alias != NULL); |
|
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
5118 | |
|
11869
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
5119 | flags = gaim_conv_chat_user_get_flags(chat, user); |
|
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
5120 | |
|
e77f2f29b09d
[gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11856
diff
changeset
|
5121 | add_chat_buddy_common(conv, user, flags, alias, NULL); |
|
11454
a604c2097a6e
[gaim-migrate @ 13693]
Richard Laager <rlaager@pidgin.im>
parents:
11453
diff
changeset
|
5122 | g_free(alias); |
|
9554
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5123 | } |
|
1609ba3612c3
[gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9533
diff
changeset
|
5124 | |
| 11581 | 5125 | gboolean |
|
9260
82d7b380220a
[gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9247
diff
changeset
|
5126 | gaim_gtkconv_has_focus(GaimConversation *conv) |
|
82d7b380220a
[gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9247
diff
changeset
|
5127 | { |
| 11581 | 5128 | GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 5129 | GaimGtkWindow *win; | |
|
9260
82d7b380220a
[gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9247
diff
changeset
|
5130 | gboolean has_focus; |
|
82d7b380220a
[gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9247
diff
changeset
|
5131 | |
| 11581 | 5132 | win = gtkconv->win; |
| 5133 | ||
| 5134 | g_object_get(G_OBJECT(win->window), "has-toplevel-focus", &has_focus, NULL); | |
|
9260
82d7b380220a
[gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9247
diff
changeset
|
5135 | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
5136 | if (has_focus && gaim_gtk_conv_window_is_active_conversation(conv)) |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
5137 | return TRUE; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
5138 | |
|
11684
a9b687dd5db2
[gaim-migrate @ 13970]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11672
diff
changeset
|
5139 | return FALSE; |
|
9260
82d7b380220a
[gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9247
diff
changeset
|
5140 | } |
|
82d7b380220a
[gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9247
diff
changeset
|
5141 | |
| 12335 | 5142 | static void gaim_gtkconv_custom_smiley_allocated(GdkPixbufLoader *loader, gpointer user_data) |
| 5143 | { | |
| 5144 | GtkIMHtmlSmiley *smiley; | |
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5145 | |
| 12335 | 5146 | smiley = (GtkIMHtmlSmiley *)user_data; |
| 5147 | smiley->icon = gdk_pixbuf_loader_get_animation(loader); | |
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5148 | |
| 12335 | 5149 | if (smiley->icon) |
| 5150 | g_object_ref(G_OBJECT(smiley->icon)); | |
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5151 | #ifdef DEBUG_CUSTOM_SMILEY |
|
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5152 | gaim_debug_info("custom-smiley", "gaim_gtkconv_custom_smiley_allocated(): got GdkPixbufAnimation %p for smiley '%s'\n", smiley->icon, smiley->smile); |
| 12335 | 5153 | #endif |
| 5154 | } | |
| 5155 | ||
| 5156 | static void gaim_gtkconv_custom_smiley_closed(GdkPixbufLoader *loader, gpointer user_data) | |
| 5157 | { | |
| 5158 | GtkIMHtmlSmiley *smiley; | |
| 5159 | GtkWidget *icon = NULL; | |
| 5160 | GtkTextChildAnchor *anchor = NULL; | |
| 5161 | GSList *current = NULL; | |
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5162 | |
| 12335 | 5163 | smiley = (GtkIMHtmlSmiley *)user_data; |
| 5164 | if (!smiley->imhtml) { | |
| 5165 | #ifdef DEBUG_CUSTOM_SMILEY | |
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5166 | gaim_debug_error("custom-smiley", "gaim_gtkconv_custom_smiley_closed(): orphan smiley found: %p\n", smiley); |
| 12335 | 5167 | #endif |
| 5168 | g_object_unref(G_OBJECT(loader)); | |
| 5169 | smiley->loader = NULL; | |
| 5170 | return; | |
| 5171 | } | |
| 5172 | ||
| 5173 | for (current = smiley->anchors; current; current = g_slist_next(current)) { | |
| 5174 | ||
| 5175 | icon = gtk_image_new_from_animation(smiley->icon); | |
| 5176 | ||
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5177 | #ifdef DEBUG_CUSTOM_SMILEY |
|
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5178 | gaim_debug_info("custom-smiley", "gaim_gtkconv_custom_smiley_closed(): got GtkImage %p from GtkPixbufAnimation %p for smiley '%s'\n", |
|
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5179 | icon, smiley->icon, smiley->smile); |
| 12335 | 5180 | #endif |
| 5181 | if (icon) { | |
| 5182 | gtk_widget_show(icon); | |
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5183 | |
| 12335 | 5184 | anchor = GTK_TEXT_CHILD_ANCHOR(current->data); |
| 5185 | ||
|
13519
dbe98e8602cb
[gaim-migrate @ 15894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13506
diff
changeset
|
5186 | g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_plaintext", gaim_unescape_html(smiley->smile), g_free); |
| 12335 | 5187 | g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_htmltext", g_strdup(smiley->smile), g_free); |
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5188 | |
| 12335 | 5189 | if (smiley->imhtml) |
| 5190 | gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(smiley->imhtml), icon, anchor); | |
| 5191 | } | |
| 5192 | ||
| 5193 | } | |
| 5194 | ||
| 5195 | g_slist_free(smiley->anchors); | |
| 5196 | smiley->anchors = NULL; | |
|
12682
0530d540938c
[gaim-migrate @ 15025]
Mark Doliner <markdoliner@pidgin.im>
parents:
12660
diff
changeset
|
5197 | |
| 12335 | 5198 | g_object_unref(G_OBJECT(loader)); |
| 5199 | smiley->loader = NULL; | |
| 5200 | } | |
| 5201 | ||
| 10526 | 5202 | static gboolean |
|
12618
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5203 | add_custom_smiley_for_imhtml(GtkIMHtml *imhtml, const char *sml, const char *smile) |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5204 | { |
| 10526 | 5205 | GtkIMHtmlSmiley *smiley; |
| 5206 | GdkPixbufLoader *loader; | |
|
12618
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5207 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5208 | smiley = gtk_imhtml_smiley_get(imhtml, sml, smile); |
| 10526 | 5209 | |
| 5210 | if (smiley) { | |
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5211 | |
|
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5212 | if (!(smiley->flags & GTK_IMHTML_SMILEY_CUSTOM)) { |
|
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5213 | return FALSE; |
|
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5214 | } |
|
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5215 | |
|
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5216 | /* Close the old GdkPixbufAnimation, then create a new one for |
|
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5217 | * the smiley we are about to receive */ |
|
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5218 | g_object_unref(G_OBJECT(smiley->icon)); |
|
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5219 | |
|
12618
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5220 | /* XXX: Is it necessary to _unref the loader first? */ |
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5221 | smiley->loader = gdk_pixbuf_loader_new(); |
| 12335 | 5222 | smiley->icon = NULL; |
| 5223 | ||
| 5224 | g_signal_connect(smiley->loader, "area_prepared", G_CALLBACK(gaim_gtkconv_custom_smiley_allocated), smiley); | |
| 5225 | g_signal_connect(smiley->loader, "closed", G_CALLBACK(gaim_gtkconv_custom_smiley_closed), smiley); | |
| 5226 | ||
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5227 | return TRUE; |
| 10526 | 5228 | } |
| 5229 | ||
| 5230 | loader = gdk_pixbuf_loader_new(); | |
| 5231 | ||
| 5232 | /* this is wrong, this file ought not call g_new on GtkIMHtmlSmiley */ | |
| 5233 | /* Let gtk_imhtml have a gtk_imhtml_smiley_new function, and let | |
|
10812
25c595cbffe8
[gaim-migrate @ 12465]
Richard Laager <rlaager@pidgin.im>
parents:
10810
diff
changeset
|
5234 | GtkIMHtmlSmiley by opaque */ |
| 10526 | 5235 | smiley = g_new0(GtkIMHtmlSmiley, 1); |
| 5236 | smiley->file = NULL; | |
| 5237 | smiley->smile = g_strdup(smile); | |
| 5238 | smiley->loader = loader; | |
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5239 | smiley->flags = smiley->flags | GTK_IMHTML_SMILEY_CUSTOM; |
| 10526 | 5240 | |
| 12335 | 5241 | g_signal_connect(smiley->loader, "area_prepared", G_CALLBACK(gaim_gtkconv_custom_smiley_allocated), smiley); |
| 5242 | g_signal_connect(smiley->loader, "closed", G_CALLBACK(gaim_gtkconv_custom_smiley_closed), smiley); | |
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5243 | |
|
12618
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5244 | gtk_imhtml_associate_smiley(imhtml, sml, smiley); |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5245 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5246 | return TRUE; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5247 | } |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5248 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5249 | static gboolean |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5250 | gaim_gtkconv_custom_smiley_add(GaimConversation *conv, const char *smile, gboolean remote) |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5251 | { |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5252 | GaimGtkConversation *gtkconv; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5253 | struct smiley_list *list; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5254 | const char *sml = NULL, *conv_sml; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5255 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5256 | if (!conv || !smile || !*smile) { |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5257 | return FALSE; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5258 | } |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5259 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5260 | /* If smileys are off, return false */ |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5261 | if (gaim_gtkthemes_smileys_disabled()) |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5262 | return FALSE; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5263 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5264 | /* If possible add this smiley to the current theme. |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5265 | * The addition is only temporary: custom smilies aren't saved to disk. */ |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5266 | conv_sml = gaim_account_get_protocol_name(conv->account); |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5267 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5268 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5269 | for (list = (struct smiley_list *)current_smiley_theme->list; list; list = list->next) { |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5270 | if (!strcmp(list->sml, conv_sml)) { |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5271 | sml = list->sml; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5272 | break; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5273 | } |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5274 | } |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5275 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5276 | if (!add_custom_smiley_for_imhtml(GTK_IMHTML(gtkconv->imhtml), sml, smile)) |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5277 | return FALSE; |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5278 | |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5279 | if (!remote) /* If it's a local custom smiley, then add it for the entry */ |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5280 | if (!add_custom_smiley_for_imhtml(GTK_IMHTML(gtkconv->entry), sml, smile)) |
|
b83b6bab0703
[gaim-migrate @ 14954]
Richard Laager <rlaager@pidgin.im>
parents:
12616
diff
changeset
|
5281 | return FALSE; |
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5282 | |
| 10526 | 5283 | return TRUE; |
| 5284 | } | |
| 5285 | ||
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5286 | static void |
| 10526 | 5287 | gaim_gtkconv_custom_smiley_write(GaimConversation *conv, const char *smile, |
|
11137
cf40226ddff7
[gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents:
11115
diff
changeset
|
5288 | const guchar *data, gsize size) |
| 10526 | 5289 | { |
| 5290 | GaimGtkConversation *gtkconv; | |
| 5291 | GtkIMHtmlSmiley *smiley; | |
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5292 | GdkPixbufLoader *loader; |
| 10526 | 5293 | const char *sml; |
| 5294 | ||
| 5295 | sml = gaim_account_get_protocol_name(conv->account); | |
| 5296 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5297 | smiley = gtk_imhtml_smiley_get(GTK_IMHTML(gtkconv->imhtml), sml, smile); | |
| 5298 | ||
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5299 | if (!smiley) |
| 10526 | 5300 | return; |
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5301 | |
| 10526 | 5302 | loader = smiley->loader; |
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5303 | if (!loader) |
| 10526 | 5304 | return; |
| 5305 | ||
| 5306 | gdk_pixbuf_loader_write(loader, data, size, NULL); | |
| 5307 | } | |
| 5308 | ||
| 5309 | static void | |
| 5310 | gaim_gtkconv_custom_smiley_close(GaimConversation *conv, const char *smile) | |
| 5311 | { | |
| 5312 | GaimGtkConversation *gtkconv; | |
| 5313 | GtkIMHtmlSmiley *smiley; | |
| 5314 | GdkPixbufLoader *loader; | |
| 5315 | const char *sml; | |
| 5316 | ||
| 5317 | g_return_if_fail(conv != NULL); | |
| 5318 | g_return_if_fail(smile != NULL); | |
| 5319 | ||
| 5320 | sml = gaim_account_get_protocol_name(conv->account); | |
| 5321 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5322 | smiley = gtk_imhtml_smiley_get(GTK_IMHTML(gtkconv->imhtml), sml, smile); | |
| 5323 | ||
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5324 | if (!smiley) |
| 10526 | 5325 | return; |
| 5326 | ||
| 5327 | loader = smiley->loader; | |
| 5328 | ||
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5329 | if (!loader) |
| 10526 | 5330 | return; |
|
10537
9ece7671fa62
[gaim-migrate @ 11890]
Mark Doliner <markdoliner@pidgin.im>
parents:
10526
diff
changeset
|
5331 | |
| 12335 | 5332 | |
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11524
diff
changeset
|
5333 | |
| 10526 | 5334 | gaim_debug_info("gtkconv", "About to close the smiley pixbuf\n"); |
| 5335 | ||
| 5336 | gdk_pixbuf_loader_close(loader, NULL); | |
| 12335 | 5337 | |
| 10526 | 5338 | } |
| 5339 | ||
| 11581 | 5340 | /* |
| 5341 | * Makes sure all the menu items and all the buttons are hidden/shown and | |
| 5342 | * sensitive/insensitive. This is called after changing tabs and when an | |
| 5343 | * account signs on or off. | |
| 5344 | */ | |
| 5345 | static void | |
| 5346 | gray_stuff_out(GaimGtkConversation *gtkconv) | |
| 5347 | { | |
| 5348 | GaimGtkWindow *win; | |
| 5349 | GaimConversation *conv = gtkconv->active_conv; | |
| 5350 | GaimConnection *gc; | |
| 5351 | GaimPluginProtocolInfo *prpl_info = NULL; | |
| 5352 | GdkPixbuf *window_icon = NULL; | |
| 5353 | GtkIMHtmlButtons buttons; | |
| 5354 | GaimAccount *account; | |
| 5355 | ||
| 5356 | win = gaim_gtkconv_get_window(gtkconv); | |
| 5357 | gc = gaim_conversation_get_gc(conv); | |
| 5358 | account = gaim_conversation_get_account(conv); | |
| 5359 | ||
| 5360 | if (gc != NULL) | |
| 5361 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 5362 | ||
| 11594 | 5363 | if (win->menu.send_to != NULL) |
|
11734
6faaedf20f96
[gaim-migrate @ 14025]
Mark Doliner <markdoliner@pidgin.im>
parents:
11731
diff
changeset
|
5364 | update_send_to_selection(win); |
| 11581 | 5365 | |
| 5366 | /* | |
| 5367 | * Handle hiding and showing stuff based on what type of conv this is. | |
| 5368 | * Stuff that Gaim IMs support in general should be shown for IM | |
| 5369 | * conversations. Stuff that Gaim chats support in general should be | |
| 5370 | * shown for chat conversations. It doesn't matter whether the PRPL | |
| 5371 | * supports it or not--that only affects if the button or menu item | |
| 5372 | * is sensitive or not. | |
| 5373 | */ | |
| 5374 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) { | |
| 5375 | /* Show stuff that applies to IMs, hide stuff that applies to chats */ | |
| 5376 | ||
| 5377 | /* Deal with menu items */ | |
| 5378 | gtk_widget_show(win->menu.view_log); | |
| 5379 | gtk_widget_show(win->menu.send_file); | |
| 5380 | gtk_widget_show(win->menu.add_pounce); | |
| 5381 | gtk_widget_show(win->menu.get_info); | |
| 5382 | gtk_widget_hide(win->menu.invite); | |
| 5383 | gtk_widget_show(win->menu.alias); | |
| 5384 | gtk_widget_show(win->menu.block); | |
| 5385 | ||
|
13132
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5386 | if ((account == NULL) || gaim_find_buddy(account, gaim_conversation_get_name(conv)) == NULL) { |
| 11581 | 5387 | gtk_widget_show(win->menu.add); |
| 5388 | gtk_widget_hide(win->menu.remove); | |
| 5389 | } else { | |
| 5390 | gtk_widget_show(win->menu.remove); | |
| 5391 | gtk_widget_hide(win->menu.add); | |
| 5392 | } | |
| 5393 | ||
| 5394 | gtk_widget_show(win->menu.insert_link); | |
| 5395 | gtk_widget_show(win->menu.insert_image); | |
| 5396 | gtk_widget_show(win->menu.show_icon); | |
| 5397 | } else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) { | |
| 5398 | /* Show stuff that applies to Chats, hide stuff that applies to IMs */ | |
| 5399 | ||
| 5400 | /* Deal with menu items */ | |
| 5401 | gtk_widget_show(win->menu.view_log); | |
| 5402 | gtk_widget_hide(win->menu.send_file); | |
| 5403 | gtk_widget_hide(win->menu.add_pounce); | |
| 5404 | gtk_widget_hide(win->menu.get_info); | |
| 5405 | gtk_widget_show(win->menu.invite); | |
| 5406 | gtk_widget_show(win->menu.alias); | |
| 5407 | gtk_widget_hide(win->menu.block); | |
| 5408 | gtk_widget_hide(win->menu.show_icon); | |
| 5409 | ||
|
13132
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5410 | if ((account == NULL) || gaim_blist_find_chat(account, gaim_conversation_get_name(conv)) == NULL) { |
| 11581 | 5411 | /* If the chat is NOT in the buddy list */ |
| 5412 | gtk_widget_show(win->menu.add); | |
| 5413 | gtk_widget_hide(win->menu.remove); | |
| 5414 | } else { | |
| 5415 | /* If the chat IS in the buddy list */ | |
| 5416 | gtk_widget_hide(win->menu.add); | |
| 5417 | gtk_widget_show(win->menu.remove); | |
| 5418 | } | |
| 5419 | ||
| 5420 | gtk_widget_show(win->menu.insert_link); | |
| 5421 | gtk_widget_hide(win->menu.insert_image); | |
| 5422 | } | |
| 5423 | ||
| 5424 | /* | |
| 5425 | * Handle graying stuff out based on whether an account is connected | |
| 5426 | * and what features that account supports. | |
| 5427 | */ | |
| 5428 | if ((gc != NULL) && | |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5429 | ((gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_CHAT) || |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5430 | !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5431 | { |
| 11581 | 5432 | /* Account is online */ |
| 5433 | /* Deal with the toolbar */ | |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5434 | if (conv->features & GAIM_CONNECTION_HTML) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5435 | { |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5436 | buttons = GTK_IMHTML_ALL; /* Everything on */ |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5437 | if (conv->features & GAIM_CONNECTION_NO_BGCOLOR) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5438 | buttons &= ~GTK_IMHTML_BACKCOLOR; |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5439 | if (conv->features & GAIM_CONNECTION_NO_FONTSIZE) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5440 | { |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5441 | buttons &= ~GTK_IMHTML_GROW; |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5442 | buttons &= ~GTK_IMHTML_SHRINK; |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5443 | } |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5444 | if (conv->features & GAIM_CONNECTION_NO_URLDESC) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5445 | buttons &= ~GTK_IMHTML_LINKDESC; |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5446 | } else { |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
5447 | buttons = GTK_IMHTML_SMILEY | GTK_IMHTML_IMAGE; |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5448 | } |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
5449 | |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
5450 | if (!(prpl_info->options & OPT_PROTO_IM_IMAGE) || |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
5451 | conv->features & GAIM_CONNECTION_NO_IMAGES) |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
5452 | buttons &= ~GTK_IMHTML_IMAGE; |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
5453 | |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5454 | gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons); |
|
13132
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5455 | if (account != NULL) |
|
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5456 | gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(account)); |
| 11581 | 5457 | |
| 5458 | /* Deal with menu items */ | |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5459 | gtk_widget_set_sensitive(win->menu.view_log, TRUE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5460 | gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5461 | gtk_widget_set_sensitive(win->menu.get_info, (prpl_info->get_info != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5462 | gtk_widget_set_sensitive(win->menu.invite, (prpl_info->chat_invite != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5463 | gtk_widget_set_sensitive(win->menu.insert_link, (conv->features & GAIM_CONNECTION_HTML)); |
|
12099
accddd113855
[gaim-migrate @ 14396]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12088
diff
changeset
|
5464 | gtk_widget_set_sensitive(win->menu.insert_image, (prpl_info->options & OPT_PROTO_IM_IMAGE) && !(conv->features & GAIM_CONNECTION_NO_IMAGES)); |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5465 | |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5466 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5467 | { |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5468 | gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5469 | gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5470 | gtk_widget_set_sensitive(win->menu.send_file, |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5471 | (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5472 | prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv))))); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5473 | gtk_widget_set_sensitive(win->menu.alias, |
|
13132
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5474 | (account != NULL) && |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5475 | (gaim_find_buddy(account, gaim_conversation_get_name(conv)) != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5476 | } |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5477 | else if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5478 | { |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5479 | gtk_widget_set_sensitive(win->menu.add, (prpl_info->join_chat != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5480 | gtk_widget_set_sensitive(win->menu.remove, (prpl_info->join_chat != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5481 | gtk_widget_set_sensitive(win->menu.alias, |
|
13132
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5482 | (account != NULL) && |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5483 | (gaim_blist_find_chat(account, gaim_conversation_get_name(conv)) != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5484 | } |
| 11581 | 5485 | |
| 5486 | /* Deal with chat userlist buttons */ | |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5487 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5488 | { |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5489 | gtk_widget_set_sensitive(gtkconv->u.chat->userlist_im, TRUE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5490 | gtk_widget_set_sensitive(gtkconv->u.chat->userlist_ignore, TRUE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5491 | gtk_widget_set_sensitive(gtkconv->u.chat->userlist_info, (prpl_info->get_info != NULL)); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5492 | } |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5493 | } else { |
| 11581 | 5494 | /* Account is offline */ |
| 5495 | /* Or it's a chat that we've left. */ | |
| 5496 | ||
| 5497 | /* Then deal with menu items */ | |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5498 | gtk_widget_set_sensitive(win->menu.view_log, TRUE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5499 | gtk_widget_set_sensitive(win->menu.send_file, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5500 | gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5501 | gtk_widget_set_sensitive(win->menu.get_info, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5502 | gtk_widget_set_sensitive(win->menu.invite, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5503 | gtk_widget_set_sensitive(win->menu.alias, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5504 | gtk_widget_set_sensitive(win->menu.add, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5505 | gtk_widget_set_sensitive(win->menu.remove, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5506 | gtk_widget_set_sensitive(win->menu.insert_link, TRUE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5507 | gtk_widget_set_sensitive(win->menu.insert_image, FALSE); |
| 11581 | 5508 | |
| 5509 | /* Deal with chat userlist buttons */ | |
|
12012
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5510 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5511 | { |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5512 | gtk_widget_set_sensitive(gtkconv->u.chat->userlist_im, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5513 | gtk_widget_set_sensitive(gtkconv->u.chat->userlist_ignore, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5514 | gtk_widget_set_sensitive(gtkconv->u.chat->userlist_info, FALSE); |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5515 | } |
|
5d2cedc5ba45
[gaim-migrate @ 14305]
Mark Doliner <markdoliner@pidgin.im>
parents:
12008
diff
changeset
|
5516 | } |
| 11581 | 5517 | |
| 5518 | /* | |
| 5519 | * Update the window's icon | |
| 5520 | */ | |
|
12171
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5521 | if (gaim_gtk_conv_window_is_active_conversation(conv)) |
| 11581 | 5522 | { |
|
12171
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5523 | if ((gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) && |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5524 | (gtkconv->u.im->anim)) |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5525 | { |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5526 | window_icon = |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5527 | gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5528 | g_object_ref(window_icon); |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5529 | } else { |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5530 | window_icon = gaim_gtkconv_get_tab_icon(conv, FALSE); |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5531 | } |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5532 | gtk_window_set_icon(GTK_WINDOW(win->window), window_icon); |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5533 | if (window_icon != NULL) |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5534 | g_object_unref(G_OBJECT(window_icon)); |
|
a7c0ec510cfc
[gaim-migrate @ 14473]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12140
diff
changeset
|
5535 | } |
| 11581 | 5536 | } |
| 5537 | ||
|
6407
d67b6a6ba7d2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5538 | static void |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5539 | gaim_gtkconv_update_fields(GaimConversation *conv, GaimGtkConvFields fields) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5540 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5541 | GaimGtkConversation *gtkconv; |
| 11581 | 5542 | GaimGtkWindow *win; |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
5543 | |
| 4359 | 5544 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5545 | if (!gtkconv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5546 | return; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5547 | win = gaim_gtkconv_get_window(gtkconv); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5548 | if (!win) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5549 | return; |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12982
diff
changeset
|
5550 | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5551 | if (fields & GAIM_GTKCONV_SET_TITLE) |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5552 | { |
| 4359 | 5553 | gaim_conversation_autoset_title(conv); |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5554 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5555 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5556 | if (fields & GAIM_GTKCONV_BUDDY_ICON) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5557 | { |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
5558 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
5881
5f080ec88429
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5559 | gaim_gtkconv_update_buddy_icon(conv); |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5560 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5561 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5562 | if (fields & GAIM_GTKCONV_MENU) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5563 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5564 | gray_stuff_out(GAIM_GTK_CONVERSATION(conv)); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5565 | generate_send_to_items(win); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5566 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5567 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5568 | if (fields & GAIM_GTKCONV_TAB_ICON) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5569 | { |
| 6395 | 5570 | update_tab_icon(conv); |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5571 | generate_send_to_items(win); /* To update the icons in SendTo menu */ |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5572 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5573 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5574 | if ((fields & GAIM_GTKCONV_TOPIC) && |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5575 | gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5576 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5577 | const char *topic; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5578 | GaimConvChat *chat = GAIM_CONV_CHAT(conv); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5579 | GaimGtkChatPane *gtkchat = gtkconv->u.chat; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5580 | |
|
13351
fc51deaa387b
[gaim-migrate @ 15722]
Richard Laager <rlaager@pidgin.im>
parents:
13327
diff
changeset
|
5581 | if (gtkchat->topic_text != NULL) |
|
fc51deaa387b
[gaim-migrate @ 15722]
Richard Laager <rlaager@pidgin.im>
parents:
13327
diff
changeset
|
5582 | { |
|
fc51deaa387b
[gaim-migrate @ 15722]
Richard Laager <rlaager@pidgin.im>
parents:
13327
diff
changeset
|
5583 | topic = gaim_conv_chat_get_topic(chat); |
|
fc51deaa387b
[gaim-migrate @ 15722]
Richard Laager <rlaager@pidgin.im>
parents:
13327
diff
changeset
|
5584 | |
|
fc51deaa387b
[gaim-migrate @ 15722]
Richard Laager <rlaager@pidgin.im>
parents:
13327
diff
changeset
|
5585 | gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text), topic ? topic : ""); |
|
fc51deaa387b
[gaim-migrate @ 15722]
Richard Laager <rlaager@pidgin.im>
parents:
13327
diff
changeset
|
5586 | gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text, |
|
fc51deaa387b
[gaim-migrate @ 15722]
Richard Laager <rlaager@pidgin.im>
parents:
13327
diff
changeset
|
5587 | topic ? topic : "", NULL); |
|
fc51deaa387b
[gaim-migrate @ 15722]
Richard Laager <rlaager@pidgin.im>
parents:
13327
diff
changeset
|
5588 | } |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5589 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5590 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5591 | if (fields & GAIM_GTKCONV_SMILEY_THEME) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5592 | gaim_gtkthemes_smiley_themeize(GAIM_GTK_CONVERSATION(conv)->imhtml); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5593 | |
|
13132
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5594 | if ((fields & GAIM_GTKCONV_COLORIZE_TITLE) || |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5595 | (fields & GAIM_GTKCONV_SET_TITLE)) |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5596 | { |
| 9472 | 5597 | char *title; |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5598 | GaimConvIm *im = NULL; |
|
12131
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
5599 | GaimAccount *account = gaim_conversation_get_account(conv); |
|
13522
1652a3baae05
[gaim-migrate @ 15897]
Richard Laager <rlaager@pidgin.im>
parents:
13520
diff
changeset
|
5600 | AtkObject *accessibility_obj; |
| 11737 | 5601 | /* I think this is a little longer than it needs to be but I'm lazy. */ |
| 5602 | char style[51]; | |
| 4736 | 5603 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
5604 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5605 | im = GAIM_CONV_IM(conv); |
| 4359 | 5606 | |
|
13132
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5607 | if ((account == NULL) || |
|
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5608 | !gaim_account_is_connected(account) || |
|
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5609 | ((gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_CHAT) |
|
2fc051e5edce
[gaim-migrate @ 15493]
Mark Doliner <markdoliner@pidgin.im>
parents:
13107
diff
changeset
|
5610 | && gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)))) |
| 9472 | 5611 | title = g_strdup_printf("(%s)", gaim_conversation_get_title(conv)); |
| 5612 | else | |
| 5613 | title = g_strdup(gaim_conversation_get_title(conv)); | |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5614 | |
| 11737 | 5615 | *style = '\0'; |
| 4359 | 5616 | |
| 5617 | if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) | |
| 5618 | gtk_widget_realize(gtkconv->tab_label); | |
| 5619 | ||
|
13522
1652a3baae05
[gaim-migrate @ 15897]
Richard Laager <rlaager@pidgin.im>
parents:
13520
diff
changeset
|
5620 | accessibility_obj = gtk_widget_get_accessible(gtkconv->tab_cont); |
| 11737 | 5621 | if (im != NULL && |
| 5622 | gaim_conv_im_get_typing_state(im) == GAIM_TYPING) | |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5623 | { |
|
13522
1652a3baae05
[gaim-migrate @ 15897]
Richard Laager <rlaager@pidgin.im>
parents:
13520
diff
changeset
|
5624 | atk_object_set_description(accessibility_obj, _("Typing")); |
| 11759 | 5625 | strncpy(style, "color=\"#47A046\"", sizeof(style)); |
| 4359 | 5626 | } |
| 11737 | 5627 | else if (im != NULL && |
| 5628 | gaim_conv_im_get_typing_state(im) == GAIM_TYPED) | |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5629 | { |
|
13537
0a0b4e2b9b36
[gaim-migrate @ 15913]
Richard Laager <rlaager@pidgin.im>
parents:
13526
diff
changeset
|
5630 | atk_object_set_description(accessibility_obj, _("Stopped Typing")); |
| 11737 | 5631 | strncpy(style, "color=\"#D1940C\"", sizeof(style)); |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5632 | } |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
5633 | else if (gtkconv->unseen_state == GAIM_UNSEEN_NICK) |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5634 | { |
|
13537
0a0b4e2b9b36
[gaim-migrate @ 15913]
Richard Laager <rlaager@pidgin.im>
parents:
13526
diff
changeset
|
5635 | atk_object_set_description(accessibility_obj, _("Nick Said")); |
| 11737 | 5636 | strncpy(style, "color=\"#0D4E91\" style=\"italic\" weight=\"bold\"", sizeof(style)); |
| 4359 | 5637 | } |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
5638 | else if (gtkconv->unseen_state == GAIM_UNSEEN_TEXT) |
| 8252 | 5639 | { |
|
13522
1652a3baae05
[gaim-migrate @ 15897]
Richard Laager <rlaager@pidgin.im>
parents:
13520
diff
changeset
|
5640 | atk_object_set_description(accessibility_obj, _("Unread Messages")); |
| 11737 | 5641 | strncpy(style, "color=\"#DF421E\" weight=\"bold\"", sizeof(style)); |
| 8252 | 5642 | } |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
5643 | else if (gtkconv->unseen_state == GAIM_UNSEEN_EVENT) |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5644 | { |
|
13537
0a0b4e2b9b36
[gaim-migrate @ 15913]
Richard Laager <rlaager@pidgin.im>
parents:
13526
diff
changeset
|
5645 | atk_object_set_description(accessibility_obj, _("New Event")); |
| 11758 | 5646 | strncpy(style, "color=\"#868272\" style=\"italic\"", sizeof(style)); |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5647 | } |
|
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5648 | |
| 11737 | 5649 | if (*style != '\0') |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5650 | { |
| 8536 | 5651 | char *html_title,*label; |
| 5652 | ||
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10698
diff
changeset
|
5653 | html_title = g_markup_escape_text(title, -1); |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5654 | |
| 11737 | 5655 | label = g_strdup_printf("<span %s>%s</span>", |
| 5656 | style, html_title); | |
| 8536 | 5657 | g_free(html_title); |
| 7995 | 5658 | gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label); |
| 5659 | g_free(label); | |
| 4359 | 5660 | } |
| 7995 | 5661 | else |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5662 | gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
|
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5663 | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
5664 | if (gaim_gtk_conv_window_is_active_conversation(conv)) |
| 10810 | 5665 | update_typing_icon(gtkconv); |
| 8155 | 5666 | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5667 | gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5668 | if (gaim_gtk_conv_window_is_active_conversation(conv)) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5669 | gtk_window_set_title(GTK_WINDOW(win->window), title); |
| 9472 | 5670 | |
| 5671 | g_free(title); | |
| 4359 | 5672 | } |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5673 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5674 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5675 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5676 | gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5677 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5678 | GaimGtkConvFields flags = 0; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5679 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5680 | g_return_if_fail(conv != NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5681 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5682 | if (type == GAIM_CONV_UPDATE_ACCOUNT) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5683 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5684 | flags = GAIM_GTKCONV_ALL; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5685 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5686 | else if (type == GAIM_CONV_UPDATE_TYPING || |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5687 | type == GAIM_CONV_UPDATE_UNSEEN || |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5688 | type == GAIM_CONV_UPDATE_TITLE) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5689 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5690 | flags = GAIM_GTKCONV_COLORIZE_TITLE; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5691 | } |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5692 | else if (type == GAIM_CONV_UPDATE_TOPIC) |
|
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5693 | { |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5694 | flags = GAIM_GTKCONV_TOPIC; |
| 4359 | 5695 | } |
| 5696 | else if (type == GAIM_CONV_ACCOUNT_ONLINE || | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5697 | type == GAIM_CONV_ACCOUNT_OFFLINE) |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5698 | { |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5699 | flags = GAIM_GTKCONV_MENU | GAIM_GTKCONV_TAB_ICON | GAIM_GTKCONV_SET_TITLE; |
|
6392
3db2b3c7b5aa
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5700 | } |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5701 | else if (type == GAIM_CONV_UPDATE_AWAY) |
|
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5702 | { |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5703 | flags = GAIM_GTKCONV_TAB_ICON; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5704 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5705 | else if (type == GAIM_CONV_UPDATE_ADD || |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5706 | type == GAIM_CONV_UPDATE_REMOVE || |
| 8256 | 5707 | type == GAIM_CONV_UPDATE_CHATLEFT) |
|
8001
cd8b227e2fc8
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5708 | { |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5709 | flags = GAIM_GTKCONV_SET_TITLE | GAIM_GTKCONV_MENU; |
| 4397 | 5710 | } |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5711 | else if (type == GAIM_CONV_UPDATE_ICON) |
|
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5712 | { |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5713 | flags = GAIM_GTKCONV_BUDDY_ICON; |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5714 | } |
| 10665 | 5715 | else if (type == GAIM_CONV_UPDATE_FEATURES) |
| 5716 | { | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5717 | flags = GAIM_GTKCONV_MENU; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5718 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5719 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5720 | gaim_gtkconv_update_fields(conv, flags); |
| 4359 | 5721 | } |
| 5722 | ||
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5723 | static GaimConversationUiOps conversation_ui_ops = |
| 4359 | 5724 | { |
| 11581 | 5725 | gaim_gtkconv_new, |
|
13477
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5726 | gaim_gtkconv_destroy, /* destroy_conversation */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5727 | NULL, /* write_chat */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5728 | gaim_gtkconv_write_im, /* write_im */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5729 | gaim_gtkconv_write_conv, /* write_conv */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5730 | gaim_gtkconv_chat_add_users, /* chat_add_users */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5731 | gaim_gtkconv_chat_rename_user, /* chat_rename_user */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5732 | gaim_gtkconv_chat_remove_users, /* chat_remove_users */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5733 | gaim_gtkconv_chat_update_user, /* chat_update_user */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5734 | gaim_gtkconv_present_conversation, /* present */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5735 | gaim_gtkconv_has_focus, /* has_focus */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5736 | gaim_gtkconv_custom_smiley_add, /* custom_smiley_add */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5737 | gaim_gtkconv_custom_smiley_write, /* custom_smiley_write */ |
|
aa1863ed7f63
[gaim-migrate @ 15852]
Richard Laager <rlaager@pidgin.im>
parents:
13458
diff
changeset
|
5738 | gaim_gtkconv_custom_smiley_close /* custom_smiley_close */ |
| 4359 | 5739 | }; |
| 5740 | ||
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5741 | GaimConversationUiOps * |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5742 | gaim_gtk_conversations_get_conv_ui_ops(void) |
| 4359 | 5743 | { |
|
4465
43184ae252ed
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
5744 | return &conversation_ui_ops; |
| 4359 | 5745 | } |
| 5746 | ||
| 5747 | /************************************************************************** | |
| 5748 | * Public conversation utility functions | |
| 5749 | **************************************************************************/ | |
| 5750 | void | |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5751 | gaim_gtkconv_update_buddy_icon(GaimConversation *conv) |
| 4359 | 5752 | { |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5753 | GaimGtkConversation *gtkconv; |
| 11581 | 5754 | GaimGtkWindow *win; |
| 4359 | 5755 | |
| 10381 | 5756 | GdkPixbufLoader *loader; |
| 5757 | GdkPixbufAnimation *anim; | |
| 4359 | 5758 | GError *err = NULL; |
| 5759 | ||
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5760 | const void *data; |
|
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5761 | size_t len; |
| 4359 | 5762 | |
| 5763 | GdkPixbuf *buf; | |
| 5764 | ||
| 5765 | GtkWidget *event; | |
| 5766 | GtkWidget *frame; | |
| 5767 | GdkPixbuf *scale; | |
| 5768 | GdkPixmap *pm; | |
| 5769 | GdkBitmap *bm; | |
| 9318 | 5770 | int scale_width, scale_height; |
| 5771 | ||
| 5772 | GaimAccount *account; | |
| 5773 | GaimPluginProtocolInfo *prpl_info = NULL; | |
| 4359 | 5774 | |
| 9324 | 5775 | GaimBuddyIcon *icon; |
| 5776 | ||
|
5678
1d183079b85c
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5777 | g_return_if_fail(conv != NULL); |
|
1d183079b85c
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5778 | g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
5779 | g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM); |
| 4359 | 5780 | |
| 5781 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 11581 | 5782 | win = gtkconv->win; |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5783 | if (conv != gtkconv->active_conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
5784 | return; |
|
10175
2bf5ed145e8a
[gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents:
10164
diff
changeset
|
5785 | |
| 9687 | 5786 | if (!gtkconv->u.im->show_icon) |
| 5787 | return; | |
| 5788 | ||
| 9318 | 5789 | account = gaim_conversation_get_account(conv); |
| 5790 | if(account && account->gc) | |
| 5791 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl); | |
| 4359 | 5792 | |
|
9845
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5793 | /* Remove the current icon stuff */ |
| 9885 | 5794 | if (gtkconv->u.im->icon_container != NULL) |
| 5795 | gtk_widget_destroy(gtkconv->u.im->icon_container); | |
| 5796 | gtkconv->u.im->icon_container = NULL; | |
|
9845
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5797 | |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5798 | if (gtkconv->u.im->anim != NULL) |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5799 | g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5800 | |
|
9887
d67d35d983a8
[gaim-migrate @ 10772]
Mark Doliner <markdoliner@pidgin.im>
parents:
9885
diff
changeset
|
5801 | gtkconv->u.im->anim = NULL; |
|
d67d35d983a8
[gaim-migrate @ 10772]
Mark Doliner <markdoliner@pidgin.im>
parents:
9885
diff
changeset
|
5802 | |
|
9845
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5803 | if (gtkconv->u.im->icon_timer != 0) |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5804 | g_source_remove(gtkconv->u.im->icon_timer); |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5805 | |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5806 | gtkconv->u.im->icon_timer = 0; |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5807 | |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5808 | if (gtkconv->u.im->iter != NULL) |
|
cb07ca6e1a9c
[gaim-migrate @ 10723]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9832
diff
changeset
|
5809 | g_object_unref(G_OBJECT(gtkconv->u.im->iter)); |
| 4359 | 5810 | |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
5811 | gtkconv->u.im->iter = NULL; |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10115
diff
changeset
|
5812 | |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5813 | if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
| 4359 | 5814 | return; |
| 5815 | ||
| 5816 | if (gaim_conversation_get_gc(conv) == NULL) | |
| 5817 | return; | |
| 5818 | ||
| 9324 | 5819 | icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); |
| 5820 | ||
| 5821 | if (icon == NULL) | |
| 5822 | return; | |
| 5823 | ||
| 5824 | data = gaim_buddy_icon_get_data(icon, &len); | |
| 5825 | ||
| 10381 | 5826 | loader = gdk_pixbuf_loader_new(); |
| 5827 | gdk_pixbuf_loader_write(loader, data, len, NULL); | |
|
12601
be19ef28e2ce
[gaim-migrate @ 14935]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
5828 | gdk_pixbuf_loader_close(loader, &err); |
| 10381 | 5829 | anim = gdk_pixbuf_loader_get_animation(loader); |
| 5830 | if (anim) | |
| 5831 | g_object_ref(G_OBJECT(anim)); | |
| 5832 | g_object_unref(loader); | |
| 5833 | ||
| 5834 | if (!anim) | |
| 9324 | 5835 | return; |
| 10381 | 5836 | gtkconv->u.im->anim = anim; |
| 9324 | 5837 | |
| 4359 | 5838 | if (err) { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5839 | gaim_debug(GAIM_DEBUG_ERROR, "gtkconv", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5840 | "Buddy icon error: %s\n", err->message); |
| 4359 | 5841 | g_error_free(err); |
| 5842 | } | |
| 5843 | ||
| 5844 | if (!gtkconv->u.im->anim) | |
| 5845 | return; | |
| 5846 | ||
| 5847 | if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) { | |
| 5848 | gtkconv->u.im->iter = NULL; | |
| 5849 | buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
| 5850 | } else { | |
| 5851 | gtkconv->u.im->iter = | |
|
8496
1934aeba5a77
[gaim-migrate @ 9231]
Mark Doliner <markdoliner@pidgin.im>
parents:
8481
diff
changeset
|
5852 | gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); /* LEAK */ |
| 4359 | 5853 | buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); |
| 8189 | 5854 | if (gtkconv->u.im->animate) |
| 10810 | 5855 | start_anim(NULL, gtkconv); |
| 4359 | 5856 | } |
| 5857 | ||
| 10483 | 5858 | gaim_gtk_buddy_icon_get_scale_size(buf, prpl_info ? &prpl_info->icon_spec : |
| 9318 | 5859 | NULL, &scale_width, &scale_height); |
| 4359 | 5860 | scale = gdk_pixbuf_scale_simple(buf, |
| 9318 | 5861 | MAX(gdk_pixbuf_get_width(buf) * scale_width / |
| 4359 | 5862 | gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), |
| 9318 | 5863 | MAX(gdk_pixbuf_get_height(buf) * scale_height / |
| 4359 | 5864 | gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), |
|
11324
e1b9da9925da
[gaim-migrate @ 13535]
Mark Doliner <markdoliner@pidgin.im>
parents:
11299
diff
changeset
|
5865 | GDK_INTERP_BILINEAR); |
| 4359 | 5866 | |
| 5867 | gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 4793 | 5868 | g_object_unref(G_OBJECT(scale)); |
| 4359 | 5869 | |
| 9885 | 5870 | gtkconv->u.im->icon_container = gtk_vbox_new(FALSE, 0); |
| 8821 | 5871 | |
| 4359 | 5872 | frame = gtk_frame_new(NULL); |
| 5873 | gtk_frame_set_shadow_type(GTK_FRAME(frame), | |
| 5874 | (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN)); | |
| 9885 | 5875 | gtk_box_pack_start(GTK_BOX(gtkconv->u.im->icon_container), frame, |
| 5876 | FALSE, FALSE, 0); | |
| 8821 | 5877 | |
| 4359 | 5878 | event = gtk_event_box_new(); |
| 5879 | gtk_container_add(GTK_CONTAINER(frame), event); | |
|
5314
56ef6a09fb99
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5880 | g_signal_connect(G_OBJECT(event), "button-press-event", |
|
10883
00ac5014e83e
[gaim-migrate @ 12581]
Gary Kramlich <grim@reaperworld.com>
parents:
10879
diff
changeset
|
5881 | G_CALLBACK(icon_menu), gtkconv); |
| 4359 | 5882 | gtk_widget_show(event); |
| 5883 | ||
| 4635 | 5884 | gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm); |
| 9318 | 5885 | gtk_widget_set_size_request(gtkconv->u.im->icon, scale_width, scale_height); |
| 4359 | 5886 | gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon); |
| 5887 | gtk_widget_show(gtkconv->u.im->icon); | |
| 5888 | ||
| 4793 | 5889 | g_object_unref(G_OBJECT(pm)); |
| 4359 | 5890 | |
| 5891 | if (bm) | |
| 4793 | 5892 | g_object_unref(G_OBJECT(bm)); |
| 7143 | 5893 | |
| 10356 | 5894 | gtk_box_pack_start(GTK_BOX(gtkconv->lower_hbox), |
| 5895 | gtkconv->u.im->icon_container, FALSE, FALSE, 0); | |
| 9332 | 5896 | |
| 9885 | 5897 | gtk_widget_show(gtkconv->u.im->icon_container); |
| 9332 | 5898 | gtk_widget_show(frame); |
| 5899 | ||
| 7143 | 5900 | /* The buddy icon code needs badly to be fixed. */ |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
5901 | if(gaim_gtk_conv_window_is_active_conversation(conv)) |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
5902 | { |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
5903 | buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); |
| 11581 | 5904 | gtk_window_set_icon(GTK_WINDOW(win->window), buf); |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
5905 | } |
| 4359 | 5906 | } |
| 5907 | ||
| 5908 | void | |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5909 | gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv) |
| 4359 | 5910 | { |
| 11581 | 5911 | GaimGtkWindow *win; |
| 4359 | 5912 | |
|
4398
ba901bb913e5
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5913 | if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5914 | return; |
| 5915 | ||
| 11581 | 5916 | win = GAIM_GTK_CONVERSATION(conv)->win; |
| 5917 | ||
| 5918 | if (win != NULL && gaim_gtk_conv_window_is_active_conversation(conv)) | |
| 10810 | 5919 | gray_stuff_out(GAIM_GTK_CONVERSATION(conv)); |
| 4359 | 5920 | } |
| 5921 | ||
| 5922 | int | |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5923 | gaim_gtkconv_get_tab_at_xy(GaimGtkWindow *win, int x, int y, gboolean *to_right) |
| 11581 | 5924 | { |
| 4359 | 5925 | gint nb_x, nb_y, x_rel, y_rel; |
| 5926 | GtkNotebook *notebook; | |
|
11279
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5927 | GtkWidget *page, *tab; |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5928 | gint i, page_num = -1; |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5929 | gint count; |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5930 | gboolean horiz; |
| 4359 | 5931 | |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5932 | if (to_right) |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5933 | *to_right = FALSE; |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5934 | |
| 11581 | 5935 | notebook = GTK_NOTEBOOK(win->notebook); |
| 5936 | ||
| 5937 | gdk_window_get_origin(win->notebook->window, &nb_x, &nb_y); | |
| 4359 | 5938 | x_rel = x - nb_x; |
| 5939 | y_rel = y - nb_y; | |
| 5940 | ||
|
11279
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5941 | horiz = (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5942 | gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM); |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5943 | |
|
11780
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
5944 | #if GTK_CHECK_VERSION(2,2,0) |
|
11279
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5945 | count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)); |
|
11780
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
5946 | #else |
|
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
5947 | /* this is hacky, but it's only for Gtk 2.0.0... */ |
|
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
5948 | count = g_list_length(GTK_NOTEBOOK(notebook)->children); |
|
9aee3bde84b9
[gaim-migrate @ 14071]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11759
diff
changeset
|
5949 | #endif |
|
11279
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5950 | |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5951 | for (i = 0; i < count; i++) { |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5952 | |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5953 | page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), i); |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5954 | tab = gtk_notebook_get_tab_label(GTK_NOTEBOOK(notebook), page); |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5955 | |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5956 | if (horiz) { |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5957 | if (x_rel >= tab->allocation.x - GAIM_HIG_BOX_SPACE && |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5958 | x_rel <= tab->allocation.x + tab->allocation.width + GAIM_HIG_BOX_SPACE) { |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5959 | page_num = i; |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5960 | |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5961 | if (to_right && x_rel >= tab->allocation.x + tab->allocation.width/2) |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5962 | *to_right = TRUE; |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5963 | |
|
11279
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5964 | break; |
| 4359 | 5965 | } |
|
11279
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5966 | } else { |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5967 | if (y_rel >= tab->allocation.y - GAIM_HIG_BOX_SPACE && |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5968 | y_rel <= tab->allocation.y + tab->allocation.height + GAIM_HIG_BOX_SPACE) { |
|
b8b4a83b4863
[gaim-migrate @ 13474]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11276
diff
changeset
|
5969 | page_num = i; |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5970 | |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5971 | if (to_right && y_rel >= tab->allocation.y + tab->allocation.height/2) |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5972 | *to_right = TRUE; |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
5973 | |
| 4359 | 5974 | break; |
| 5975 | } | |
| 5976 | } | |
| 5977 | } | |
| 5978 | ||
|
12795
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
5979 | if (page_num == -1) { |
|
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
5980 | /* Add after the last tab */ |
|
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
5981 | page_num = count - 1; |
|
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
5982 | } |
|
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
5983 | |
| 4359 | 5984 | return page_num; |
| 5985 | } | |
| 5986 | ||
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5987 | static void |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
5988 | close_on_tabs_pref_cb(const char *name, GaimPrefType type, |
|
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
5989 | gconstpointer value, gpointer data) |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5990 | { |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5991 | GList *l; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5992 | GaimConversation *conv; |
|
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5993 | GaimGtkConversation *gtkconv; |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5994 | |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5995 | for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5996 | conv = (GaimConversation *)l->data; |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5997 | |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5998 | if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5999 | continue; |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6000 | |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6001 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6002 | |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6003 | if (value) |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6004 | gtk_widget_show(gtkconv->close); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6005 | else |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6006 | gtk_widget_hide(gtkconv->close); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6007 | } |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6008 | } |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6009 | |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6010 | static void |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6011 | spellcheck_pref_cb(const char *name, GaimPrefType type, |
|
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6012 | gconstpointer value, gpointer data) |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6013 | { |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6014 | #ifdef USE_GTKSPELL |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6015 | GList *cl; |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
6016 | GaimConversation *conv; |
|
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
6017 | GaimGtkConversation *gtkconv; |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6018 | GtkSpell *spell; |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6019 | |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6020 | for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
|
6725
21fa06d508c8
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
6021 | |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
6022 | conv = (GaimConversation *)cl->data; |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6023 | |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6024 | if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6025 | continue; |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6026 | |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6027 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6028 | |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6029 | if (value) |
|
12067
11fb53722956
[gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents:
12064
diff
changeset
|
6030 | gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
|
11fb53722956
[gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents:
12064
diff
changeset
|
6031 | else { |
|
11fb53722956
[gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents:
12064
diff
changeset
|
6032 | spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry)); |
|
11fb53722956
[gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents:
12064
diff
changeset
|
6033 | gtkspell_detach(spell); |
|
11fb53722956
[gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents:
12064
diff
changeset
|
6034 | } |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6035 | } |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6036 | #endif |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6037 | } |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6038 | |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6039 | static void |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6040 | tab_side_pref_cb(const char *name, GaimPrefType type, |
|
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6041 | gconstpointer value, gpointer data) |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6042 | { |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6043 | GList *l; |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6044 | GtkPositionType pos; |
| 11581 | 6045 | GaimGtkWindow *win; |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6046 | |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6047 | pos = GPOINTER_TO_INT(value); |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6048 | |
| 11581 | 6049 | for (l = gaim_gtk_conv_windows_get_list(); l != NULL; l = l->next) { |
| 6050 | win = l->data; | |
| 6051 | ||
| 11619 | 6052 | gtk_notebook_set_tab_pos(GTK_NOTEBOOK(win->notebook), pos&~8); |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6053 | } |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6054 | } |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6055 | |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6056 | static void |
|
12188
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6057 | show_timestamps_pref_cb(const char *name, GaimPrefType type, |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6058 | gconstpointer value, gpointer data) |
|
12188
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6059 | { |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6060 | GList *l; |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6061 | GaimConversation *conv; |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6062 | GaimGtkConversation *gtkconv; |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6063 | GaimGtkWindow *win; |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6064 | |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6065 | for (l = gaim_get_conversations(); l != NULL; l = l->next) |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6066 | { |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6067 | conv = (GaimConversation *)l->data; |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6068 | |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6069 | if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6070 | continue; |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6071 | |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6072 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6073 | win = gtkconv->win; |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6074 | |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6075 | gtk_check_menu_item_set_active( |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6076 | GTK_CHECK_MENU_ITEM(win->menu.show_timestamps), |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6077 | (gboolean)GPOINTER_TO_INT(value)); |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6078 | |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6079 | gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6080 | (gboolean)GPOINTER_TO_INT(value)); |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6081 | } |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6082 | } |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6083 | |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6084 | static void |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6085 | show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type, |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6086 | gconstpointer value, gpointer data) |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6087 | { |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6088 | GList *l; |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6089 | GaimConversation *conv; |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6090 | GaimGtkConversation *gtkconv; |
| 11581 | 6091 | GaimGtkWindow *win; |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6092 | |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6093 | for (l = gaim_get_conversations(); l != NULL; l = l->next) |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6094 | { |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6095 | conv = (GaimConversation *)l->data; |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6096 | |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6097 | if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6098 | continue; |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6099 | |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6100 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 11581 | 6101 | win = gtkconv->win; |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6102 | |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6103 | gtk_check_menu_item_set_active( |
| 11581 | 6104 | GTK_CHECK_MENU_ITEM(win->menu.show_formatting_toolbar), |
| 6105 | (gboolean)GPOINTER_TO_INT(value)); | |
| 10377 | 6106 | |
| 6107 | if ((gboolean)GPOINTER_TO_INT(value)) | |
| 8317 | 6108 | gtk_widget_show(gtkconv->toolbar); |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6109 | else |
| 8317 | 6110 | gtk_widget_hide(gtkconv->toolbar); |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6111 | } |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6112 | } |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6113 | |
|
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6114 | static void |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6115 | animate_buddy_icons_pref_cb(const char *name, GaimPrefType type, |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6116 | gconstpointer value, gpointer data) |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6117 | { |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6118 | GList *l; |
| 8189 | 6119 | GaimConversation *conv; |
| 6120 | GaimGtkConversation *gtkconv; | |
| 11581 | 6121 | GaimGtkWindow *win; |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6122 | |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6123 | if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6124 | return; |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6125 | |
| 8189 | 6126 | /* Set the "animate" flag for each icon based on the new preference */ |
| 6127 | for (l = gaim_get_ims(); l != NULL; l = l->next) { | |
| 6128 | conv = (GaimConversation *)l->data; | |
| 6129 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 10112 | 6130 | gtkconv->u.im->animate = GPOINTER_TO_INT(value); |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6131 | } |
| 8189 | 6132 | |
| 6133 | /* Now either stop or start animation for the active conversation in each window */ | |
| 11581 | 6134 | for (l = gaim_gtk_conv_windows_get_list(); l != NULL; l = l->next) { |
| 6135 | win = l->data; | |
| 6136 | conv = gaim_gtk_conv_window_get_active_conversation(win); | |
| 8189 | 6137 | gaim_gtkconv_update_buddy_icon(conv); |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6138 | } |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6139 | } |
|
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6140 | |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6141 | static void |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6142 | show_buddy_icons_pref_cb(const char *name, GaimPrefType type, |
|
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6143 | gconstpointer value, gpointer data) |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6144 | { |
|
5881
5f080ec88429
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
6145 | GList *l; |
|
5f080ec88429
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
6146 | |
|
5f080ec88429
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
6147 | for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5f080ec88429
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
6148 | GaimConversation *conv = l->data; |
|
5f080ec88429
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
6149 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11324
diff
changeset
|
6150 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) |
|
12052
b80f26bf5569
[gaim-migrate @ 14347]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12047
diff
changeset
|
6151 | gaim_gtkconv_update_buddy_icon(conv); |
|
5881
5f080ec88429
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
6152 | } |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6153 | } |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6154 | |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5680
diff
changeset
|
6155 | static void |
| 11936 | 6156 | conv_placement_usetabs_cb(const char *name, GaimPrefType type, |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6157 | gconstpointer value, gpointer data) |
| 11936 | 6158 | { |
| 6159 | gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement"); | |
| 6160 | } | |
| 6161 | ||
| 6162 | static void | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6163 | account_status_changed_cb(GaimAccount *account, GaimStatus *oldstatus, |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6164 | GaimStatus *newstatus) |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6165 | { |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6166 | GList *l; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6167 | GaimConversation *conv = NULL; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6168 | GaimGtkConversation *gtkconv; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6169 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6170 | if(strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/im/hide_new"), "away")!=0) |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6171 | return; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6172 | |
|
12310
a4fa84588b37
[gaim-migrate @ 14614]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12288
diff
changeset
|
6173 | if(gaim_status_is_available(oldstatus) || !gaim_status_is_available(newstatus)) |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6174 | return; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6175 | |
|
13140
df87348fbe8e
[gaim-migrate @ 15501]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13139
diff
changeset
|
6176 | while ((l = hidden_convwin->gtkconvs) != NULL) |
|
df87348fbe8e
[gaim-migrate @ 15501]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13139
diff
changeset
|
6177 | { |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6178 | gtkconv = l->data; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6179 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6180 | conv = gtkconv->active_conv; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6181 | |
| 13526 | 6182 | while(l && !gaim_status_is_available( |
|
12310
a4fa84588b37
[gaim-migrate @ 14614]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12288
diff
changeset
|
6183 | gaim_account_get_active_status( |
|
a4fa84588b37
[gaim-migrate @ 14614]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12288
diff
changeset
|
6184 | gaim_conversation_get_account(conv)))) |
| 13526 | 6185 | l = l->next; |
| 6186 | if (!l) | |
| 6187 | break; | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6188 | |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
6189 | gaim_gtk_conv_window_remove_gtkconv(hidden_convwin, gtkconv); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6190 | gaim_gtkconv_placement_place(gtkconv); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6191 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6192 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6193 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6194 | static void |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6195 | hide_new_pref_cb(const char *name, GaimPrefType type, |
|
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6196 | gconstpointer value, gpointer data) |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6197 | { |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6198 | GList *l; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6199 | GaimConversation *conv = NULL; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6200 | GaimGtkConversation *gtkconv; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6201 | gboolean when_away = FALSE; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6202 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6203 | if(!hidden_convwin) |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6204 | return; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6205 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6206 | if(strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/im/hide_new"), "always")==0) |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6207 | return; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6208 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6209 | if(strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/im/hide_new"), "away")==0) |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6210 | when_away = TRUE; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6211 | |
|
13140
df87348fbe8e
[gaim-migrate @ 15501]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13139
diff
changeset
|
6212 | while ((l = hidden_convwin->gtkconvs) != NULL) |
|
df87348fbe8e
[gaim-migrate @ 15501]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13139
diff
changeset
|
6213 | { |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6214 | gtkconv = l->data; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6215 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6216 | conv = gtkconv->active_conv; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6217 | |
|
12310
a4fa84588b37
[gaim-migrate @ 14614]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12288
diff
changeset
|
6218 | if(when_away && !gaim_status_is_available( |
|
a4fa84588b37
[gaim-migrate @ 14614]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12288
diff
changeset
|
6219 | gaim_account_get_active_status( |
|
a4fa84588b37
[gaim-migrate @ 14614]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12288
diff
changeset
|
6220 | gaim_conversation_get_account(conv)))) |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6221 | continue; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6222 | |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
6223 | gaim_gtk_conv_window_remove_gtkconv(hidden_convwin, gtkconv); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6224 | gaim_gtkconv_placement_place(gtkconv); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6225 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6226 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6227 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6228 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6229 | static void |
|
7561
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6230 | conv_placement_pref_cb(const char *name, GaimPrefType type, |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12806
diff
changeset
|
6231 | gconstpointer value, gpointer data) |
|
7561
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6232 | { |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6233 | GaimConvPlacementFunc func; |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6234 | |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6235 | if (strcmp(name, "/gaim/gtk/conversations/placement")) |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6236 | return; |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6237 | |
| 11581 | 6238 | func = gaim_gtkconv_placement_get_fnc(value); |
|
7561
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6239 | |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6240 | if (func == NULL) |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6241 | return; |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6242 | |
| 11581 | 6243 | gaim_gtkconv_placement_set_current_func(func); |
|
7561
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6244 | } |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6245 | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6246 | static GaimGtkConversation * |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6247 | get_gtkconv_with_contact(GaimContact *contact) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6248 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6249 | GaimBlistNode *node; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6250 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6251 | node = ((GaimBlistNode*)contact)->child; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6252 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6253 | for (; node; node = node->next) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6254 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6255 | GaimBuddy *buddy = (GaimBuddy*)node; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6256 | GaimConversation *conv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6257 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, buddy->name, buddy->account); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6258 | if (conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6259 | return GAIM_GTK_CONVERSATION(conv); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6260 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6261 | return NULL; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6262 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6263 | |
|
12131
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6264 | static void |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6265 | account_signed_off_cb(GaimConnection *gc, gpointer event) |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6266 | { |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6267 | GList *iter; |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6268 | GaimAccount *account; |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6269 | |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6270 | account = gaim_connection_get_account(gc); |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6271 | |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6272 | for (iter = gaim_get_conversations(); iter; iter = iter->next) |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6273 | { |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6274 | GaimConversation *conv = iter->data; |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6275 | |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6276 | /* This seems fine in theory, but we also need to cover the |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6277 | * case of this account matching one of the other buddies in |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6278 | * one of the contacts containing the buddy corresponding to |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6279 | * a conversation. It's easier to just update them all. */ |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6280 | /* if (gaim_conversation_get_account(conv) == account) */ |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6281 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TAB_ICON | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6282 | GAIM_GTKCONV_MENU | GAIM_GTKCONV_COLORIZE_TITLE); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6283 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6284 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6285 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6286 | static gboolean |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6287 | update_buddy_status_timeout(GaimBuddy *buddy) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6288 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6289 | /* To remove the signing-on/off door icon */ |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6290 | GaimConversation *conv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6291 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6292 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, buddy->name, buddy->account); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6293 | if (conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6294 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TAB_ICON); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6295 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6296 | return FALSE; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6297 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6298 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6299 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6300 | update_buddy_status_changed(GaimBuddy *buddy, GaimStatus *old, GaimStatus *newstatus) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6301 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6302 | GaimGtkConversation *gtkconv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6303 | GaimConversation *conv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6304 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6305 | gtkconv = get_gtkconv_with_contact(gaim_buddy_get_contact(buddy)); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6306 | if (gtkconv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6307 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6308 | conv = gtkconv->active_conv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6309 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TAB_ICON | GAIM_GTKCONV_COLORIZE_TITLE); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6310 | if ((gaim_status_is_online(old) ^ gaim_status_is_online(newstatus)) != 0) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6311 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_MENU); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6312 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6313 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6314 | /* In case a conversation is started after the buddy has signed-on/off */ |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6315 | g_timeout_add(11000, (GSourceFunc)update_buddy_status_timeout, buddy); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6316 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6317 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6318 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6319 | update_buddy_idle_changed(GaimBuddy *buddy, gboolean old, gboolean newidle) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6320 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6321 | GaimConversation *conv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6322 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6323 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, buddy->name, buddy->account); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6324 | if (conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6325 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TAB_ICON); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6326 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6327 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6328 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6329 | update_buddy_icon(GaimBuddy *buddy) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6330 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6331 | GaimConversation *conv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6332 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6333 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, buddy->name, buddy->account); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6334 | if (conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6335 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_BUDDY_ICON); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6336 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6337 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6338 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6339 | update_buddy_sign(GaimBuddy *buddy, const char *which) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6340 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6341 | GaimPresence *presence; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6342 | GaimStatus *on, *off; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6343 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6344 | presence = gaim_buddy_get_presence(buddy); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6345 | if (!presence) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6346 | return; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6347 | off = gaim_presence_get_status(presence, "offline"); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6348 | on = gaim_presence_get_status(presence, "available"); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6349 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6350 | if (*(which+1) == 'f') |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6351 | update_buddy_status_changed(buddy, on, off); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6352 | else |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6353 | update_buddy_status_changed(buddy, off, on); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6354 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6355 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6356 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6357 | update_conversation_switched(GaimConversation *conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6358 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6359 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TAB_ICON | GAIM_GTKCONV_SET_TITLE | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6360 | GAIM_GTKCONV_MENU | GAIM_GTKCONV_BUDDY_ICON); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6361 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6362 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6363 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6364 | update_buddy_typing(GaimAccount *account, const char *who) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6365 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6366 | GaimConversation *conv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6367 | GaimGtkConversation *gtkconv; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6368 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6369 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, who, account); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6370 | if (!conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6371 | return; |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6372 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6373 | gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6374 | if (gtkconv && gtkconv->active_conv == conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6375 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_COLORIZE_TITLE); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6376 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6377 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6378 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6379 | update_chat(GaimConversation *conv) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6380 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6381 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TOPIC | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6382 | GAIM_GTKCONV_MENU | GAIM_GTKCONV_SET_TITLE); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6383 | } |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6384 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6385 | static void |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6386 | update_chat_topic(GaimConversation *conv, const char *old, const char *new) |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6387 | { |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6388 | gaim_gtkconv_update_fields(conv, GAIM_GTKCONV_TOPIC); |
|
12131
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6389 | } |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6390 | |
| 8582 | 6391 | void * |
| 6392 | gaim_gtk_conversations_get_handle(void) | |
| 6393 | { | |
| 6394 | static int handle; | |
| 6395 | ||
| 6396 | return &handle; | |
| 6397 | } | |
| 6398 | ||
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6399 | void |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
6400 | gaim_gtk_conversations_init(void) |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6401 | { |
| 8582 | 6402 | void *handle = gaim_gtk_conversations_get_handle(); |
|
11856
0381a90c3e7b
[gaim-migrate @ 14147]
Richard Laager <rlaager@pidgin.im>
parents:
11855
diff
changeset
|
6403 | void *blist_handle = gaim_blist_get_handle(); |
| 8582 | 6404 | |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6405 | /* Conversations */ |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6406 | gaim_prefs_add_none("/gaim/gtk/conversations"); |
| 12553 | 6407 | gaim_prefs_add_bool("/gaim/gtk/conversations/use_smooth_scrolling", TRUE); |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6408 | gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6409 | gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6410 | gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6411 | gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6412 | gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE); |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
6413 | gaim_prefs_add_bool("/gaim/gtk/conversations/show_incoming_formatting", TRUE); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11261
diff
changeset
|
6414 | |
| 12264 | 6415 | gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE); |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6416 | gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE); |
| 9832 | 6417 | gaim_prefs_add_bool("/gaim/gtk/conversations/passthrough_unknown_commands", FALSE); |
| 9130 | 6418 | |
|
7561
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6419 | gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last"); |
| 8998 | 6420 | gaim_prefs_add_int("/gaim/gtk/conversations/placement_number", 1); |
| 9025 | 6421 | gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", ""); |
| 6422 | gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", ""); | |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6423 | gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6424 | gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6425 | gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6426 | gaim_prefs_add_int("/gaim/gtk/conversations/tab_side", GTK_POS_TOP); |
|
11224
04c1712bb953
[gaim-migrate @ 13360]
Daniel Atallah <datallah@pidgin.im>
parents:
11209
diff
changeset
|
6427 | gaim_prefs_add_int("/gaim/gtk/conversations/scrollback_lines", 4000); |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6428 | |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6429 | /* Conversations -> Chat */ |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6430 | gaim_prefs_add_none("/gaim/gtk/conversations/chat"); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6431 | gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6432 | gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6433 | gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6434 | |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6435 | /* Conversations -> IM */ |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6436 | gaim_prefs_add_none("/gaim/gtk/conversations/im"); |
| 9150 | 6437 | |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6438 | gaim_prefs_add_bool("/gaim/gtk/conversations/im/animate_buddy_icons", TRUE); |
| 9150 | 6439 | |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6440 | gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6441 | gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160); |
|
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6442 | gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50); |
| 9319 | 6443 | gaim_prefs_add_bool("/gaim/gtk/conversations/im/show_buddy_icons", TRUE); |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6444 | |
|
12616
ca6132b9bfe2
[gaim-migrate @ 14952]
Richard Laager <rlaager@pidgin.im>
parents:
12604
diff
changeset
|
6445 | gaim_prefs_add_string("/gaim/gtk/conversations/im/hide_new", "never"); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6446 | |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6447 | /* Connect callbacks. */ |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10084
diff
changeset
|
6448 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/close_on_tabs", |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6449 | close_on_tabs_pref_cb, NULL); |
|
12188
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6450 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/show_timestamps", |
|
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
6451 | show_timestamps_pref_cb, NULL); |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10084
diff
changeset
|
6452 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/show_formatting_toolbar", |
|
7326
599c9e8c9da4
[gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7322
diff
changeset
|
6453 | show_formatting_toolbar_pref_cb, NULL); |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10084
diff
changeset
|
6454 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/spellcheck", |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6455 | spellcheck_pref_cb, NULL); |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10084
diff
changeset
|
6456 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/tab_side", |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6457 | tab_side_pref_cb, NULL); |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6458 | |
| 11936 | 6459 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/tabs", |
| 6460 | conv_placement_usetabs_cb, NULL); | |
| 6461 | ||
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10084
diff
changeset
|
6462 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/placement", |
|
11856
0381a90c3e7b
[gaim-migrate @ 14147]
Richard Laager <rlaager@pidgin.im>
parents:
11855
diff
changeset
|
6463 | conv_placement_pref_cb, NULL); |
|
7561
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6464 | gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement"); |
|
fd6a81f1594e
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6465 | |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6466 | /* IM callbacks */ |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10084
diff
changeset
|
6467 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/im/animate_buddy_icons", |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6468 | animate_buddy_icons_pref_cb, NULL); |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10084
diff
changeset
|
6469 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/im/show_buddy_icons", |
|
5674
44742bed404f
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6470 | show_buddy_icons_pref_cb, NULL); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6471 | gaim_prefs_connect_callback(handle, "/gaim/gtk/conversations/im/hide_new", |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6472 | hide_new_pref_cb, NULL); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6473 | |
|
5675
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6474 | |
|
c4bd3b2070b5
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6475 | |
| 8582 | 6476 | /********************************************************************** |
| 6477 | * Register signals | |
| 6478 | **********************************************************************/ | |
|
11447
23594a754163
[gaim-migrate @ 13686]
Daniel Atallah <datallah@pidgin.im>
parents:
11338
diff
changeset
|
6479 | gaim_signal_register(handle, "conversation-dragging", |
| 8582 | 6480 | gaim_marshal_VOID__POINTER_POINTER, NULL, 2, |
|
12837
91261adc87b3
[gaim-migrate @ 15185]
Richard Laager <rlaager@pidgin.im>
parents:
12831
diff
changeset
|
6481 | gaim_value_new(GAIM_TYPE_BOXED, |
|
91261adc87b3
[gaim-migrate @ 15185]
Richard Laager <rlaager@pidgin.im>
parents:
12831
diff
changeset
|
6482 | "GaimGtkWindow *"), |
|
91261adc87b3
[gaim-migrate @ 15185]
Richard Laager <rlaager@pidgin.im>
parents:
12831
diff
changeset
|
6483 | gaim_value_new(GAIM_TYPE_BOXED, |
|
91261adc87b3
[gaim-migrate @ 15185]
Richard Laager <rlaager@pidgin.im>
parents:
12831
diff
changeset
|
6484 | "GaimGtkWindow *")); |
| 9167 | 6485 | |
|
12737
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
6486 | gaim_signal_register(handle, "conversation-timestamp", |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
6487 | gaim_marshal_POINTER__POINTER_POINTER, |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
6488 | gaim_value_new(GAIM_TYPE_POINTER), 2, |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
6489 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
6490 | GAIM_SUBTYPE_CONVERSATION), |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
6491 | gaim_value_new(GAIM_TYPE_POINTER)); |
|
e1300804318e
[gaim-migrate @ 15082]
Richard Laager <rlaager@pidgin.im>
parents:
12722
diff
changeset
|
6492 | |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6493 | gaim_signal_register(handle, "displaying-im-msg", |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6494 | gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6495 | gaim_value_new(GAIM_TYPE_BOOLEAN), 5, |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6496 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6497 | GAIM_SUBTYPE_ACCOUNT), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6498 | gaim_value_new(GAIM_TYPE_STRING), |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6499 | gaim_value_new_outgoing(GAIM_TYPE_STRING), |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6500 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6501 | GAIM_SUBTYPE_CONVERSATION), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6502 | gaim_value_new(GAIM_TYPE_INT)); |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6503 | |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6504 | gaim_signal_register(handle, "displayed-im-msg", |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6505 | gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT, |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6506 | NULL, 5, |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6507 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6508 | GAIM_SUBTYPE_ACCOUNT), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6509 | gaim_value_new(GAIM_TYPE_STRING), |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6510 | gaim_value_new(GAIM_TYPE_STRING), |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6511 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6512 | GAIM_SUBTYPE_CONVERSATION), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6513 | gaim_value_new(GAIM_TYPE_INT)); |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6514 | |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6515 | gaim_signal_register(handle, "displaying-chat-msg", |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6516 | gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6517 | gaim_value_new(GAIM_TYPE_BOOLEAN), 5, |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6518 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6519 | GAIM_SUBTYPE_ACCOUNT), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6520 | gaim_value_new(GAIM_TYPE_STRING), |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6521 | gaim_value_new_outgoing(GAIM_TYPE_STRING), |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6522 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6523 | GAIM_SUBTYPE_CONVERSATION), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6524 | gaim_value_new(GAIM_TYPE_INT)); |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6525 | |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6526 | gaim_signal_register(handle, "displayed-chat-msg", |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6527 | gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT, |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6528 | NULL, 5, |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6529 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6530 | GAIM_SUBTYPE_ACCOUNT), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6531 | gaim_value_new(GAIM_TYPE_STRING), |
|
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6532 | gaim_value_new(GAIM_TYPE_STRING), |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6533 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6534 | GAIM_SUBTYPE_CONVERSATION), |
|
13234
1d8e569b2053
[gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13148
diff
changeset
|
6535 | gaim_value_new(GAIM_TYPE_INT)); |
|
12604
893fbf89317c
[gaim-migrate @ 14939]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12601
diff
changeset
|
6536 | |
|
12639
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
6537 | gaim_signal_register(handle, "conversation-switched", |
|
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
6538 | gaim_marshal_VOID__POINTER_POINTER, NULL, 1, |
|
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
6539 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
6540 | GAIM_SUBTYPE_CONVERSATION)); |
|
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
6541 | |
| 9167 | 6542 | /********************************************************************** |
| 6543 | * Register commands | |
| 6544 | **********************************************************************/ | |
| 9829 | 6545 | gaim_cmd_register("say", "S", GAIM_CMD_P_DEFAULT, |
| 6546 | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM, NULL, | |
| 6547 | say_command_cb, _("say <message>: Send a message normally as if you weren't using a command."), NULL); | |
| 9213 | 6548 | gaim_cmd_register("me", "S", GAIM_CMD_P_DEFAULT, |
| 6549 | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM, NULL, | |
| 9597 | 6550 | me_command_cb, _("me <action>: Send an IRC style action to a buddy or chat."), NULL); |
| 9213 | 6551 | gaim_cmd_register("debug", "w", GAIM_CMD_P_DEFAULT, |
| 6552 | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM, NULL, | |
| 9597 | 6553 | debug_command_cb, _("debug <option>: Send various debug information to the current conversation."), NULL); |
| 11145 | 6554 | gaim_cmd_register("clear", "", GAIM_CMD_P_DEFAULT, |
| 6555 | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM, NULL, | |
| 6556 | clear_command_cb, _("clear: Clears the conversation scrollback."), NULL); | |
| 9213 | 6557 | gaim_cmd_register("help", "w", GAIM_CMD_P_DEFAULT, |
| 9597 | 6558 | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, NULL, |
| 6559 | help_command_cb, _("help <command>: Help on a specific command."), NULL); | |
| 11581 | 6560 | |
|
11856
0381a90c3e7b
[gaim-migrate @ 14147]
Richard Laager <rlaager@pidgin.im>
parents:
11855
diff
changeset
|
6561 | /********************************************************************** |
|
0381a90c3e7b
[gaim-migrate @ 14147]
Richard Laager <rlaager@pidgin.im>
parents:
11855
diff
changeset
|
6562 | * UI operations |
|
0381a90c3e7b
[gaim-migrate @ 14147]
Richard Laager <rlaager@pidgin.im>
parents:
11855
diff
changeset
|
6563 | **********************************************************************/ |
|
0381a90c3e7b
[gaim-migrate @ 14147]
Richard Laager <rlaager@pidgin.im>
parents:
11855
diff
changeset
|
6564 | |
|
12131
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6565 | gaim_signal_connect(gaim_connections_get_handle(), "signed-on", handle, |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6566 | G_CALLBACK(account_signed_off_cb), |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6567 | GINT_TO_POINTER(GAIM_CONV_ACCOUNT_ONLINE)); |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6568 | gaim_signal_connect(gaim_connections_get_handle(), "signed-off", handle, |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6569 | G_CALLBACK(account_signed_off_cb), |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6570 | GINT_TO_POINTER(GAIM_CONV_ACCOUNT_OFFLINE)); |
|
79b8499bbc6c
[gaim-migrate @ 14431]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12116
diff
changeset
|
6571 | |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
6572 | gaim_signal_connect(gaim_conversations_get_handle(), "received-im-msg", |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
6573 | handle, G_CALLBACK(received_im_msg_cb), NULL); |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
6574 | |
| 11581 | 6575 | gaim_conversations_set_ui_ops(&conversation_ui_ops); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6576 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6577 | hidden_convwin = gaim_gtk_conv_window_new(); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6578 | window_list = g_list_remove(window_list, hidden_convwin); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6579 | |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6580 | gaim_signal_connect(gaim_accounts_get_handle(), "account-status-changed", |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6581 | handle, GAIM_CALLBACK(account_status_changed_cb), NULL); |
|
12797
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6582 | |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6583 | /* Callbacks to update a conversation */ |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6584 | gaim_signal_connect(blist_handle, "buddy-added", handle, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6585 | G_CALLBACK(buddy_update_cb), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6586 | gaim_signal_connect(blist_handle, "buddy-removed", handle, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6587 | G_CALLBACK(buddy_update_cb), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6588 | gaim_signal_connect(blist_handle, "buddy-signed-on", |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6589 | handle, GAIM_CALLBACK(update_buddy_sign), "on"); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6590 | gaim_signal_connect(blist_handle, "buddy-signed-off", |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6591 | handle, GAIM_CALLBACK(update_buddy_sign), "off"); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6592 | gaim_signal_connect(blist_handle, "buddy-status-changed", |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6593 | handle, GAIM_CALLBACK(update_buddy_status_changed), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6594 | gaim_signal_connect(blist_handle, "buddy-idle-changed", |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6595 | handle, GAIM_CALLBACK(update_buddy_idle_changed), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6596 | gaim_signal_connect(blist_handle, "buddy-icon-changed", |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6597 | handle, GAIM_CALLBACK(update_buddy_icon), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6598 | gaim_signal_connect(gaim_conversations_get_handle(), "buddy-typing", |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6599 | handle, GAIM_CALLBACK(update_buddy_typing), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6600 | gaim_signal_connect(gaim_conversations_get_handle(), "buddy-typing-stopped", |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6601 | handle, GAIM_CALLBACK(update_buddy_typing), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6602 | gaim_signal_connect(gaim_gtk_conversations_get_handle(), "conversation-switched", |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6603 | handle, GAIM_CALLBACK(update_conversation_switched), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6604 | gaim_signal_connect(gaim_conversations_get_handle(), "chat-left", handle, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6605 | GAIM_CALLBACK(update_chat), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6606 | gaim_signal_connect(gaim_conversations_get_handle(), "chat-joined", handle, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6607 | GAIM_CALLBACK(update_chat), NULL); |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6608 | gaim_signal_connect(gaim_conversations_get_handle(), "chat-topic-changed", handle, |
|
d0f51cfde6bc
[gaim-migrate @ 15144]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12795
diff
changeset
|
6609 | GAIM_CALLBACK(update_chat_topic), NULL); |
|
12806
d1530bb8f05f
[gaim-migrate @ 15153]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12801
diff
changeset
|
6610 | gaim_signal_connect_priority(gaim_conversations_get_handle(), "conversation-updated", handle, |
|
d1530bb8f05f
[gaim-migrate @ 15153]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12801
diff
changeset
|
6611 | GAIM_CALLBACK(gaim_gtkconv_updated), NULL, |
|
d1530bb8f05f
[gaim-migrate @ 15153]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12801
diff
changeset
|
6612 | GAIM_SIGNAL_PRIORITY_LOWEST); |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6613 | } |
| 8582 | 6614 | |
| 6615 | void | |
| 6616 | gaim_gtk_conversations_uninit(void) | |
| 6617 | { | |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10431
diff
changeset
|
6618 | gaim_prefs_disconnect_by_handle(gaim_gtk_conversations_get_handle()); |
|
11855
4e5952c3ceac
[gaim-migrate @ 14146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11854
diff
changeset
|
6619 | gaim_signals_disconnect_by_handle(gaim_gtk_conversations_get_handle()); |
| 8582 | 6620 | gaim_signals_unregister_by_instance(gaim_gtk_conversations_get_handle()); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6621 | gaim_gtk_conv_window_destroy(hidden_convwin); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12101
diff
changeset
|
6622 | hidden_convwin=NULL; |
| 8582 | 6623 | } |
| 11581 | 6624 | |
| 6625 | ||
| 6626 | ||
| 6627 | ||
| 6628 | ||
| 6629 | ||
| 6630 | ||
| 6631 | ||
| 6632 | ||
| 6633 | ||
| 6634 | ||
| 6635 | ||
| 6636 | ||
| 6637 | ||
| 6638 | ||
| 6639 | ||
| 6640 | /* down here is where gtkconvwin.c ought to start. except they share like every freaking function, | |
| 6641 | * and touch each others' private members all day long */ | |
| 6642 | ||
| 6643 | /** | |
| 6644 | * @file gtkconvwin.c GTK+ Conversation Window API | |
| 6645 | * @ingroup gtkui | |
| 6646 | * | |
| 6647 | * gaim | |
| 6648 | * | |
| 6649 | * Gaim is the legal property of its developers, whose names are too numerous | |
| 6650 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 6651 | * source distribution. | |
| 6652 | * | |
| 6653 | * This program is free software; you can redistribute it and/or modify | |
| 6654 | * it under the terms of the GNU General Public License as published by | |
| 6655 | * the Free Software Foundation; either version 2 of the License, or | |
| 6656 | * (at your option) any later version. | |
| 6657 | * | |
| 6658 | * This program is distributed in the hope that it will be useful, | |
| 6659 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 6660 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 6661 | * GNU General Public License for more details. | |
| 6662 | * | |
| 6663 | * You should have received a copy of the GNU General Public License | |
| 6664 | * along with this program; if not, write to the Free Software | |
| 6665 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 6666 | * | |
| 6667 | */ | |
| 6668 | #include "internal.h" | |
| 6669 | #include "gtkgaim.h" | |
| 6670 | ||
| 6671 | ||
| 6672 | #include <gdk/gdkkeysyms.h> | |
| 6673 | ||
| 6674 | #include "account.h" | |
| 6675 | #include "cmds.h" | |
| 6676 | #include "debug.h" | |
| 6677 | #include "imgstore.h" | |
| 6678 | #include "log.h" | |
| 6679 | #include "notify.h" | |
| 6680 | #include "prpl.h" | |
| 6681 | #include "request.h" | |
| 6682 | #include "util.h" | |
| 6683 | ||
| 6684 | #include "gtkdnd-hints.h" | |
| 6685 | #include "gtkblist.h" | |
| 6686 | #include "gtkconv.h" | |
| 6687 | #include "gtkdialogs.h" | |
| 6688 | #include "gtkmenutray.h" | |
| 6689 | #include "gtkpounce.h" | |
| 6690 | #include "gtkprefs.h" | |
| 6691 | #include "gtkprivacy.h" | |
| 6692 | #include "gtkutils.h" | |
| 6693 | #include "gtkstock.h" | |
| 6694 | #include "gtkimhtml.h" | |
| 6695 | #include "gtkimhtmltoolbar.h" | |
| 6696 | ||
| 6697 | static void | |
| 6698 | do_close(GtkWidget *w, int resp, GaimGtkWindow *win) | |
| 6699 | { | |
| 6700 | gtk_widget_destroy(warn_close_dialog); | |
| 6701 | warn_close_dialog = NULL; | |
| 6702 | ||
| 6703 | if (resp == GTK_RESPONSE_OK) | |
| 6704 | gaim_gtk_conv_window_destroy(win); | |
| 6705 | } | |
| 6706 | ||
| 6707 | static void | |
| 6708 | build_warn_close_dialog(GaimGtkWindow *gtkwin) | |
| 6709 | { | |
| 6710 | GtkWidget *label; | |
| 6711 | GtkWidget *vbox, *hbox; | |
| 6712 | GtkWidget *img; | |
| 6713 | ||
| 6714 | g_return_if_fail(warn_close_dialog == NULL); | |
| 6715 | ||
| 6716 | ||
| 6717 | warn_close_dialog = gtk_dialog_new_with_buttons( | |
|
12660
3e9413c9162e
[gaim-migrate @ 15003]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
6718 | _("Confirm close"), |
|
3e9413c9162e
[gaim-migrate @ 15003]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
6719 | GTK_WINDOW(gtkwin->window), GTK_DIALOG_MODAL, |
|
3e9413c9162e
[gaim-migrate @ 15003]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
6720 | GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
|
3e9413c9162e
[gaim-migrate @ 15003]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
6721 | GAIM_STOCK_CLOSE_TABS, GTK_RESPONSE_OK, NULL); |
| 11581 | 6722 | |
| 6723 | gtk_dialog_set_default_response(GTK_DIALOG(warn_close_dialog), | |
| 6724 | GTK_RESPONSE_OK); | |
| 6725 | ||
| 6726 | gtk_container_set_border_width(GTK_CONTAINER(warn_close_dialog), | |
| 6727 | 6); | |
| 6728 | gtk_window_set_resizable(GTK_WINDOW(warn_close_dialog), FALSE); | |
| 6729 | gtk_dialog_set_has_separator(GTK_DIALOG(warn_close_dialog), | |
| 6730 | FALSE); | |
| 6731 | ||
| 6732 | /* Setup the outside spacing. */ | |
| 6733 | vbox = GTK_DIALOG(warn_close_dialog)->vbox; | |
| 6734 | ||
| 6735 | gtk_box_set_spacing(GTK_BOX(vbox), 12); | |
| 6736 | gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); | |
| 6737 | ||
| 6738 | img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_WARNING, | |
| 6739 | GTK_ICON_SIZE_DIALOG); | |
| 6740 | /* Setup the inner hbox and put the dialog's icon in it. */ | |
| 6741 | hbox = gtk_hbox_new(FALSE, 12); | |
| 6742 | gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 6743 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 6744 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 6745 | ||
| 6746 | /* Setup the right vbox. */ | |
| 6747 | vbox = gtk_vbox_new(FALSE, 12); | |
| 6748 | gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 6749 | ||
| 6750 | label = gtk_label_new(_("You have unread messages. Are you sure you want to close the window?")); | |
| 6751 | gtk_widget_set_size_request(label, 350, -1); | |
| 6752 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 6753 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 6754 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 6755 | ||
| 6756 | /* Connect the signals. */ | |
| 6757 | g_signal_connect(G_OBJECT(warn_close_dialog), "response", | |
| 6758 | G_CALLBACK(do_close), gtkwin); | |
| 6759 | ||
| 6760 | } | |
| 6761 | ||
| 6762 | /************************************************************************** | |
| 6763 | * Callbacks | |
| 6764 | **************************************************************************/ | |
| 6765 | ||
| 6766 | static gboolean | |
| 6767 | close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d) | |
| 6768 | { | |
| 6769 | GaimGtkWindow *win = d; | |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
6770 | GList *l; |
| 11581 | 6771 | |
| 6772 | /* If there are unread messages then show a warning dialog */ | |
| 6773 | for (l = gaim_gtk_conv_window_get_gtkconvs(win); | |
| 6774 | l != NULL; l = l->next) | |
| 6775 | { | |
| 6776 | GaimGtkConversation *gtkconv = l->data; | |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
6777 | if (gaim_conversation_get_type(gtkconv->active_conv) == GAIM_CONV_TYPE_IM && |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6778 | gtkconv->unseen_state >= GAIM_UNSEEN_TEXT) |
|
11664
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
6779 | { |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
6780 | build_warn_close_dialog(win); |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
6781 | gtk_widget_show_all(warn_close_dialog); |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
6782 | |
|
050d0caa0832
[gaim-migrate @ 13949]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11657
diff
changeset
|
6783 | return TRUE; |
| 11581 | 6784 | } |
| 6785 | } | |
| 6786 | ||
| 6787 | gaim_gtk_conv_window_destroy(win); | |
| 6788 | ||
| 6789 | return TRUE; | |
| 6790 | } | |
| 6791 | ||
| 11604 | 6792 | static void |
| 6793 | gtkconv_set_unseen(GaimGtkConversation *gtkconv, GaimUnseenState state) | |
| 6794 | { | |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6795 | if (state == GAIM_UNSEEN_NONE) |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6796 | { |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6797 | gtkconv->unseen_count = 0; |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6798 | gtkconv->unseen_state = GAIM_UNSEEN_NONE; |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6799 | } |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6800 | else |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6801 | { |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
6802 | if (state >= GAIM_UNSEEN_TEXT) |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12463
diff
changeset
|
6803 | gtkconv->unseen_count++; |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6804 | |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6805 | if (state > gtkconv->unseen_state) |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6806 | gtkconv->unseen_state = state; |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6807 | } |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12171
diff
changeset
|
6808 | |
|
12806
d1530bb8f05f
[gaim-migrate @ 15153]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12801
diff
changeset
|
6809 | gaim_conversation_update(gtkconv->active_conv, GAIM_CONV_UPDATE_UNSEEN); |
|
12021
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
6810 | } |
|
dff8a2336172
[gaim-migrate @ 14314]
Casey Harkins <charkins@pidgin.im>
parents:
12012
diff
changeset
|
6811 | |
| 11581 | 6812 | /* |
| 6813 | * When a conversation window is focused, we know the user | |
| 6814 | * has looked at it so we know there are no longer unseen | |
| 6815 | * messages. | |
| 6816 | */ | |
| 6817 | static gint | |
| 6818 | focus_win_cb(GtkWidget *w, GdkEventFocus *e, gpointer d) | |
| 6819 | { | |
| 6820 | GaimGtkWindow *win = d; | |
| 11604 | 6821 | GaimGtkConversation *gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win); |
| 6822 | ||
| 6823 | gtkconv_set_unseen(gtkconv, GAIM_UNSEEN_NONE); | |
| 11581 | 6824 | |
| 6825 | return FALSE; | |
| 6826 | } | |
| 6827 | ||
|
11851
32415386832d
[gaim-migrate @ 14142]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11846
diff
changeset
|
6828 | #if !GTK_CHECK_VERSION(2,6,0) |
| 11581 | 6829 | /* Courtesy of Galeon! */ |
| 6830 | static void | |
| 6831 | tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state) | |
| 6832 | { | |
| 6833 | if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE) | |
| 6834 | gtk_widget_set_state(widget, GTK_STATE_NORMAL); | |
| 6835 | } | |
|
11851
32415386832d
[gaim-migrate @ 14142]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11846
diff
changeset
|
6836 | #endif |
| 11581 | 6837 | |
| 6838 | static void | |
| 6839 | notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget) | |
| 6840 | { | |
| 6841 | static GdkCursor *cursor = NULL; | |
| 6842 | ||
| 6843 | gtkwin->in_drag = TRUE; | |
| 6844 | ||
| 6845 | if (gtkwin->drag_leave_signal) { | |
| 6846 | g_signal_handler_disconnect(G_OBJECT(widget), | |
| 6847 | gtkwin->drag_leave_signal); | |
| 6848 | gtkwin->drag_leave_signal = 0; | |
| 6849 | } | |
| 6850 | ||
| 6851 | if (cursor == NULL) | |
| 6852 | cursor = gdk_cursor_new(GDK_FLEUR); | |
| 6853 | ||
| 6854 | /* Grab the pointer */ | |
| 6855 | gtk_grab_add(gtkwin->notebook); | |
| 6856 | #ifndef _WIN32 | |
| 6857 | /* Currently for win32 GTK+ (as of 2.2.1), gdk_pointer_is_grabbed will | |
| 6858 | always be true after a button press. */ | |
| 6859 | if (!gdk_pointer_is_grabbed()) | |
| 6860 | #endif | |
| 6861 | gdk_pointer_grab(gtkwin->notebook->window, FALSE, | |
| 6862 | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, | |
| 6863 | NULL, cursor, GDK_CURRENT_TIME); | |
| 6864 | } | |
| 6865 | ||
| 6866 | static gboolean | |
| 6867 | notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimGtkWindow *win) | |
| 6868 | { | |
| 6869 | ||
| 6870 | /* | |
| 6871 | * Make sure the user moved the mouse far enough for the | |
| 6872 | * drag to be initiated. | |
| 6873 | */ | |
| 6874 | if (win->in_predrag) { | |
| 6875 | if (e->x_root < win->drag_min_x || | |
| 6876 | e->x_root >= win->drag_max_x || | |
| 6877 | e->y_root < win->drag_min_y || | |
| 6878 | e->y_root >= win->drag_max_y) { | |
| 6879 | ||
| 6880 | win->in_predrag = FALSE; | |
| 6881 | notebook_init_grab(win, widget); | |
| 6882 | } | |
| 6883 | } | |
| 6884 | else { /* Otherwise, draw the arrows. */ | |
| 6885 | GaimGtkWindow *dest_win; | |
| 6886 | GtkNotebook *dest_notebook; | |
| 6887 | GtkWidget *tab; | |
| 6888 | gint nb_x, nb_y, page_num; | |
| 6889 | gint arrow1_x, arrow1_y, arrow2_x, arrow2_y; | |
| 6890 | gboolean horiz_tabs = FALSE; | |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
6891 | GaimGtkConversation *gtkconv; |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
6892 | gboolean to_right = FALSE; |
| 11581 | 6893 | |
| 6894 | /* Get the window that the cursor is over. */ | |
| 6895 | dest_win = gaim_gtk_conv_window_get_at_xy(e->x_root, e->y_root); | |
| 6896 | ||
| 6897 | if (dest_win == NULL) { | |
| 6898 | dnd_hints_hide_all(); | |
| 6899 | ||
| 6900 | return TRUE; | |
| 6901 | } | |
| 6902 | ||
| 6903 | dest_notebook = GTK_NOTEBOOK(dest_win->notebook); | |
| 6904 | ||
| 6905 | gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y); | |
| 6906 | ||
| 6907 | arrow1_x = arrow2_x = nb_x; | |
| 6908 | arrow1_y = arrow2_y = nb_y; | |
| 6909 | ||
| 6910 | page_num = gaim_gtkconv_get_tab_at_xy(dest_win, | |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
6911 | e->x_root, e->y_root, &to_right); |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
6912 | to_right = to_right && (win != dest_win); |
| 11581 | 6913 | |
| 6914 | if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP || | |
| 6915 | gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) { | |
| 6916 | ||
| 6917 | horiz_tabs = TRUE; | |
| 6918 | } | |
| 6919 | ||
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
6920 | gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(dest_win, page_num); |
|
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
6921 | tab = gtkconv->tabby; |
| 11581 | 6922 | |
| 6923 | if (horiz_tabs) { | |
| 6924 | arrow1_x = arrow2_x = nb_x + tab->allocation.x; | |
| 6925 | ||
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
6926 | if (((gpointer)win == (gpointer)dest_win && win->drag_tab < page_num) || to_right) { |
| 11581 | 6927 | arrow1_x += tab->allocation.width; |
| 6928 | arrow2_x += tab->allocation.width; | |
| 6929 | } | |
| 6930 | ||
| 6931 | arrow1_y = nb_y + tab->allocation.y; | |
|
12795
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
6932 | arrow2_y = nb_y + tab->allocation.y + tab->allocation.height; |
| 11581 | 6933 | } else { |
| 6934 | arrow1_x = nb_x + tab->allocation.x; | |
|
12795
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
6935 | arrow2_x = nb_x + tab->allocation.x + tab->allocation.width; |
|
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
6936 | arrow1_y = arrow2_y = nb_y + tab->allocation.y; |
|
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
6937 | |
|
83d09a3b4e3c
[gaim-migrate @ 15142]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12737
diff
changeset
|
6938 | if (((gpointer)win == (gpointer)dest_win && win->drag_tab < page_num) || to_right) { |
| 11581 | 6939 | arrow1_y += tab->allocation.height; |
| 6940 | arrow2_y += tab->allocation.height; | |
| 6941 | } | |
| 6942 | } | |
| 6943 | ||
| 6944 | if (horiz_tabs) { | |
| 6945 | dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y); | |
| 6946 | dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y); | |
| 6947 | } else { | |
| 6948 | dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y); | |
| 6949 | dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y); | |
| 6950 | } | |
| 6951 | } | |
| 6952 | ||
| 6953 | return TRUE; | |
| 6954 | } | |
| 6955 | ||
| 6956 | static gboolean | |
| 6957 | notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimGtkWindow *win) | |
| 6958 | { | |
| 6959 | if (win->in_drag) | |
| 6960 | return FALSE; | |
| 6961 | ||
| 6962 | if (e->x_root < win->drag_min_x || | |
| 6963 | e->x_root >= win->drag_max_x || | |
| 6964 | e->y_root < win->drag_min_y || | |
| 6965 | e->y_root >= win->drag_max_y) { | |
| 6966 | ||
| 6967 | win->in_predrag = FALSE; | |
| 6968 | notebook_init_grab(win, widget); | |
| 6969 | } | |
| 6970 | ||
| 6971 | return TRUE; | |
| 6972 | } | |
| 6973 | ||
| 6974 | /* | |
| 6975 | * THANK YOU GALEON! | |
| 6976 | */ | |
| 6977 | static gboolean | |
| 6978 | notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimGtkWindow *win) | |
| 6979 | { | |
| 6980 | gint nb_x, nb_y, x_rel, y_rel; | |
| 6981 | int tab_clicked; | |
| 6982 | GtkWidget *page; | |
| 6983 | GtkWidget *tab; | |
| 6984 | ||
| 6985 | if (e->button != 1 || e->type != GDK_BUTTON_PRESS) | |
| 6986 | return FALSE; | |
| 6987 | ||
| 6988 | ||
| 6989 | if (win->in_drag) { | |
| 6990 | gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", | |
| 6991 | "Already in the middle of a window drag at tab_press_cb\n"); | |
| 6992 | return TRUE; | |
| 6993 | } | |
| 6994 | ||
| 6995 | /* | |
| 6996 | * Make sure a tab was actually clicked. The arrow buttons | |
| 6997 | * mess things up. | |
| 6998 | */ | |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
6999 | tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root, NULL); |
| 11581 | 7000 | |
| 7001 | if (tab_clicked == -1) | |
| 7002 | return FALSE; | |
| 7003 | ||
| 7004 | /* | |
| 7005 | * Get the relative position of the press event, with regards to | |
| 7006 | * the position of the notebook. | |
| 7007 | */ | |
| 7008 | gdk_window_get_origin(win->notebook->window, &nb_x, &nb_y); | |
| 7009 | ||
| 7010 | x_rel = e->x_root - nb_x; | |
| 7011 | y_rel = e->y_root - nb_y; | |
| 7012 | ||
| 7013 | /* Reset the min/max x/y */ | |
| 7014 | win->drag_min_x = 0; | |
| 7015 | win->drag_min_y = 0; | |
| 7016 | win->drag_max_x = 0; | |
| 7017 | win->drag_max_y = 0; | |
| 7018 | ||
| 7019 | /* Find out which tab was dragged. */ | |
| 7020 | page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(win->notebook), tab_clicked); | |
| 7021 | tab = gtk_notebook_get_tab_label(GTK_NOTEBOOK(win->notebook), page); | |
| 7022 | ||
| 7023 | win->drag_min_x = tab->allocation.x + nb_x; | |
| 7024 | win->drag_min_y = tab->allocation.y + nb_y; | |
| 7025 | win->drag_max_x = tab->allocation.width + win->drag_min_x; | |
| 7026 | win->drag_max_y = tab->allocation.height + win->drag_min_y; | |
| 7027 | ||
| 7028 | /* Make sure the click occurred in the tab. */ | |
| 7029 | if (e->x_root < win->drag_min_x || | |
| 7030 | e->x_root >= win->drag_max_x || | |
| 7031 | e->y_root < win->drag_min_y || | |
| 7032 | e->y_root >= win->drag_max_y) { | |
| 7033 | ||
| 7034 | return FALSE; | |
| 7035 | } | |
| 7036 | ||
| 7037 | win->in_predrag = TRUE; | |
| 7038 | win->drag_tab = tab_clicked; | |
| 7039 | ||
| 7040 | /* Connect the new motion signals. */ | |
| 7041 | win->drag_motion_signal = | |
| 7042 | g_signal_connect(G_OBJECT(widget), "motion_notify_event", | |
| 7043 | G_CALLBACK(notebook_motion_cb), win); | |
| 7044 | ||
| 7045 | win->drag_leave_signal = | |
| 7046 | g_signal_connect(G_OBJECT(widget), "leave_notify_event", | |
| 7047 | G_CALLBACK(notebook_leave_cb), win); | |
| 7048 | ||
| 7049 | return FALSE; | |
| 7050 | } | |
| 7051 | ||
| 7052 | static gboolean | |
| 7053 | notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimGtkWindow *win) | |
| 7054 | { | |
| 7055 | GaimGtkWindow *dest_win; | |
| 7056 | GaimConversation *conv; | |
| 7057 | GaimGtkConversation *gtkconv; | |
| 7058 | gint dest_page_num = 0; | |
| 7059 | gboolean new_window = FALSE; | |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
7060 | gboolean to_right = FALSE; |
| 11581 | 7061 | |
| 7062 | /* | |
| 7063 | * Don't check to make sure that the event's window matches the | |
| 7064 | * widget's, because we may be getting an event passed on from the | |
| 7065 | * close button. | |
| 7066 | */ | |
| 7067 | if (e->button != 1 && e->type != GDK_BUTTON_RELEASE) | |
| 7068 | return FALSE; | |
| 7069 | ||
| 7070 | if (gdk_pointer_is_grabbed()) { | |
| 7071 | gdk_pointer_ungrab(GDK_CURRENT_TIME); | |
| 7072 | gtk_grab_remove(widget); | |
| 7073 | } | |
| 7074 | ||
| 7075 | if (!win->in_predrag && !win->in_drag) | |
| 7076 | return FALSE; | |
| 7077 | ||
| 7078 | /* Disconnect the motion signal. */ | |
| 7079 | if (win->drag_motion_signal) { | |
| 7080 | g_signal_handler_disconnect(G_OBJECT(widget), | |
| 7081 | win->drag_motion_signal); | |
| 7082 | ||
| 7083 | win->drag_motion_signal = 0; | |
| 7084 | } | |
| 7085 | ||
| 7086 | /* | |
| 7087 | * If we're in a pre-drag, we'll also need to disconnect the leave | |
| 7088 | * signal. | |
| 7089 | */ | |
| 7090 | if (win->in_predrag) { | |
| 7091 | win->in_predrag = FALSE; | |
| 7092 | ||
| 7093 | if (win->drag_leave_signal) { | |
| 7094 | g_signal_handler_disconnect(G_OBJECT(widget), | |
| 7095 | win->drag_leave_signal); | |
| 7096 | ||
| 7097 | win->drag_leave_signal = 0; | |
| 7098 | } | |
| 7099 | } | |
| 7100 | ||
| 7101 | /* If we're not in drag... */ | |
| 7102 | /* We're perfectly normal people! */ | |
| 7103 | if (!win->in_drag) | |
| 7104 | return FALSE; | |
| 7105 | ||
| 7106 | win->in_drag = FALSE; | |
| 7107 | ||
| 7108 | dnd_hints_hide_all(); | |
| 7109 | ||
| 7110 | dest_win = gaim_gtk_conv_window_get_at_xy(e->x_root, e->y_root); | |
| 7111 | ||
| 7112 | conv = gaim_gtk_conv_window_get_active_conversation(win); | |
| 7113 | ||
| 7114 | if (dest_win == NULL) { | |
| 7115 | /* If the current window doesn't have any other conversations, | |
| 7116 | * there isn't much point transferring the conv to a new window. */ | |
| 7117 | if (gaim_gtk_conv_window_get_gtkconv_count(win) > 1) { | |
| 7118 | /* Make a new window to stick this to. */ | |
| 7119 | dest_win = gaim_gtk_conv_window_new(); | |
| 7120 | new_window = TRUE; | |
| 7121 | } | |
| 7122 | } | |
| 7123 | ||
| 7124 | if (dest_win == NULL) | |
| 7125 | return FALSE; | |
| 7126 | ||
| 7127 | gaim_signal_emit(gaim_gtk_conversations_get_handle(), | |
| 7128 | "conversation-dragging", win, dest_win); | |
| 7129 | ||
| 7130 | /* Get the destination page number. */ | |
| 7131 | if (!new_window) | |
| 7132 | dest_page_num = gaim_gtkconv_get_tab_at_xy(dest_win, | |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
7133 | e->x_root, e->y_root, &to_right); |
| 11581 | 7134 | |
| 7135 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7136 | ||
| 7137 | if (win == dest_win) { | |
| 7138 | gtk_notebook_reorder_child(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, dest_page_num); | |
| 7139 | } else { | |
| 7140 | gaim_gtk_conv_window_remove_gtkconv(win, gtkconv); | |
| 7141 | gaim_gtk_conv_window_add_gtkconv(dest_win, gtkconv); | |
|
11614
47ced44a7707
[gaim-migrate @ 13888]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11613
diff
changeset
|
7142 | gtk_notebook_reorder_child(GTK_NOTEBOOK(dest_win->notebook), gtkconv->tab_cont, dest_page_num + to_right); |
| 11581 | 7143 | gaim_gtk_conv_window_switch_gtkconv(dest_win, gtkconv); |
| 7144 | if (new_window) { | |
| 7145 | gint win_width, win_height; | |
| 7146 | ||
| 7147 | gtk_window_get_size(GTK_WINDOW(dest_win->window), | |
| 7148 | &win_width, &win_height); | |
| 7149 | ||
| 7150 | gtk_window_move(GTK_WINDOW(dest_win->window), | |
| 7151 | e->x_root - (win_width / 2), | |
| 7152 | e->y_root - (win_height / 2)); | |
| 7153 | ||
| 7154 | gaim_gtk_conv_window_show(dest_win); | |
| 7155 | } | |
| 7156 | } | |
| 7157 | ||
| 7158 | gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 7159 | ||
| 7160 | return TRUE; | |
| 7161 | } | |
| 7162 | ||
| 7163 | ||
| 7164 | static void | |
| 7165 | before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, | |
| 7166 | gpointer user_data) | |
| 7167 | { | |
| 7168 | GaimGtkWindow *win; | |
| 7169 | GaimConversation *conv; | |
| 7170 | GaimGtkConversation *gtkconv; | |
| 7171 | ||
| 7172 | win = user_data; | |
| 7173 | conv = gaim_gtk_conv_window_get_active_conversation(win); | |
| 7174 | ||
| 7175 | g_return_if_fail(conv != NULL); | |
| 7176 | ||
| 7177 | if (gaim_conversation_get_type(conv) != GAIM_CONV_TYPE_IM) | |
| 7178 | return; | |
| 7179 | ||
| 7180 | gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7181 | ||
| 7182 | stop_anim(NULL, gtkconv); | |
| 7183 | } | |
|
12085
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7184 | static void |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7185 | close_window(GtkWidget *w, GaimGtkWindow *win) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7186 | { |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7187 | close_win_cb(w, NULL, win); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7188 | } |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7189 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7190 | static void |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7191 | detach_tab_cb(GtkWidget *w, GObject *menu) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7192 | { |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7193 | GaimGtkWindow *win, *new_window; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7194 | GaimGtkConversation *gtkconv; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7195 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7196 | gtkconv = g_object_get_data(menu, "clicked_tab"); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7197 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7198 | if (!gtkconv) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7199 | return; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7200 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7201 | win = gaim_gtkconv_get_window(gtkconv); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7202 | /* Nothing to do if there's only one tab in the window */ |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7203 | if (gaim_gtk_conv_window_get_gtkconv_count(win) == 1) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7204 | return; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7205 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7206 | gaim_gtk_conv_window_remove_gtkconv(win, gtkconv); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7207 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7208 | new_window = gaim_gtk_conv_window_new(); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7209 | gaim_gtk_conv_window_add_gtkconv(new_window, gtkconv); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7210 | gaim_gtk_conv_window_show(new_window); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7211 | } |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7212 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7213 | static void |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7214 | close_others_cb(GtkWidget *w, GObject *menu) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7215 | { |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7216 | GList *iter; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7217 | GaimGtkConversation *gtkconv; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7218 | GaimGtkWindow *win; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7219 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7220 | gtkconv = g_object_get_data(menu, "clicked_tab"); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7221 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7222 | if (!gtkconv) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7223 | return; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7224 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7225 | win = gaim_gtkconv_get_window(gtkconv); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7226 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7227 | for (iter = gaim_gtk_conv_window_get_gtkconvs(win); iter; ) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7228 | { |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7229 | GaimGtkConversation *gconv = iter->data; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7230 | iter = iter->next; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7231 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7232 | if (gconv != gtkconv) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7233 | { |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7234 | close_conv_cb(NULL, gconv); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7235 | } |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7236 | } |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7237 | } |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7238 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7239 | static void close_tab_cb(GtkWidget *w, GObject *menu) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7240 | { |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7241 | GaimGtkConversation *gtkconv; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7242 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7243 | gtkconv = g_object_get_data(menu, "clicked_tab"); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7244 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7245 | if (gtkconv) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7246 | close_conv_cb(NULL, gtkconv); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7247 | } |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7248 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7249 | static gboolean |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7250 | right_click_menu_cb(GtkNotebook *notebook, GdkEventButton *event, GaimGtkWindow *win) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7251 | { |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7252 | GtkWidget *item, *menu; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7253 | GaimGtkConversation *gtkconv; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7254 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7255 | if (event->type != GDK_BUTTON_PRESS || event->button != 3) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7256 | return FALSE; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7257 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7258 | gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, |
|
12140
3c1aabfb89f2
[gaim-migrate @ 14441]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12136
diff
changeset
|
7259 | gaim_gtkconv_get_tab_at_xy(win, event->x_root, event->y_root, NULL)); |
|
12085
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7260 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7261 | if (g_object_get_data(G_OBJECT(notebook->menu), "clicked_tab")) |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7262 | { |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7263 | g_object_set_data(G_OBJECT(notebook->menu), "clicked_tab", gtkconv); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7264 | return FALSE; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7265 | } |
|
12188
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
7266 | |
|
12085
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7267 | g_object_set_data(G_OBJECT(notebook->menu), "clicked_tab", gtkconv); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7268 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7269 | menu = notebook->menu; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7270 | gaim_separator(GTK_WIDGET(menu)); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7271 | |
|
13327
3303ca69cbaf
[gaim-migrate @ 15696]
Mark Doliner <markdoliner@pidgin.im>
parents:
13326
diff
changeset
|
7272 | item = gtk_menu_item_new_with_label(_("Close other tabs")); |
|
12824
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7273 | gtk_widget_show(item); |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7274 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7275 | g_signal_connect(G_OBJECT(item), "activate", |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7276 | G_CALLBACK(close_others_cb), menu); |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7277 | |
|
13327
3303ca69cbaf
[gaim-migrate @ 15696]
Mark Doliner <markdoliner@pidgin.im>
parents:
13326
diff
changeset
|
7278 | item = gtk_menu_item_new_with_label(_("Close all tabs")); |
|
12824
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7279 | gtk_widget_show(item); |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7280 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7281 | g_signal_connect(G_OBJECT(item), "activate", |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7282 | G_CALLBACK(close_window), win); |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7283 | |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7284 | gaim_separator(menu); |
|
4b6802cb3e9f
[gaim-migrate @ 15172]
Richard Laager <rlaager@pidgin.im>
parents:
12816
diff
changeset
|
7285 | |
|
13327
3303ca69cbaf
[gaim-migrate @ 15696]
Mark Doliner <markdoliner@pidgin.im>
parents:
13326
diff
changeset
|
7286 | item = gtk_menu_item_new_with_label(_("Detach this tab")); |
|
12085
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7287 | gtk_widget_show(item); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7288 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7289 | g_signal_connect(G_OBJECT(item), "activate", |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7290 | G_CALLBACK(detach_tab_cb), menu); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7291 | |
|
13327
3303ca69cbaf
[gaim-migrate @ 15696]
Mark Doliner <markdoliner@pidgin.im>
parents:
13326
diff
changeset
|
7292 | item = gtk_menu_item_new_with_label(_("Close this tab")); |
|
12085
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7293 | gtk_widget_show(item); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7294 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7295 | g_signal_connect(G_OBJECT(item), "activate", |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7296 | G_CALLBACK(close_tab_cb), menu); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7297 | |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7298 | return FALSE; |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7299 | } |
| 11581 | 7300 | |
| 7301 | static void | |
| 7302 | switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, | |
| 7303 | gpointer user_data) | |
| 7304 | { | |
| 7305 | GaimGtkWindow *win; | |
| 7306 | GaimConversation *conv; | |
| 7307 | GaimGtkConversation *gtkconv; | |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7308 | const char *sound_method; |
| 11581 | 7309 | |
| 7310 | win = user_data; | |
| 7311 | gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, page_num); | |
| 7312 | conv = gtkconv->active_conv; | |
| 7313 | ||
| 7314 | g_return_if_fail(conv != NULL); | |
| 7315 | ||
| 7316 | /* | |
| 7317 | * Only set "unseen" to "none" if the window has focus | |
| 7318 | */ | |
| 7319 | if (gaim_gtk_conv_window_has_focus(win)) | |
| 11604 | 7320 | gtkconv_set_unseen(gtkconv, GAIM_UNSEEN_NONE); |
| 11581 | 7321 | |
| 7322 | /* Update the menubar */ | |
| 7323 | ||
|
11672
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
7324 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkconv->win->menu.logging), |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
7325 | gaim_conversation_is_logging(conv)); |
|
018c70c8134c
[gaim-migrate @ 13958]
Richard Laager <rlaager@pidgin.im>
parents:
11671
diff
changeset
|
7326 | |
| 11594 | 7327 | generate_send_to_items(win); |
| 7328 | ||
| 11604 | 7329 | gaim_gtkconv_switch_active_conversation(conv); |
| 11581 | 7330 | |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7331 | sound_method = gaim_prefs_get_string("/gaim/gtk/sound/method"); |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7332 | if (strcmp(sound_method, "none") != 0) |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7333 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds), |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7334 | gtkconv->make_sound); |
| 11581 | 7335 | |
| 7336 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_formatting_toolbar), | |
| 7337 | gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar")); | |
| 7338 | ||
| 7339 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_timestamps), | |
|
12188
44a4de71fae9
[gaim-migrate @ 14490]
Mark Doliner <markdoliner@pidgin.im>
parents:
12175
diff
changeset
|
7340 | gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 11581 | 7341 | |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7342 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM && |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7343 | gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
|
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7344 | { |
| 11581 | 7345 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon), |
| 7346 | gtkconv->u.im->show_icon); | |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7347 | } |
| 11604 | 7348 | |
| 11581 | 7349 | /* |
| 7350 | * We pause icons when they are not visible. If this icon should | |
| 7351 | * be animated then start it back up again. | |
| 7352 | */ | |
| 7353 | if ((gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) && | |
| 7354 | (gtkconv->u.im->animate)) | |
| 7355 | start_anim(NULL, gtkconv); | |
|
12639
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
7356 | |
|
7df970d037c3
[gaim-migrate @ 14975]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12638
diff
changeset
|
7357 | gaim_signal_emit(gaim_gtk_conversations_get_handle(), "conversation-switched", conv); |
| 11581 | 7358 | } |
| 7359 | ||
| 7360 | /************************************************************************** | |
| 7361 | * GTK+ window ops | |
| 7362 | **************************************************************************/ | |
| 7363 | ||
| 7364 | GList * | |
| 7365 | gaim_gtk_conv_windows_get_list() | |
| 7366 | { | |
| 7367 | return window_list; | |
| 7368 | } | |
| 7369 | ||
| 7370 | GaimGtkWindow * | |
| 7371 | gaim_gtk_conv_window_new() | |
| 7372 | { | |
| 7373 | GaimGtkWindow *win; | |
| 7374 | GtkPositionType pos; | |
| 7375 | GtkWidget *testidea; | |
| 7376 | GtkWidget *menubar; | |
| 7377 | ||
| 7378 | win = g_malloc0(sizeof(GaimGtkWindow)); | |
| 7379 | ||
| 7380 | window_list = g_list_append(window_list, win); | |
| 7381 | ||
| 7382 | /* Create the window. */ | |
| 7383 | win->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 7384 | gtk_window_set_role(GTK_WINDOW(win->window), "conversation"); | |
| 7385 | gtk_window_set_resizable(GTK_WINDOW(win->window), TRUE); | |
| 7386 | gtk_container_set_border_width(GTK_CONTAINER(win->window), 0); | |
| 7387 | GTK_WINDOW(win->window)->allow_shrink = TRUE; | |
| 7388 | ||
| 7389 | g_signal_connect(G_OBJECT(win->window), "delete_event", | |
| 7390 | G_CALLBACK(close_win_cb), win); | |
| 7391 | ||
| 7392 | g_signal_connect(G_OBJECT(win->window), "focus_in_event", | |
| 7393 | G_CALLBACK(focus_win_cb), win); | |
| 7394 | ||
| 7395 | /* Create the notebook. */ | |
| 7396 | win->notebook = gtk_notebook_new(); | |
| 7397 | ||
| 7398 | pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side"); | |
| 7399 | ||
| 7400 | #if 0 | |
| 7401 | gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(win->notebook), 0); | |
| 7402 | gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(win->notebook), 0); | |
| 7403 | #endif | |
| 7404 | gtk_notebook_set_tab_pos(GTK_NOTEBOOK(win->notebook), pos); | |
| 7405 | gtk_notebook_set_scrollable(GTK_NOTEBOOK(win->notebook), TRUE); | |
| 7406 | gtk_notebook_popup_enable(GTK_NOTEBOOK(win->notebook)); | |
| 7407 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), FALSE); | |
| 7408 | gtk_notebook_set_show_border(GTK_NOTEBOOK(win->notebook), FALSE); | |
| 7409 | ||
|
12085
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7410 | g_signal_connect(G_OBJECT(win->notebook), "button-press-event", |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7411 | G_CALLBACK(right_click_menu_cb), win); |
|
8f81dd6c799a
[gaim-migrate @ 14382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12084
diff
changeset
|
7412 | |
| 11581 | 7413 | gtk_widget_show(win->notebook); |
| 7414 | ||
| 7415 | g_signal_connect(G_OBJECT(win->notebook), "switch_page", | |
| 7416 | G_CALLBACK(before_switch_conv_cb), win); | |
| 7417 | g_signal_connect_after(G_OBJECT(win->notebook), "switch_page", | |
| 7418 | G_CALLBACK(switch_conv_cb), win); | |
| 7419 | ||
| 7420 | /* Setup the tab drag and drop signals. */ | |
| 7421 | gtk_widget_add_events(win->notebook, | |
| 7422 | GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); | |
| 7423 | g_signal_connect(G_OBJECT(win->notebook), "button_press_event", | |
| 7424 | G_CALLBACK(notebook_press_cb), win); | |
| 7425 | g_signal_connect(G_OBJECT(win->notebook), "button_release_event", | |
| 7426 | G_CALLBACK(notebook_release_cb), win); | |
| 7427 | ||
| 7428 | testidea = gtk_vbox_new(FALSE, 0); | |
| 7429 | ||
| 7430 | /* Setup the menubar. */ | |
| 7431 | menubar = setup_menubar(win); | |
| 7432 | gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0); | |
| 7433 | ||
| 7434 | gtk_box_pack_start(GTK_BOX(testidea), win->notebook, TRUE, TRUE, 0); | |
| 7435 | ||
| 7436 | gtk_container_add(GTK_CONTAINER(win->window), testidea); | |
| 7437 | ||
| 7438 | gtk_widget_show(testidea); | |
| 7439 | ||
| 7440 | return win; | |
| 7441 | } | |
| 7442 | ||
| 7443 | void | |
| 7444 | gaim_gtk_conv_window_destroy(GaimGtkWindow *win) | |
| 7445 | { | |
|
12594
8848fcf3a39c
[gaim-migrate @ 14924]
Richard Laager <rlaager@pidgin.im>
parents:
12579
diff
changeset
|
7446 | gaim_prefs_disconnect_by_handle(win); |
| 11581 | 7447 | window_list = g_list_remove(window_list, win); |
| 7448 | ||
| 11611 | 7449 | if (win->gtkconvs) { |
| 7450 | while (win->gtkconvs) { | |
| 7451 | GList *nextgtk = win->gtkconvs->next; | |
| 7452 | GaimGtkConversation *gtkconv = win->gtkconvs->data; | |
| 7453 | GList *nextcore = gtkconv->convs->next; | |
| 7454 | GaimConversation *conv = gtkconv->convs->data; | |
| 7455 | gaim_conversation_destroy(conv); | |
| 7456 | if (!nextgtk && !nextcore) | |
| 7457 | /* we'll end up invoking ourselves when we destroy our last child */ | |
| 7458 | /* so don't destroy ourselves right now */ | |
| 7459 | return; | |
| 7460 | } | |
| 7461 | return; | |
| 7462 | } | |
| 11581 | 7463 | gtk_widget_destroy(win->window); |
| 7464 | ||
| 7465 | g_object_unref(G_OBJECT(win->menu.item_factory)); | |
| 7466 | ||
|
13148
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
7467 | gaim_notify_close_with_handle(win); |
|
10e85e14b7f4
[gaim-migrate @ 15510]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13140
diff
changeset
|
7468 | |
| 11581 | 7469 | g_free(win); |
| 7470 | } | |
| 7471 | ||
| 7472 | void | |
| 7473 | gaim_gtk_conv_window_show(GaimGtkWindow *win) | |
| 7474 | { | |
| 7475 | gtk_widget_show(win->window); | |
| 7476 | } | |
| 7477 | ||
| 7478 | void | |
| 7479 | gaim_gtk_conv_window_hide(GaimGtkWindow *win) | |
| 7480 | { | |
| 7481 | gtk_widget_hide(win->window); | |
| 7482 | } | |
| 7483 | ||
| 7484 | void | |
| 7485 | gaim_gtk_conv_window_raise(GaimGtkWindow *win) | |
| 7486 | { | |
|
12084
cd736a6cecb4
[gaim-migrate @ 14381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12080
diff
changeset
|
7487 | gtk_window_present(GTK_WINDOW(win->window)); |
| 11581 | 7488 | } |
| 7489 | ||
| 7490 | void | |
| 7491 | gaim_gtk_conv_window_switch_gtkconv(GaimGtkWindow *win, GaimGtkConversation *gtkconv) | |
| 7492 | { | |
| 7493 | gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), | |
| 7494 | gtk_notebook_page_num(GTK_NOTEBOOK(win->notebook), | |
| 7495 | gtkconv->tab_cont)); | |
| 7496 | } | |
| 7497 | ||
| 7498 | void | |
| 7499 | gaim_gtk_conv_window_add_gtkconv(GaimGtkWindow *win, GaimGtkConversation *gtkconv) | |
| 7500 | { | |
| 7501 | GaimConversation *conv = gtkconv->active_conv; | |
| 7502 | GaimGtkConversation *focus_gtkconv; | |
| 7503 | GtkWidget *tabby, *menu_tabby; | |
| 7504 | GtkWidget *tab_cont = gtkconv->tab_cont; | |
| 7505 | GtkWidget *close_image; | |
| 7506 | GaimConversationType conv_type; | |
| 7507 | const char *name; | |
| 7508 | const gchar *tmp_lab; | |
| 7509 | gint close_button_width, close_button_height, focus_width, focus_pad; | |
| 11619 | 7510 | gboolean tabs_side = FALSE; |
| 7511 | gint angle = 0; | |
| 11581 | 7512 | |
| 7513 | name = gaim_conversation_get_name(conv); | |
| 7514 | conv_type = gaim_conversation_get_type(conv); | |
| 7515 | ||
| 7516 | ||
| 7517 | win->gtkconvs = g_list_append(win->gtkconvs, gtkconv); | |
| 7518 | gtkconv->win = win; | |
| 7519 | ||
| 11619 | 7520 | if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == GTK_POS_LEFT || |
| 7521 | gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == GTK_POS_RIGHT) | |
| 7522 | tabs_side = TRUE; | |
| 7523 | else if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == (GTK_POS_LEFT|8)) | |
| 7524 | angle = 90; | |
| 7525 | else if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == (GTK_POS_RIGHT|8)) | |
| 7526 | angle = 270; | |
| 7527 | ||
| 7528 | if (angle) | |
| 7529 | gtkconv->tabby = tabby = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); | |
| 7530 | else | |
| 7531 | gtkconv->tabby = tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); | |
| 11581 | 7532 | gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 7533 | ||
| 7534 | /* Close button. */ | |
| 7535 | gtkconv->close = gtk_button_new(); | |
| 7536 | gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &close_button_width, &close_button_height); | |
| 7537 | if (gtk_check_version(2, 4, 2) == NULL) { | |
| 7538 | /* Need to account for extra padding around the gtkbutton */ | |
| 7539 | gtk_widget_style_get(GTK_WIDGET(gtkconv->close), | |
| 7540 | "focus-line-width", &focus_width, | |
| 7541 | "focus-padding", &focus_pad, | |
| 7542 | NULL); | |
| 7543 | close_button_width += (focus_width + focus_pad) * 2; | |
| 7544 | close_button_height += (focus_width + focus_pad) * 2; | |
| 7545 | } | |
| 7546 | gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), | |
| 7547 | close_button_width, close_button_height); | |
| 7548 | ||
| 7549 | gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE); | |
| 7550 | close_image = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); | |
| 7551 | gtk_widget_show(close_image); | |
| 7552 | gtk_container_add(GTK_CONTAINER(gtkconv->close), close_image); | |
| 7553 | gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, | |
| 7554 | _("Close conversation"), NULL); | |
| 7555 | ||
| 7556 | g_signal_connect(G_OBJECT(gtkconv->close), "clicked", | |
| 7557 | G_CALLBACK(close_conv_cb), gtkconv); | |
| 7558 | ||
|
11851
32415386832d
[gaim-migrate @ 14142]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11846
diff
changeset
|
7559 | #if !GTK_CHECK_VERSION(2,6,0) |
| 11581 | 7560 | /* |
| 7561 | * I love Galeon. They have a fix for that stupid annoying visible | |
| 7562 | * border bug. I love you guys! -- ChipX86 | |
| 7563 | */ | |
|
11851
32415386832d
[gaim-migrate @ 14142]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11846
diff
changeset
|
7564 | /* This is fixed properly in some version of Gtk before 2.6.0 */ |
| 11581 | 7565 | g_signal_connect(G_OBJECT(gtkconv->close), "state_changed", |
| 7566 | G_CALLBACK(tab_close_button_state_changed_cb), NULL); | |
|
11851
32415386832d
[gaim-migrate @ 14142]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11846
diff
changeset
|
7567 | #endif |
| 11581 | 7568 | |
| 7569 | /* Status icon. */ | |
| 7570 | gtkconv->icon = gtk_image_new(); | |
| 7571 | gtkconv->menu_icon = gtk_image_new(); | |
| 7572 | update_tab_icon(conv); | |
| 7573 | ||
| 7574 | /* Tab label. */ | |
| 7575 | gtkconv->tab_label = gtk_label_new(tmp_lab = gaim_conversation_get_title(conv)); | |
| 11619 | 7576 | |
| 11581 | 7577 | #if GTK_CHECK_VERSION(2,6,0) |
| 11619 | 7578 | if (!angle) |
| 7579 | g_object_set(G_OBJECT(gtkconv->tab_label), "ellipsize", PANGO_ELLIPSIZE_END, NULL); | |
| 11581 | 7580 | gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), 6); |
| 11619 | 7581 | if (tabs_side) { |
| 7582 | gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), MIN(g_utf8_strlen(tmp_lab, -1), 18)); | |
| 7583 | } | |
| 7584 | if (angle) | |
| 7585 | gtk_label_set_angle(GTK_LABEL(gtkconv->tab_label), angle); | |
| 11581 | 7586 | #endif |
| 7587 | gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); | |
| 7588 | #if 0 | |
| 7589 | gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); | |
| 7590 | gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); | |
| 7591 | #endif | |
| 7592 | ||
| 7593 | /* Pack it all together. */ | |
| 11619 | 7594 | if (angle == 90) |
| 7595 | gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0); | |
| 7596 | else | |
| 7597 | gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); | |
| 11581 | 7598 | gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, |
| 7599 | FALSE, FALSE, 0); | |
| 7600 | ||
| 7601 | gtk_widget_show_all(gtkconv->icon); | |
| 7602 | gtk_widget_show_all(gtkconv->menu_icon); | |
| 7603 | ||
| 7604 | gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0); | |
| 7605 | gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); | |
| 7606 | gtk_widget_show(gtkconv->tab_label); | |
| 7607 | gtk_widget_show(gtkconv->menu_label); | |
| 7608 | gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0); | |
| 7609 | ||
| 11619 | 7610 | if (angle == 90) |
| 7611 | gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); | |
| 7612 | else | |
| 7613 | gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0); | |
| 11581 | 7614 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) |
| 7615 | gtk_widget_show(gtkconv->close); | |
| 7616 | ||
| 7617 | gtk_widget_show(tabby); | |
| 7618 | gtk_widget_show(menu_tabby); | |
| 7619 | ||
| 7620 | if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) | |
| 7621 | gaim_gtkconv_update_buddy_icon(conv); | |
| 7622 | ||
| 7623 | /* Add this pane to the conversation's notebook. */ | |
| 7624 | gtk_notebook_append_page_menu(GTK_NOTEBOOK(win->notebook), tab_cont, tabby, menu_tabby); | |
| 11619 | 7625 | gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), tab_cont, !tabs_side && !angle, TRUE, GTK_PACK_START); |
| 11581 | 7626 | |
| 7627 | ||
| 7628 | gtk_widget_show(tab_cont); | |
| 7629 | ||
| 7630 | if (gaim_gtk_conv_window_get_gtkconv_count(win) == 1) { | |
| 7631 | /* Er, bug in notebooks? Switch to the page manually. */ | |
| 7632 | gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), 0); | |
| 7633 | ||
| 7634 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), | |
| 7635 | gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); | |
| 7636 | } else | |
| 7637 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), TRUE); | |
| 7638 | ||
| 7639 | focus_gtkconv = g_list_nth_data(gaim_gtk_conv_window_get_gtkconvs(win), | |
| 7640 | gtk_notebook_get_current_page(GTK_NOTEBOOK(win->notebook))); | |
| 7641 | gtk_widget_grab_focus(focus_gtkconv->entry); | |
| 7642 | ||
| 7643 | if (gaim_gtk_conv_window_get_gtkconv_count(win) == 1) | |
|
11734
6faaedf20f96
[gaim-migrate @ 14025]
Mark Doliner <markdoliner@pidgin.im>
parents:
11731
diff
changeset
|
7644 | update_send_to_selection(win); |
| 11581 | 7645 | } |
| 7646 | ||
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
7647 | void |
|
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
7648 | gaim_gtk_conv_window_remove_gtkconv(GaimGtkWindow *win, GaimGtkConversation *gtkconv) |
| 11581 | 7649 | { |
| 7650 | unsigned int index; | |
| 7651 | GaimConversationType conv_type; | |
| 7652 | ||
| 7653 | conv_type = gaim_conversation_get_type(gtkconv->active_conv); | |
| 7654 | index = gtk_notebook_page_num(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont); | |
| 7655 | ||
| 7656 | g_object_ref(gtkconv->tab_cont); | |
| 7657 | gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont)); | |
| 7658 | ||
| 7659 | gtk_notebook_remove_page(GTK_NOTEBOOK(win->notebook), index); | |
| 7660 | ||
| 7661 | /* go back to tabless if need be */ | |
| 7662 | if (gaim_gtk_conv_window_get_gtkconv_count(win) <= 2) { | |
| 7663 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), | |
| 7664 | gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); | |
| 7665 | } | |
| 7666 | ||
| 7667 | win->gtkconvs = g_list_remove(win->gtkconvs, gtkconv); | |
| 11582 | 7668 | |
|
12288
d3452b226853
[gaim-migrate @ 14592]
Casey Harkins <charkins@pidgin.im>
parents:
12286
diff
changeset
|
7669 | if (!win->gtkconvs && win != hidden_convwin) |
| 11582 | 7670 | gaim_gtk_conv_window_destroy(win); |
| 11581 | 7671 | } |
| 7672 | ||
| 7673 | GaimGtkConversation * | |
| 7674 | gaim_gtk_conv_window_get_gtkconv_at_index(const GaimGtkWindow *win, int index) | |
| 7675 | { | |
| 7676 | GtkWidget *tab_cont; | |
| 7677 | ||
| 7678 | if (index == -1) | |
| 7679 | index = 0; | |
| 7680 | tab_cont = gtk_notebook_get_nth_page(GTK_NOTEBOOK(win->notebook), index); | |
| 11604 | 7681 | return tab_cont ? g_object_get_data(G_OBJECT(tab_cont), "GaimGtkConversation") : NULL; |
| 11581 | 7682 | } |
| 7683 | ||
| 7684 | GaimGtkConversation * | |
| 7685 | gaim_gtk_conv_window_get_active_gtkconv(const GaimGtkWindow *win) | |
| 7686 | { | |
| 7687 | int index; | |
| 7688 | GtkWidget *tab_cont; | |
| 7689 | ||
| 7690 | index = gtk_notebook_get_current_page(GTK_NOTEBOOK(win->notebook)); | |
| 7691 | if (index == -1) | |
| 7692 | index = 0; | |
| 7693 | tab_cont = gtk_notebook_get_nth_page(GTK_NOTEBOOK(win->notebook), index); | |
| 7694 | if (!tab_cont) | |
| 7695 | return NULL; | |
| 7696 | return g_object_get_data(G_OBJECT(tab_cont), "GaimGtkConversation"); | |
| 7697 | } | |
| 7698 | ||
| 7699 | ||
| 7700 | GaimConversation * | |
| 7701 | gaim_gtk_conv_window_get_active_conversation(const GaimGtkWindow *win) | |
| 7702 | { | |
| 7703 | GaimGtkConversation *gtkconv; | |
| 7704 | ||
| 7705 | gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win); | |
| 7706 | return gtkconv ? gtkconv->active_conv : NULL; | |
| 7707 | } | |
| 7708 | ||
| 7709 | gboolean | |
| 7710 | gaim_gtk_conv_window_is_active_conversation(const GaimConversation *conv) | |
| 7711 | { | |
| 7712 | return conv == gaim_gtk_conv_window_get_active_conversation(GAIM_GTK_CONVERSATION(conv)->win); | |
| 7713 | } | |
| 7714 | ||
| 7715 | gboolean | |
| 7716 | gaim_gtk_conv_window_has_focus(GaimGtkWindow *win) | |
| 7717 | { | |
| 7718 | gboolean has_focus = FALSE; | |
| 7719 | ||
| 7720 | g_object_get(G_OBJECT(win->window), "has-toplevel-focus", &has_focus, NULL); | |
| 7721 | ||
| 7722 | return has_focus; | |
| 7723 | } | |
| 7724 | ||
| 7725 | GaimGtkWindow * | |
| 7726 | gaim_gtk_conv_window_get_at_xy(int x, int y) | |
| 7727 | { | |
| 7728 | GaimGtkWindow *win; | |
| 7729 | GdkWindow *gdkwin; | |
| 7730 | GList *l; | |
| 7731 | ||
| 7732 | gdkwin = gdk_window_at_pointer(&x, &y); | |
| 7733 | ||
| 7734 | if (gdkwin) | |
| 7735 | gdkwin = gdk_window_get_toplevel(gdkwin); | |
| 7736 | ||
| 7737 | for (l = gaim_gtk_conv_windows_get_list(); l != NULL; l = l->next) { | |
| 7738 | win = l->data; | |
| 7739 | ||
| 7740 | if (gdkwin == win->window->window) | |
| 7741 | return win; | |
| 7742 | } | |
| 7743 | ||
| 7744 | return NULL; | |
| 7745 | } | |
| 7746 | ||
| 7747 | GList * | |
| 7748 | gaim_gtk_conv_window_get_gtkconvs(GaimGtkWindow *win) | |
| 7749 | { | |
| 7750 | return win->gtkconvs; | |
| 7751 | } | |
| 7752 | ||
| 7753 | guint | |
| 7754 | gaim_gtk_conv_window_get_gtkconv_count(GaimGtkWindow *win) | |
| 7755 | { | |
| 7756 | return g_list_length(win->gtkconvs); | |
| 7757 | } | |
| 7758 | ||
| 7759 | GaimGtkWindow * | |
| 7760 | gaim_gtk_conv_window_first_with_type(GaimConversationType type) | |
| 7761 | { | |
| 7762 | GList *wins, *convs; | |
| 7763 | GaimGtkWindow *win; | |
| 7764 | GaimGtkConversation *conv; | |
| 7765 | ||
| 7766 | if (type == GAIM_CONV_TYPE_UNKNOWN) | |
| 7767 | return NULL; | |
| 7768 | ||
| 7769 | for (wins = gaim_gtk_conv_windows_get_list(); wins != NULL; wins = wins->next) { | |
| 7770 | win = wins->data; | |
| 7771 | ||
| 7772 | for (convs = win->gtkconvs; | |
| 7773 | convs != NULL; | |
| 7774 | convs = convs->next) { | |
| 7775 | ||
| 7776 | conv = convs->data; | |
| 7777 | ||
| 7778 | if (gaim_conversation_get_type(conv->active_conv) == type) | |
| 7779 | return win; | |
| 7780 | } | |
| 7781 | } | |
| 7782 | ||
| 7783 | return NULL; | |
| 7784 | } | |
| 7785 | ||
| 7786 | GaimGtkWindow * | |
| 7787 | gaim_gtk_conv_window_last_with_type(GaimConversationType type) | |
| 7788 | { | |
| 7789 | GList *wins, *convs; | |
| 7790 | GaimGtkWindow *win; | |
| 7791 | GaimGtkConversation *conv; | |
| 7792 | ||
| 7793 | if (type == GAIM_CONV_TYPE_UNKNOWN) | |
| 7794 | return NULL; | |
| 7795 | ||
| 7796 | for (wins = g_list_last(gaim_gtk_conv_windows_get_list()); | |
| 7797 | wins != NULL; | |
| 7798 | wins = wins->prev) { | |
| 7799 | ||
| 7800 | win = wins->data; | |
| 7801 | ||
| 7802 | for (convs = win->gtkconvs; | |
| 7803 | convs != NULL; | |
| 7804 | convs = convs->next) { | |
| 7805 | ||
| 7806 | conv = convs->data; | |
| 7807 | ||
| 7808 | if (gaim_conversation_get_type(conv->active_conv) == type) | |
| 7809 | return win; | |
| 7810 | } | |
| 7811 | } | |
| 7812 | ||
| 7813 | return NULL; | |
| 7814 | } | |
| 7815 | ||
| 7816 | ||
| 7817 | /************************************************************************** | |
| 7818 | * Conversation placement functions | |
| 7819 | **************************************************************************/ | |
| 7820 | typedef struct | |
| 7821 | { | |
| 7822 | char *id; | |
| 7823 | char *name; | |
| 7824 | GaimConvPlacementFunc fnc; | |
| 7825 | ||
| 7826 | } ConvPlacementData; | |
| 7827 | ||
| 7828 | static GList *conv_placement_fncs = NULL; | |
| 7829 | static GaimConvPlacementFunc place_conv = NULL; | |
| 7830 | ||
| 7831 | /* This one places conversations in the last made window. */ | |
| 7832 | static void | |
| 7833 | conv_placement_last_created_win(GaimGtkConversation *conv) | |
| 7834 | { | |
| 7835 | GaimGtkWindow *win; | |
| 7836 | ||
| 7837 | GList *l = g_list_last(gaim_gtk_conv_windows_get_list()); | |
| 7838 | win = l ? l->data : NULL;; | |
| 7839 | ||
| 7840 | if (win == NULL) { | |
| 7841 | win = gaim_gtk_conv_window_new(); | |
| 7842 | ||
| 7843 | gaim_gtk_conv_window_add_gtkconv(win, conv); | |
| 7844 | gaim_gtk_conv_window_show(win); | |
| 7845 | } else { | |
| 7846 | gaim_gtk_conv_window_add_gtkconv(win, conv); | |
| 7847 | } | |
| 7848 | } | |
| 7849 | ||
| 7850 | /* This one places conversations in the last made window of the same type. */ | |
| 7851 | static void | |
| 7852 | conv_placement_last_created_win_type(GaimGtkConversation *conv) | |
| 7853 | { | |
| 7854 | GaimGtkWindow *win; | |
| 7855 | ||
| 7856 | win = gaim_gtk_conv_window_last_with_type(gaim_conversation_get_type(conv->active_conv)); | |
| 7857 | ||
| 7858 | if (win == NULL) { | |
| 7859 | win = gaim_gtk_conv_window_new(); | |
| 7860 | ||
| 7861 | gaim_gtk_conv_window_add_gtkconv(win, conv); | |
| 7862 | gaim_gtk_conv_window_show(win); | |
| 7863 | } else | |
| 7864 | gaim_gtk_conv_window_add_gtkconv(win, conv); | |
| 7865 | } | |
| 7866 | ||
| 7867 | /* This one places each conversation in its own window. */ | |
| 7868 | static void | |
| 7869 | conv_placement_new_window(GaimGtkConversation *conv) | |
| 7870 | { | |
| 7871 | GaimGtkWindow *win; | |
| 7872 | ||
| 7873 | win = gaim_gtk_conv_window_new(); | |
| 7874 | ||
| 7875 | gaim_gtk_conv_window_add_gtkconv(win, conv); | |
| 7876 | ||
| 7877 | gaim_gtk_conv_window_show(win); | |
| 7878 | } | |
| 7879 | ||
| 7880 | static GaimGroup * | |
| 7881 | conv_get_group(GaimGtkConversation *conv) | |
| 7882 | { | |
| 7883 | GaimGroup *group = NULL; | |
| 7884 | ||
| 7885 | if (gaim_conversation_get_type(conv->active_conv) == GAIM_CONV_TYPE_IM) { | |
| 7886 | GaimBuddy *buddy; | |
| 7887 | ||
| 7888 | buddy = gaim_find_buddy(gaim_conversation_get_account(conv->active_conv), | |
| 7889 | gaim_conversation_get_name(conv->active_conv)); | |
| 7890 | ||
| 7891 | if (buddy != NULL) | |
| 12088 | 7892 | group = gaim_buddy_get_group(buddy); |
| 11581 | 7893 | |
| 7894 | } else if (gaim_conversation_get_type(conv->active_conv) == GAIM_CONV_TYPE_CHAT) { | |
| 7895 | GaimChat *chat; | |
| 7896 | ||
| 7897 | chat = gaim_blist_find_chat(gaim_conversation_get_account(conv->active_conv), | |
| 7898 | gaim_conversation_get_name(conv->active_conv)); | |
| 7899 | ||
| 7900 | if (chat != NULL) | |
| 7901 | group = gaim_chat_get_group(chat); | |
| 7902 | } | |
| 7903 | ||
| 7904 | return group; | |
| 7905 | } | |
| 7906 | ||
| 7907 | /* | |
| 7908 | * This groups things by, well, group. Buddies from groups will always be | |
| 7909 | * grouped together, and a buddy from a group not belonging to any currently | |
| 7910 | * open windows will get a new window. | |
| 7911 | */ | |
| 7912 | static void | |
| 7913 | conv_placement_by_group(GaimGtkConversation *conv) | |
| 7914 | { | |
| 7915 | GaimConversationType type; | |
| 7916 | GaimGroup *group = NULL; | |
| 7917 | GList *wl, *cl; | |
| 7918 | ||
| 7919 | type = gaim_conversation_get_type(conv->active_conv); | |
| 7920 | ||
| 7921 | group = conv_get_group(conv); | |
| 7922 | ||
| 7923 | /* Go through the list of IMs and find one with this group. */ | |
| 7924 | for (wl = gaim_gtk_conv_windows_get_list(); wl != NULL; wl = wl->next) { | |
| 7925 | GaimGtkWindow *win2; | |
| 7926 | GaimGtkConversation *conv2; | |
| 7927 | GaimGroup *group2 = NULL; | |
| 7928 | ||
| 7929 | win2 = wl->data; | |
| 7930 | ||
| 7931 | for (cl = win2->gtkconvs; | |
| 7932 | cl != NULL; | |
| 7933 | cl = cl->next) { | |
| 7934 | conv2 = cl->data; | |
| 7935 | ||
| 7936 | group2 = conv_get_group(conv2); | |
| 7937 | ||
| 7938 | if (group == group2) { | |
| 7939 | gaim_gtk_conv_window_add_gtkconv(win2, conv); | |
| 7940 | ||
| 7941 | return; | |
| 7942 | } | |
| 7943 | } | |
| 7944 | } | |
| 7945 | ||
| 7946 | /* Make a new window. */ | |
| 7947 | conv_placement_new_window(conv); | |
| 7948 | } | |
| 7949 | ||
| 7950 | /* This groups things by account. Otherwise, the same semantics as above */ | |
| 7951 | static void | |
| 7952 | conv_placement_by_account(GaimGtkConversation *conv) | |
| 7953 | { | |
| 7954 | GaimConversationType type; | |
| 7955 | GList *wins, *convs; | |
| 7956 | GaimAccount *account; | |
| 7957 | ||
| 7958 | account = gaim_conversation_get_account(conv->active_conv); | |
| 7959 | type = gaim_conversation_get_type(conv->active_conv); | |
| 7960 | ||
| 7961 | /* Go through the list of IMs and find one with this group. */ | |
| 7962 | for (wins = gaim_gtk_conv_windows_get_list(); wins != NULL; wins = wins->next) { | |
| 7963 | GaimGtkWindow *win2; | |
| 7964 | GaimGtkConversation *conv2; | |
| 7965 | ||
| 7966 | win2 = wins->data; | |
| 7967 | ||
| 7968 | for (convs = win2->gtkconvs; | |
| 7969 | convs != NULL; | |
| 7970 | convs = convs->next) { | |
| 7971 | conv2 = convs->data; | |
| 7972 | ||
| 7973 | if (account == gaim_conversation_get_account(conv2->active_conv)) { | |
| 7974 | gaim_gtk_conv_window_add_gtkconv(win2, conv); | |
| 7975 | return; | |
| 7976 | } | |
| 7977 | } | |
| 7978 | } | |
| 7979 | ||
| 7980 | /* Make a new window. */ | |
| 7981 | conv_placement_new_window(conv); | |
| 7982 | } | |
| 7983 | ||
| 7984 | static ConvPlacementData * | |
| 7985 | get_conv_placement_data(const char *id) | |
| 7986 | { | |
| 7987 | ConvPlacementData *data = NULL; | |
| 7988 | GList *n; | |
| 7989 | ||
| 7990 | for (n = conv_placement_fncs; n; n = n->next) { | |
| 7991 | data = n->data; | |
| 7992 | if (!strcmp(data->id, id)) | |
| 7993 | return data; | |
| 7994 | } | |
| 7995 | ||
| 7996 | return NULL; | |
| 7997 | } | |
| 7998 | ||
| 7999 | static void | |
| 8000 | add_conv_placement_fnc(const char *id, const char *name, | |
| 8001 | GaimConvPlacementFunc fnc) | |
| 8002 | { | |
| 8003 | ConvPlacementData *data; | |
| 8004 | ||
| 8005 | data = g_new(ConvPlacementData, 1); | |
| 8006 | ||
| 8007 | data->id = g_strdup(id); | |
| 8008 | data->name = g_strdup(name); | |
| 8009 | data->fnc = fnc; | |
| 8010 | ||
| 8011 | conv_placement_fncs = g_list_append(conv_placement_fncs, data); | |
| 8012 | } | |
| 8013 | ||
| 8014 | static void | |
| 8015 | ensure_default_funcs(void) | |
| 8016 | { | |
| 8017 | if (conv_placement_fncs == NULL) { | |
| 8018 | add_conv_placement_fnc("last", _("Last created window"), | |
| 8019 | conv_placement_last_created_win); | |
| 8020 | add_conv_placement_fnc("im_chat", _("Separate IM and Chat windows"), | |
| 8021 | conv_placement_last_created_win_type); | |
| 8022 | add_conv_placement_fnc("new", _("New window"), | |
| 8023 | conv_placement_new_window); | |
| 8024 | add_conv_placement_fnc("group", _("By group"), | |
| 8025 | conv_placement_by_group); | |
| 8026 | add_conv_placement_fnc("account", _("By account"), | |
| 8027 | conv_placement_by_account); | |
| 8028 | } | |
| 8029 | } | |
| 8030 | ||
| 8031 | GList * | |
| 8032 | gaim_gtkconv_placement_get_options(void) | |
| 8033 | { | |
| 8034 | GList *n, *list = NULL; | |
| 8035 | ConvPlacementData *data; | |
| 8036 | ||
| 8037 | ensure_default_funcs(); | |
| 8038 | ||
| 8039 | for (n = conv_placement_fncs; n; n = n->next) { | |
| 8040 | data = n->data; | |
| 8041 | list = g_list_append(list, data->name); | |
| 8042 | list = g_list_append(list, data->id); | |
| 8043 | } | |
| 8044 | ||
| 8045 | return list; | |
| 8046 | } | |
| 8047 | ||
| 8048 | ||
| 8049 | void | |
| 8050 | gaim_gtkconv_placement_add_fnc(const char *id, const char *name, | |
| 8051 | GaimConvPlacementFunc fnc) | |
| 8052 | { | |
| 8053 | g_return_if_fail(id != NULL); | |
| 8054 | g_return_if_fail(name != NULL); | |
| 8055 | g_return_if_fail(fnc != NULL); | |
| 8056 | ||
| 8057 | ensure_default_funcs(); | |
| 8058 | ||
| 8059 | add_conv_placement_fnc(id, name, fnc); | |
| 8060 | } | |
| 8061 | ||
| 8062 | void | |
| 8063 | gaim_gtkconv_placement_remove_fnc(const char *id) | |
| 8064 | { | |
| 8065 | ConvPlacementData *data = get_conv_placement_data(id); | |
| 8066 | ||
| 8067 | if (data == NULL) | |
| 8068 | return; | |
| 8069 | ||
| 8070 | conv_placement_fncs = g_list_remove(conv_placement_fncs, data); | |
| 8071 | ||
| 8072 | g_free(data->id); | |
| 8073 | g_free(data->name); | |
| 8074 | g_free(data); | |
| 8075 | } | |
| 8076 | ||
| 8077 | const char * | |
| 8078 | gaim_gtkconv_placement_get_name(const char *id) | |
| 8079 | { | |
| 8080 | ConvPlacementData *data; | |
| 8081 | ||
| 8082 | ensure_default_funcs(); | |
| 8083 | ||
| 8084 | data = get_conv_placement_data(id); | |
| 8085 | ||
| 8086 | if (data == NULL) | |
| 8087 | return NULL; | |
| 8088 | ||
| 8089 | return data->name; | |
| 8090 | } | |
| 8091 | ||
| 8092 | GaimConvPlacementFunc | |
| 8093 | gaim_gtkconv_placement_get_fnc(const char *id) | |
| 8094 | { | |
| 8095 | ConvPlacementData *data; | |
| 8096 | ||
| 8097 | ensure_default_funcs(); | |
| 8098 | ||
| 8099 | data = get_conv_placement_data(id); | |
| 8100 | ||
| 8101 | if (data == NULL) | |
| 8102 | return NULL; | |
| 8103 | ||
| 8104 | return data->fnc; | |
| 8105 | } | |
| 8106 | ||
| 8107 | void | |
| 8108 | gaim_gtkconv_placement_set_current_func(GaimConvPlacementFunc func) | |
| 8109 | { | |
| 8110 | g_return_if_fail(func != NULL); | |
| 8111 | ||
| 11936 | 8112 | /* If tabs are enabled, set the function, otherwise, NULL it out. */ |
| 8113 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")) | |
| 8114 | place_conv = func; | |
| 8115 | else | |
| 8116 | place_conv = NULL; | |
| 11581 | 8117 | } |
| 8118 | ||
| 8119 | GaimConvPlacementFunc | |
| 8120 | gaim_gtkconv_placement_get_current_func(void) | |
| 8121 | { | |
| 8122 | return place_conv; | |
| 8123 | } | |
| 8124 | ||
| 8125 | void | |
| 8126 | gaim_gtkconv_placement_place(GaimGtkConversation *gtkconv) | |
| 8127 | { | |
| 8128 | if (place_conv) | |
| 8129 | place_conv(gtkconv); | |
| 11936 | 8130 | else |
| 8131 | conv_placement_new_window(gtkconv); | |
| 8132 | } | |
| 12239 | 8133 | |
| 8134 | gboolean | |
| 8135 | gaim_gtkconv_is_hidden(GaimGtkConversation *gtkconv) | |
| 8136 | { | |
| 8137 | g_return_val_if_fail(gtkconv != NULL, FALSE); | |
| 8138 | ||
| 8139 | return (gtkconv->win == hidden_convwin); | |
| 8140 | } | |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8141 | |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8142 | |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8143 | /* Algorithm from http://www.w3.org/TR/AERT#color-contrast */ |
|
12351
62300c464357
[gaim-migrate @ 14655]
Richard Laager <rlaager@pidgin.im>
parents:
12346
diff
changeset
|
8144 | static gboolean |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8145 | color_is_visible(GdkColor foreground, GdkColor background, int color_contrast, int brightness_contrast) |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8146 | { |
|
12346
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8147 | gulong fg_brightness; |
|
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8148 | gulong bg_brightness; |
|
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8149 | gulong br_diff; |
|
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8150 | gulong col_diff; |
|
12352
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8151 | int fred, fgreen, fblue, bred, bgreen, bblue; |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8152 | |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8153 | /* this algorithm expects colors between 0 and 255 for each of red green and blue. |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8154 | * GTK on the other hand has values between 0 and 65535 |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8155 | * Err suggested I >> 8, which grabbed the high bits. |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8156 | */ |
|
12360
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8157 | |
|
12352
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8158 | fred = foreground.red >> 8 ; |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8159 | fgreen = foreground.green >> 8 ; |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8160 | fblue = foreground.blue >> 8 ; |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8161 | |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8162 | |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8163 | bred = background.red >> 8 ; |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8164 | bgreen = background.green >> 8 ; |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8165 | bblue = background.blue >> 8 ; |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8166 | |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8167 | fg_brightness = (fred * 299 + fgreen * 587 + fblue * 114) / 1000; |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8168 | bg_brightness = (bred * 299 + bgreen * 587 + bblue * 114) / 1000; |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8169 | br_diff = abs(fg_brightness - bg_brightness); |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8170 | |
|
12352
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8171 | col_diff = abs(fred - bred) + abs(fgreen - bgreen) + abs(fblue - bblue); |
|
1df207bfdebf
[gaim-migrate @ 14656]
Luke Schierer <lschiere@pidgin.im>
parents:
12351
diff
changeset
|
8172 | |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8173 | return ((col_diff > color_contrast) && (br_diff > brightness_contrast)); |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8174 | } |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8175 | |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8176 | |
|
12351
62300c464357
[gaim-migrate @ 14655]
Richard Laager <rlaager@pidgin.im>
parents:
12346
diff
changeset
|
8177 | static GdkColor* |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8178 | generate_nick_colors(guint *color_count, GdkColor background) |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8179 | { |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8180 | guint numcolors = *color_count; |
|
12363
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8181 | guint i = 0, j = 0; |
|
12346
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8182 | GdkColor *colors = g_new(GdkColor, numcolors); |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8183 | GdkColor nick_highlight; |
|
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8184 | GdkColor send_color; |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8185 | time_t breakout_time; |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8186 | |
|
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8187 | gdk_color_parse(HIGHLIGHT_COLOR, &nick_highlight); |
|
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8188 | gdk_color_parse(SEND_COLOR, &send_color); |
|
12346
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8189 | |
|
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8190 | srand(background.red + background.green + background.blue + 1); |
|
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8191 | |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8192 | breakout_time = time(NULL) + 3; |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8193 | |
|
12363
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8194 | /* first we look through the list of "good" colors: colors that differ from every other color in the |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8195 | * list. only some of them will differ from the background color though. lets see if we can find |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8196 | * numcolors of them that do |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8197 | */ |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8198 | while (i < numcolors && j < NUM_NICK_SEED_COLORS && time(NULL) < breakout_time) |
|
12360
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8199 | { |
|
12363
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8200 | GdkColor color = nick_seed_colors[j]; |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8201 | |
|
12360
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8202 | if (color_is_visible(color, background, MIN_COLOR_CONTRAST, MIN_BRIGHTNESS_CONTRAST) && |
|
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8203 | color_is_visible(color, nick_highlight, MIN_COLOR_CONTRAST / 2, 0) && |
|
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8204 | color_is_visible(color, send_color, MIN_COLOR_CONTRAST / 4, 0)) |
|
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8205 | { |
|
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8206 | colors[i] = color; |
|
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8207 | i++; |
|
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8208 | } |
|
12363
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8209 | j++; |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8210 | } |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8211 | |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8212 | /* we might not have found numcolors in the last loop. if we did, we'll never enter this one. |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8213 | * if we did not, lets just find some colors that don't conflict with the background. its |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8214 | * expensive to find colors that not only don't conflict with the background, but also do not |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8215 | * conflict with each other. |
|
d2f9d8935364
[gaim-migrate @ 14667]
Luke Schierer <lschiere@pidgin.im>
parents:
12360
diff
changeset
|
8216 | */ |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8217 | while(i < numcolors && time(NULL) < breakout_time) |
|
12346
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8218 | { |
|
4b33b04f1a5c
[gaim-migrate @ 14650]
Richard Laager <rlaager@pidgin.im>
parents:
12345
diff
changeset
|
8219 | GdkColor color = { 0, rand() % 65536, rand() % 65536, rand() % 65536 }; |
|
12360
099cbddc7907
[gaim-migrate @ 14664]
Luke Schierer <lschiere@pidgin.im>
parents:
12359
diff
changeset
|
8220 | |
|
12356
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8221 | if (color_is_visible(color, background, MIN_COLOR_CONTRAST, MIN_BRIGHTNESS_CONTRAST) && |
|
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8222 | color_is_visible(color, nick_highlight, MIN_COLOR_CONTRAST / 2, 0) && |
|
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8223 | color_is_visible(color, send_color, MIN_COLOR_CONTRAST / 4, 0)) |
|
2d10c7761f17
[gaim-migrate @ 14660]
Richard Laager <rlaager@pidgin.im>
parents:
12354
diff
changeset
|
8224 | { |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8225 | colors[i] = color; |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8226 | i++; |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8227 | } |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8228 | } |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8229 | |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8230 | if (i < numcolors) { |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8231 | GdkColor *c = colors; |
|
13520
f89ab3c41f4b
[gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13519
diff
changeset
|
8232 | gaim_debug_warning("gtkconv", "Unable to generate enough random colors before timeout. %u colors found.\n", i); |
|
12801
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8233 | colors = g_memdup(c, i * sizeof(GdkColor)); |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8234 | g_free(c); |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8235 | *color_count = i; |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8236 | } |
|
83b5c42a179e
[gaim-migrate @ 15148]
Daniel Atallah <datallah@pidgin.im>
parents:
12797
diff
changeset
|
8237 | |
|
12345
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8238 | return colors; |
|
ab8c9b029527
[gaim-migrate @ 14649]
Luke Schierer <lschiere@pidgin.im>
parents:
12335
diff
changeset
|
8239 | } |