Mercurial > pidgin.yaz
comparison src/away.c @ 1250:b5783215b245
[gaim-migrate @ 1260]
decklin's clean up of the account editor, much needed.
indent -kr -i8 -l105 -ncs -cp7 -npcs -T GtkWidget -T gpointer -T AppletCallbackFunc -T GtkFunction -T gaim_plugin_remove -T name -T FILE -T gchar -T user_opts -T GdkEvent -T GtkObject ...
did about.c, aim.c, away.c, browser.c, buddy_chat.c, gaimrc.c, html.c, idle.c, multi.c. Need to do buddy.c, conversation.c, dialogs.c, oscar.c, perl.c, plugins.c, prefs.c, proxy.c, prpl.c, rvous.c, server.c, sound.c, toc.c, util.c. not doing gtkhtml.c because it's a piece of crap anyway, or *ticker.c because they're syd's.
got rid of debug_buff, just debug_printf now.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 13 Dec 2000 20:18:35 +0000 |
parents | 4fd0d35826fe |
children | 9da444224f0e |
comparison
equal
deleted
inserted
replaced
1249:3e44de27622d | 1250:b5783215b245 |
---|---|
34 | 34 |
35 #include <gtk/gtk.h> | 35 #include <gtk/gtk.h> |
36 #include "gaim.h" | 36 #include "gaim.h" |
37 #include "pixmaps/join.xpm" | 37 #include "pixmaps/join.xpm" |
38 | 38 |
39 GtkWidget *imaway=NULL; | 39 GtkWidget *imaway = NULL; |
40 | 40 |
41 GtkWidget *awaymenu = NULL; | 41 GtkWidget *awaymenu = NULL; |
42 struct away_message *awaymessage = NULL; | 42 struct away_message *awaymessage = NULL; |
43 int default_away; | 43 int default_away; |
44 int auto_away; | 44 int auto_away; |
45 | 45 |
46 static void destroy_im_away() | 46 static void destroy_im_away() |
47 { | 47 { |
48 if (imaway) | 48 if (imaway) |
49 gtk_widget_destroy(imaway); | 49 gtk_widget_destroy(imaway); |
50 imaway=NULL; | 50 imaway = NULL; |
51 } | 51 } |
52 | 52 |
53 void do_im_back(GtkWidget *w, GtkWidget *x) | 53 void do_im_back(GtkWidget *w, GtkWidget *x) |
54 { | 54 { |
55 #ifdef USE_APPLET | 55 #ifdef USE_APPLET |
56 applet_widget_unregister_callback(APPLET_WIDGET(applet),"away"); | 56 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away"); |
57 set_user_state(online); | 57 set_user_state(online); |
58 insert_applet_away(); | 58 insert_applet_away(); |
59 #endif /* USE_APPLET */ | 59 #endif /* USE_APPLET */ |
60 if (imaway) { | 60 if (imaway) { |
61 GtkWidget *tmp = imaway; | 61 GtkWidget *tmp = imaway; |
62 imaway=NULL; | 62 imaway = NULL; |
63 gtk_widget_destroy(tmp); | 63 gtk_widget_destroy(tmp); |
64 plugin_event(event_back, 0, 0, 0, 0); | 64 plugin_event(event_back, 0, 0, 0, 0); |
65 } | 65 } |
66 | 66 |
67 serv_set_away(NULL); | 67 serv_set_away(NULL); |
68 awaymessage = NULL; | 68 awaymessage = NULL; |
69 } | 69 } |
70 | 70 |
71 | 71 |
72 /* | 72 /* |
73 * rcg10312000 This could be more robust, but it works for my current | 73 * rcg10312000 This could be more robust, but it works for my current |
74 * goal: to remove those annoying <BR> tags. :) | 74 * goal: to remove those annoying <BR> tags. :) |
75 */ | 75 */ |
76 static void strncpy_nohtml(gchar *dest, const gchar *src, size_t destsize) | 76 static void strncpy_nohtml(gchar * dest, const gchar * src, size_t destsize) |
77 { | 77 { |
78 gchar *ptr; | 78 gchar *ptr; |
79 g_snprintf(dest, destsize, "%s", src); | 79 g_snprintf(dest, destsize, "%s", src); |
80 | 80 |
81 while (1) { | 81 while (1) { |
82 ptr = strstr(dest, "<BR>"); | 82 ptr = strstr(dest, "<BR>"); |
83 if (ptr == NULL) /* done? */ | 83 if (ptr == NULL) /* done? */ |
84 return; | 84 return; |
85 | 85 |
86 /* replace <BR> with a newline. */ | 86 /* replace <BR> with a newline. */ |
87 *ptr = '\n'; | 87 *ptr = '\n'; |
88 memmove(ptr + 1, ptr + 4, strlen(ptr + 4) + 1); | 88 memmove(ptr + 1, ptr + 4, strlen(ptr + 4) + 1); |
89 } | 89 } |
90 } | 90 } |
91 | 91 |
92 void do_away_message(GtkWidget *w, struct away_message *a) | 92 void do_away_message(GtkWidget *w, struct away_message *a) |
93 { | 93 { |
94 GtkWidget *back; | 94 GtkWidget *back; |
95 GtkWidget *awaytext; | 95 GtkWidget *awaytext; |
96 GtkWidget *vscrollbar; | 96 GtkWidget *vscrollbar; |
97 GtkWidget *vbox; | 97 GtkWidget *vbox; |
98 char *buf2; | 98 char *buf2; |
99 char buf[BUF_LONG]; | 99 char buf[BUF_LONG]; |
100 GList *cnv = conversations; | 100 GList *cnv = conversations; |
101 struct conversation *c; | 101 struct conversation *c; |
102 | 102 |
103 if (!blist) | 103 if (!blist) |
104 return; | 104 return; |
105 | 105 |
106 #ifdef USE_APPLET | 106 #ifdef USE_APPLET |
107 remove_applet_away(); | 107 remove_applet_away(); |
108 applet_widget_register_callback(APPLET_WIDGET(applet), | 108 applet_widget_register_callback(APPLET_WIDGET(applet), |
109 "away", | 109 "away", _("Back"), (AppletCallbackFunc)do_im_back, NULL); |
110 _("Back"), | |
111 (AppletCallbackFunc) do_im_back, | |
112 NULL); | |
113 set_user_state(away); | 110 set_user_state(away); |
114 #endif | 111 #endif |
115 | 112 |
116 if (!imaway) { | 113 if (!imaway) { |
117 imaway = gtk_window_new(GTK_WINDOW_DIALOG); | 114 imaway = gtk_window_new(GTK_WINDOW_DIALOG); |
118 gtk_window_set_wmclass(GTK_WINDOW(imaway), "imaway", "Gaim"); | 115 gtk_window_set_wmclass(GTK_WINDOW(imaway), "imaway", "Gaim"); |
119 gtk_widget_realize(imaway); | 116 gtk_widget_realize(imaway); |
120 aol_icon(imaway->window); | 117 aol_icon(imaway->window); |
121 back = picture_button(imaway, _("I'm Back!"), join_xpm); | 118 back = picture_button(imaway, _("I'm Back!"), join_xpm); |
122 vbox = gtk_vbox_new(FALSE, 5); | 119 vbox = gtk_vbox_new(FALSE, 5); |
123 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); | 120 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
124 | 121 |
125 awaytext = gtk_text_new(NULL, NULL); | 122 awaytext = gtk_text_new(NULL, NULL); |
126 | 123 |
127 /* rcg10312000 Convert basic HTML (<BR>, etc) to plain text. | 124 /* rcg10312000 Convert basic HTML (<BR>, etc) to plain text. |
128 g_snprintf(buf, sizeof(buf), "%s", a->message); | 125 g_snprintf(buf, sizeof(buf), "%s", a->message); |
129 */ | 126 */ |
130 strncpy_nohtml(buf, a->message, sizeof (buf)); | 127 strncpy_nohtml(buf, a->message, sizeof(buf)); |
131 | 128 |
132 vscrollbar = gtk_vscrollbar_new(GTK_TEXT(awaytext)->vadj); | 129 vscrollbar = gtk_vscrollbar_new(GTK_TEXT(awaytext)->vadj); |
133 gtk_widget_show(vscrollbar); | 130 gtk_widget_show(vscrollbar); |
134 gtk_widget_set_usize(awaytext, 225, 100); | 131 gtk_widget_set_usize(awaytext, 225, 100); |
135 gtk_text_set_word_wrap(GTK_TEXT(awaytext), TRUE); | 132 gtk_text_set_word_wrap(GTK_TEXT(awaytext), TRUE); |
136 gtk_widget_show(awaytext); | 133 gtk_widget_show(awaytext); |
137 gtk_text_freeze(GTK_TEXT(awaytext)); | 134 gtk_text_freeze(GTK_TEXT(awaytext)); |
138 gtk_text_insert(GTK_TEXT(awaytext), NULL, NULL, NULL, buf, -1); | 135 gtk_text_insert(GTK_TEXT(awaytext), NULL, NULL, NULL, buf, -1); |
139 gtk_widget_show(awaytext); | 136 gtk_widget_show(awaytext); |
140 | 137 |
141 if (display_options & OPT_DISP_COOL_LOOK) | 138 if (display_options & OPT_DISP_COOL_LOOK) |
142 gtk_button_set_relief(GTK_BUTTON(back), GTK_RELIEF_NONE); | 139 gtk_button_set_relief(GTK_BUTTON(back), GTK_RELIEF_NONE); |
143 | 140 |
144 /* Put the buttons in the box */ | 141 /* Put the buttons in the box */ |
145 gtk_box_pack_start(GTK_BOX(vbox), awaytext, TRUE, TRUE, 0); | 142 gtk_box_pack_start(GTK_BOX(vbox), awaytext, TRUE, TRUE, 0); |
146 gtk_box_pack_start(GTK_BOX(vbox), back, FALSE, FALSE, 0); | 143 gtk_box_pack_start(GTK_BOX(vbox), back, FALSE, FALSE, 0); |
147 | 144 |
148 /* Handle closes right */ | 145 /* Handle closes right */ |
149 gtk_signal_connect(GTK_OBJECT(imaway), "destroy", | 146 gtk_signal_connect(GTK_OBJECT(imaway), "destroy", GTK_SIGNAL_FUNC(do_im_back), imaway); |
150 GTK_SIGNAL_FUNC(do_im_back), imaway); | 147 gtk_signal_connect(GTK_OBJECT(back), "clicked", GTK_SIGNAL_FUNC(do_im_back), imaway); |
151 gtk_signal_connect(GTK_OBJECT(back), "clicked", | |
152 GTK_SIGNAL_FUNC(do_im_back), imaway); | |
153 | 148 |
154 /* Finish up */ | 149 /* Finish up */ |
155 gtk_widget_show(back); | 150 gtk_widget_show(back); |
156 gtk_widget_show(vbox); | 151 gtk_widget_show(vbox); |
157 if (strlen(a->name)) | 152 if (strlen(a->name)) |
158 gtk_window_set_title(GTK_WINDOW(imaway), a->name); | 153 gtk_window_set_title(GTK_WINDOW(imaway), a->name); |
159 else | 154 else |
160 gtk_window_set_title(GTK_WINDOW(imaway), _("Gaim - Away!")); | 155 gtk_window_set_title(GTK_WINDOW(imaway), _("Gaim - Away!")); |
161 gtk_window_set_focus(GTK_WINDOW(imaway), back); | 156 gtk_window_set_focus(GTK_WINDOW(imaway), back); |
162 gtk_container_add(GTK_CONTAINER(imaway), vbox); | 157 gtk_container_add(GTK_CONTAINER(imaway), vbox); |
163 awaymessage = a; | 158 awaymessage = a; |
164 | 159 |
165 } else { | 160 } else { |
166 destroy_im_away(); | 161 destroy_im_away(); |
167 do_away_message(w, a); | 162 do_away_message(w, a); |
168 return; | 163 return; |
169 } | 164 } |
170 | 165 |
171 /* New away message... Clear out the old sent_aways */ | 166 /* New away message... Clear out the old sent_aways */ |
172 while(cnv) { | 167 while (cnv) { |
173 c = (struct conversation *)cnv->data; | 168 c = (struct conversation *)cnv->data; |
174 c->sent_away = 0; | 169 c->sent_away = 0; |
175 cnv = cnv->next; | 170 cnv = cnv->next; |
176 } | 171 } |
177 | 172 |
178 | 173 |
179 buf2 = g_malloc(strlen(awaymessage->message)*4 + 1); | 174 buf2 = g_malloc(strlen(awaymessage->message) * 4 + 1); |
180 strncpy_withhtml(buf2, awaymessage->message, strlen(awaymessage->message)*4 + 1); | 175 strncpy_withhtml(buf2, awaymessage->message, strlen(awaymessage->message) * 4 + 1); |
181 serv_set_away(buf2); | 176 serv_set_away(buf2); |
182 g_free(buf2); | 177 g_free(buf2); |
183 gtk_widget_show(imaway); | 178 gtk_widget_show(imaway); |
184 plugin_event(event_away, 0, 0, 0, 0); | 179 plugin_event(event_away, 0, 0, 0, 0); |
185 } | 180 } |
186 | 181 |
187 void rem_away_mess(GtkWidget *w, struct away_message *a) | 182 void rem_away_mess(GtkWidget *w, struct away_message *a) |
188 { | 183 { |
189 struct away_message *default_msg; | 184 struct away_message *default_msg; |
190 #ifdef USE_APPLET | 185 #ifdef USE_APPLET |
191 char *awayname; | 186 char *awayname; |
192 awayname = g_malloc(sizeof (*awayname) * (6 + strlen(a->name))); | 187 awayname = g_malloc(sizeof(*awayname) * (6 + strlen(a->name))); |
193 awayname[0] = '\0'; | 188 awayname[0] = '\0'; |
194 strcat(awayname, "away/"); | 189 strcat(awayname, "away/"); |
195 strcat(awayname, a->name); | 190 strcat(awayname, a->name); |
196 applet_widget_unregister_callback(APPLET_WIDGET(applet), awayname); | 191 applet_widget_unregister_callback(APPLET_WIDGET(applet), awayname); |
197 g_free(awayname); | 192 g_free(awayname); |
198 #endif | 193 #endif |
199 default_msg = g_slist_nth_data(away_messages, default_away); | 194 default_msg = g_slist_nth_data(away_messages, default_away); |
200 away_messages = g_slist_remove(away_messages, a); | 195 away_messages = g_slist_remove(away_messages, a); |
201 default_away = g_slist_index(away_messages, default_msg); | 196 default_away = g_slist_index(away_messages, default_msg); |
202 if (default_away == -1) | 197 if (default_away == -1) |
203 default_away = 0; | 198 default_away = 0; |
204 g_free(a); | 199 g_free(a); |
205 do_away_menu(); | 200 do_away_menu(); |
206 save_prefs(); | 201 save_prefs(); |
207 } | 202 } |
208 | 203 |
209 | 204 |
210 void do_away_menu() | 205 void do_away_menu() |
211 { | 206 { |
214 GtkWidget *remitem; | 209 GtkWidget *remitem; |
215 GtkWidget *label; | 210 GtkWidget *label; |
216 GtkWidget *sep; | 211 GtkWidget *sep; |
217 GList *l; | 212 GList *l; |
218 GtkWidget *list_item; | 213 GtkWidget *list_item; |
219 GSList *awy = away_messages; | 214 GSList *awy = away_messages; |
220 struct away_message *a; | 215 struct away_message *a; |
221 | 216 |
222 #ifdef USE_APPLET | 217 #ifdef USE_APPLET |
223 remove_applet_away(); | 218 remove_applet_away(); |
224 if (imaway) | 219 if (imaway) |
225 applet_widget_register_callback(APPLET_WIDGET(applet), | 220 applet_widget_register_callback(APPLET_WIDGET(applet), |
226 "away", | 221 "away", _("Back"), (AppletCallbackFunc)do_im_back, NULL); |
227 _("Back"), | |
228 (AppletCallbackFunc)do_im_back, | |
229 NULL); | |
230 else | 222 else |
231 insert_applet_away(); | 223 insert_applet_away(); |
232 #endif | 224 #endif |
233 | 225 |
234 if (prefs_away_list != NULL) { | 226 if (prefs_away_list != NULL) { |
235 gtk_list_clear_items(GTK_LIST(prefs_away_list), 0, -1); | 227 gtk_list_clear_items(GTK_LIST(prefs_away_list), 0, -1); |
236 while(awy) { | 228 while (awy) { |
237 a = (struct away_message *)awy->data; | 229 a = (struct away_message *)awy->data; |
238 label = gtk_label_new(a->name); | 230 label = gtk_label_new(a->name); |
239 list_item = gtk_list_item_new(); | 231 list_item = gtk_list_item_new(); |
240 gtk_container_add(GTK_CONTAINER(list_item), label); | 232 gtk_container_add(GTK_CONTAINER(list_item), label); |
241 gtk_signal_connect(GTK_OBJECT(list_item), "select", GTK_SIGNAL_FUNC(away_list_clicked), a); | 233 gtk_signal_connect(GTK_OBJECT(list_item), "select", |
234 GTK_SIGNAL_FUNC(away_list_clicked), a); | |
242 /* gtk_signal_connect(GTK_OBJECT(list_item), "deselect", GTK_SIGNAL_FUNC(away_list_unclicked), a);*/ | 235 /* gtk_signal_connect(GTK_OBJECT(list_item), "deselect", GTK_SIGNAL_FUNC(away_list_unclicked), a);*/ |
243 gtk_object_set_user_data(GTK_OBJECT(list_item), a); | 236 gtk_object_set_user_data(GTK_OBJECT(list_item), a); |
244 | 237 |
245 gtk_widget_show(label); | 238 gtk_widget_show(label); |
246 gtk_container_add(GTK_CONTAINER(prefs_away_list), list_item); | 239 gtk_container_add(GTK_CONTAINER(prefs_away_list), list_item); |
247 gtk_widget_show(list_item); | 240 gtk_widget_show(list_item); |
248 | 241 |
249 awy = g_slist_next(awy); | 242 awy = g_slist_next(awy); |
250 } | 243 } |
251 if (away_messages != NULL) | 244 if (away_messages != NULL) |
252 gtk_list_select_item(GTK_LIST(prefs_away_list), 0); | 245 gtk_list_select_item(GTK_LIST(prefs_away_list), 0); |
253 } | 246 } |
254 | 247 |
255 if (awaymenu) { | 248 if (awaymenu) { |
256 l = gtk_container_children(GTK_CONTAINER(awaymenu)); | 249 l = gtk_container_children(GTK_CONTAINER(awaymenu)); |
257 | 250 |
258 while(l) { | 251 while (l) { |
259 gtk_widget_destroy(GTK_WIDGET(l->data)); | 252 gtk_widget_destroy(GTK_WIDGET(l->data)); |
260 l = l->next; | 253 l = l->next; |
261 } | 254 } |
262 | 255 |
263 | 256 |
264 remmenu = gtk_menu_new(); | 257 remmenu = gtk_menu_new(); |
265 | 258 |
266 menuitem = gtk_menu_item_new_with_label(_("New Away Message")); | 259 menuitem = gtk_menu_item_new_with_label(_("New Away Message")); |
267 gtk_menu_append(GTK_MENU(awaymenu), menuitem); | 260 gtk_menu_append(GTK_MENU(awaymenu), menuitem); |
268 gtk_widget_show(menuitem); | 261 gtk_widget_show(menuitem); |
269 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(create_away_mess), NULL); | 262 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(create_away_mess), |
270 | 263 NULL); |
264 | |
271 awy = away_messages; | 265 awy = away_messages; |
272 while(awy) { | 266 while (awy) { |
273 a = (struct away_message *)awy->data; | 267 a = (struct away_message *)awy->data; |
274 | 268 |
275 remitem = gtk_menu_item_new_with_label(a->name); | 269 remitem = gtk_menu_item_new_with_label(a->name); |
276 gtk_menu_append(GTK_MENU(remmenu), remitem); | 270 gtk_menu_append(GTK_MENU(remmenu), remitem); |
277 gtk_widget_show(remitem); | 271 gtk_widget_show(remitem); |
278 gtk_signal_connect(GTK_OBJECT(remitem), "activate", GTK_SIGNAL_FUNC(rem_away_mess), a); | 272 gtk_signal_connect(GTK_OBJECT(remitem), "activate", |
279 | 273 GTK_SIGNAL_FUNC(rem_away_mess), a); |
274 | |
280 awy = g_slist_next(awy); | 275 awy = g_slist_next(awy); |
281 | 276 |
282 } | 277 } |
283 | 278 |
284 menuitem = gtk_menu_item_new_with_label(_("Remove Away Message")); | 279 menuitem = gtk_menu_item_new_with_label(_("Remove Away Message")); |
285 gtk_menu_append(GTK_MENU(awaymenu), menuitem); | 280 gtk_menu_append(GTK_MENU(awaymenu), menuitem); |
286 gtk_widget_show(menuitem); | 281 gtk_widget_show(menuitem); |
287 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), remmenu); | 282 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), remmenu); |
288 gtk_widget_show(remmenu); | 283 gtk_widget_show(remmenu); |
289 | 284 |
290 sep = gtk_hseparator_new(); | 285 sep = gtk_hseparator_new(); |
291 menuitem = gtk_menu_item_new(); | 286 menuitem = gtk_menu_item_new(); |
292 gtk_menu_append(GTK_MENU(awaymenu), menuitem); | 287 gtk_menu_append(GTK_MENU(awaymenu), menuitem); |
293 gtk_container_add(GTK_CONTAINER(menuitem), sep); | 288 gtk_container_add(GTK_CONTAINER(menuitem), sep); |
294 gtk_widget_set_sensitive(menuitem, FALSE); | 289 gtk_widget_set_sensitive(menuitem, FALSE); |
295 gtk_widget_show(menuitem); | 290 gtk_widget_show(menuitem); |
296 gtk_widget_show(sep); | 291 gtk_widget_show(sep); |
297 | 292 |
298 awy = away_messages; | 293 awy = away_messages; |
299 | 294 |
300 while(awy) { | 295 while (awy) { |
301 a = (struct away_message *)awy->data; | 296 a = (struct away_message *)awy->data; |
302 | 297 |
303 menuitem = gtk_menu_item_new_with_label(a->name); | 298 menuitem = gtk_menu_item_new_with_label(a->name); |
304 gtk_menu_append(GTK_MENU(awaymenu), menuitem); | 299 gtk_menu_append(GTK_MENU(awaymenu), menuitem); |
305 gtk_widget_show(menuitem); | 300 gtk_widget_show(menuitem); |
306 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(do_away_message), a); | 301 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", |
307 | 302 GTK_SIGNAL_FUNC(do_away_message), a); |
303 | |
308 awy = g_slist_next(awy); | 304 awy = g_slist_next(awy); |
309 | 305 |
310 } | 306 } |
311 } | 307 } |
312 if (prefs_away_menu) { | 308 if (prefs_away_menu) { |
313 l = gtk_container_children(GTK_CONTAINER(prefs_away_menu)); | 309 l = gtk_container_children(GTK_CONTAINER(prefs_away_menu)); |
314 while(l) { | 310 while (l) { |
315 gtk_widget_destroy(GTK_WIDGET(l->data)); | 311 gtk_widget_destroy(GTK_WIDGET(l->data)); |
316 l = l->next; | 312 l = l->next; |
317 } | 313 } |
318 gtk_widget_hide(GTK_WIDGET(prefs_away_menu)); | 314 gtk_widget_hide(GTK_WIDGET(prefs_away_menu)); |
319 default_away_menu_init(GTK_WIDGET(prefs_away_menu)); | 315 default_away_menu_init(GTK_WIDGET(prefs_away_menu)); |
320 gtk_widget_show(prefs_away_menu); | 316 gtk_widget_show(prefs_away_menu); |
321 } | 317 } |
322 | 318 |
323 } | 319 } |
324 | |
325 | |
326 | |
327 | |
328 | |
329 |