Mercurial > pidgin.yaz
comparison src/dialogs.c @ 858:3de6e98e8898
[gaim-migrate @ 868]
the fg/bg buttons work now :-P
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 07 Sep 2000 23:08:44 +0000 |
parents | 9e2dcad06d3c |
children | 789df4b47508 |
comparison
equal
deleted
inserted
replaced
857:41bfae606d39 | 858:3de6e98e8898 |
---|---|
276 /*------------------------------------------------------------------------*/ | 276 /*------------------------------------------------------------------------*/ |
277 | 277 |
278 static gint delete_event_dialog(GtkWidget *w, GdkEventAny *e, struct conversation *c) | 278 static gint delete_event_dialog(GtkWidget *w, GdkEventAny *e, struct conversation *c) |
279 { | 279 { |
280 gchar *object_data; | 280 gchar *object_data; |
281 dialogwindows = g_list_remove(dialogwindows, w); | |
282 gtk_widget_destroy(w); | |
283 | |
284 object_data = gtk_object_get_user_data(GTK_OBJECT(w)); | 281 object_data = gtk_object_get_user_data(GTK_OBJECT(w)); |
285 | 282 |
286 if (GTK_IS_COLOR_SELECTION_DIALOG(w)) | 283 if (GTK_IS_COLOR_SELECTION_DIALOG(w)) |
287 { | 284 { |
288 set_state_lock(1); | 285 set_state_lock(1); |
289 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->fgcolorbtn), FALSE); | 286 if (w == c->fg_color_dialog) { |
287 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->fgcolorbtn), FALSE); | |
288 c->fg_color_dialog = NULL; | |
289 } else { | |
290 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->bgcolorbtn), FALSE); | |
291 c->bg_color_dialog = NULL; | |
292 } | |
290 set_state_lock(0); | 293 set_state_lock(0); |
291 c->color_dialog = NULL; | |
292 } | 294 } |
293 else if (GTK_IS_FONT_SELECTION_DIALOG(w)) | 295 else if (GTK_IS_FONT_SELECTION_DIALOG(w)) |
294 { | 296 { |
295 set_state_lock(1); | 297 set_state_lock(1); |
296 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->font), FALSE); | 298 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->font), FALSE); |
309 set_state_lock(1); | 311 set_state_lock(1); |
310 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->wood), FALSE); | 312 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->wood), FALSE); |
311 set_state_lock(0); | 313 set_state_lock(0); |
312 c->log_dialog = NULL; | 314 c->log_dialog = NULL; |
313 } | 315 } |
316 | |
317 dialogwindows = g_list_remove(dialogwindows, w); | |
318 gtk_widget_destroy(w); | |
314 | 319 |
315 return FALSE; | 320 return FALSE; |
316 } | 321 } |
317 | 322 |
318 static void destroy_dialog(GtkWidget *w, GtkWidget *w2) | 323 static void destroy_dialog(GtkWidget *w, GtkWidget *w2) |
2315 /*------------------------------------------------------*/ | 2320 /*------------------------------------------------------*/ |
2316 | 2321 |
2317 static GtkWidget *fgcseld = NULL; | 2322 static GtkWidget *fgcseld = NULL; |
2318 static GtkWidget *bgcseld = NULL; | 2323 static GtkWidget *bgcseld = NULL; |
2319 | 2324 |
2320 void cancel_color(GtkWidget *widget, struct conversation *c) | 2325 void cancel_fgcolor(GtkWidget *widget, struct conversation *c) |
2321 { | 2326 { |
2322 if (c->fgcolorbtn && widget) | 2327 if (c->fgcolorbtn && widget) |
2323 { | 2328 { |
2324 set_state_lock(1); | 2329 set_state_lock(1); |
2325 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->fgcolorbtn), FALSE); | 2330 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->fgcolorbtn), FALSE); |
2326 set_state_lock(0); | 2331 set_state_lock(0); |
2327 } | 2332 } |
2328 dialogwindows = g_list_remove(dialogwindows, c->color_dialog); | 2333 dialogwindows = g_list_remove(dialogwindows, c->fg_color_dialog); |
2329 gtk_widget_destroy(c->color_dialog); | 2334 gtk_widget_destroy(c->fg_color_dialog); |
2330 c->color_dialog = NULL; | 2335 c->fg_color_dialog = NULL; |
2331 } | 2336 } |
2332 | 2337 |
2333 void do_color(GtkWidget *widget, GtkColorSelection *colorsel) | 2338 void cancel_bgcolor(GtkWidget *widget, struct conversation *c) |
2339 { | |
2340 if (c->bgcolorbtn && widget) | |
2341 { | |
2342 set_state_lock(1); | |
2343 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->bgcolorbtn), FALSE); | |
2344 set_state_lock(0); | |
2345 } | |
2346 dialogwindows = g_list_remove(dialogwindows, c->bg_color_dialog); | |
2347 gtk_widget_destroy(c->bg_color_dialog); | |
2348 c->bg_color_dialog = NULL; | |
2349 } | |
2350 | |
2351 void do_fgcolor(GtkWidget *widget, GtkColorSelection *colorsel) | |
2334 { | 2352 { |
2335 gdouble color[3]; | 2353 gdouble color[3]; |
2336 GdkColor text_color; | 2354 GdkColor text_color; |
2337 struct conversation *c; | 2355 struct conversation *c; |
2338 char *open_tag; | 2356 char *open_tag; |
2345 /* GTK_IS_EDITABLE(c->entry); huh? */ | 2363 /* GTK_IS_EDITABLE(c->entry); huh? */ |
2346 | 2364 |
2347 text_color.red = ((guint16)(color[0]*65535))>>8; | 2365 text_color.red = ((guint16)(color[0]*65535))>>8; |
2348 text_color.green = ((guint16)(color[1]*65535))>>8; | 2366 text_color.green = ((guint16)(color[1]*65535))>>8; |
2349 text_color.blue = ((guint16)(color[2]*65535))>>8; | 2367 text_color.blue = ((guint16)(color[2]*65535))>>8; |
2368 | |
2350 c->fgcol = text_color; | 2369 c->fgcol = text_color; |
2351 c->hasfg = 1; | 2370 c->hasfg = 1; |
2352 | |
2353 g_snprintf(open_tag, 23, "<FONT COLOR=\"#%02X%02X%02X\">", text_color.red, text_color.green, text_color.blue); | 2371 g_snprintf(open_tag, 23, "<FONT COLOR=\"#%02X%02X%02X\">", text_color.red, text_color.green, text_color.blue); |
2354 surround(c->entry, open_tag, "</FONT>"); | 2372 surround(c->entry, open_tag, "</FONT>"); |
2355 sprintf(debug_buff,"#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); | 2373 sprintf(debug_buff,"#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); |
2356 debug_print(debug_buff); | 2374 debug_print(debug_buff); |
2357 g_free(open_tag); | 2375 g_free(open_tag); |
2358 cancel_color(NULL, c); | 2376 cancel_fgcolor(NULL, c); |
2377 } | |
2378 | |
2379 void do_bgcolor(GtkWidget *widget, GtkColorSelection *colorsel) | |
2380 { | |
2381 gdouble color[3]; | |
2382 GdkColor text_color; | |
2383 struct conversation *c; | |
2384 char *open_tag; | |
2385 | |
2386 open_tag = g_malloc(30); | |
2387 | |
2388 gtk_color_selection_get_color (colorsel, color); | |
2389 | |
2390 c = gtk_object_get_user_data(GTK_OBJECT(colorsel)); | |
2391 /* GTK_IS_EDITABLE(c->entry); huh? */ | |
2392 | |
2393 text_color.red = ((guint16)(color[0]*65535))>>8; | |
2394 text_color.green = ((guint16)(color[1]*65535))>>8; | |
2395 text_color.blue = ((guint16)(color[2]*65535))>>8; | |
2396 | |
2397 c->bgcol = text_color; | |
2398 c->hasbg = 1; | |
2399 g_snprintf(open_tag, 25, "<BODY BGCOLOR=\"#%02X%02X%02X\">", text_color.red, text_color.green, text_color.blue); | |
2400 surround(c->entry, open_tag, "</BODY>"); | |
2401 sprintf(debug_buff,"#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); | |
2402 debug_print(debug_buff); | |
2403 g_free(open_tag); | |
2404 cancel_bgcolor(NULL, c); | |
2359 } | 2405 } |
2360 | 2406 |
2361 static void destroy_colorsel(GtkWidget *w, gpointer d) | 2407 static void destroy_colorsel(GtkWidget *w, gpointer d) |
2362 { | 2408 { |
2363 if (d) { | 2409 if (d) { |
2387 bgcolor.green = ((guint16)(color[1]*65535))>>8; | 2433 bgcolor.green = ((guint16)(color[1]*65535))>>8; |
2388 bgcolor.blue = ((guint16)(color[2]*65535))>>8; | 2434 bgcolor.blue = ((guint16)(color[2]*65535))>>8; |
2389 } | 2435 } |
2390 } | 2436 } |
2391 | 2437 |
2392 void show_color_dialog(struct conversation *c, GtkWidget *color) | 2438 void show_fgcolor_dialog(struct conversation *c, GtkWidget *color) |
2393 { | 2439 { |
2394 GtkWidget *colorsel; | 2440 GtkWidget *colorsel; |
2395 | 2441 |
2396 if ((int)color == 1) { /* foreground */ | 2442 if (color == NULL) { /* we came from the prefs */ |
2397 if (fgcseld) return; | 2443 if (fgcseld) return; |
2398 fgcseld = gtk_color_selection_dialog_new(_("Select Text Color")); | 2444 fgcseld = gtk_color_selection_dialog_new(_("Select Text Color")); |
2399 | 2445 |
2400 gtk_signal_connect(GTK_OBJECT(fgcseld), "delete_event", GTK_SIGNAL_FUNC(destroy_colorsel), (void *)1); | 2446 gtk_signal_connect(GTK_OBJECT(fgcseld), "delete_event", GTK_SIGNAL_FUNC(destroy_colorsel), (void *)1); |
2401 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(fgcseld)->cancel_button), "clicked", GTK_SIGNAL_FUNC(destroy_colorsel), (void *)1); | 2447 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(fgcseld)->cancel_button), "clicked", GTK_SIGNAL_FUNC(destroy_colorsel), (void *)1); |
2403 gtk_widget_realize(fgcseld); | 2449 gtk_widget_realize(fgcseld); |
2404 aol_icon(fgcseld->window); | 2450 aol_icon(fgcseld->window); |
2405 gtk_widget_show(fgcseld); | 2451 gtk_widget_show(fgcseld); |
2406 gdk_window_raise(fgcseld->window); | 2452 gdk_window_raise(fgcseld->window); |
2407 return; | 2453 return; |
2408 } else if ((int)color == 2) { /* background */ | 2454 } |
2455 | |
2456 if (!c->fg_color_dialog) { | |
2457 c->fg_color_dialog = gtk_color_selection_dialog_new(_("Select Text Color")); | |
2458 | |
2459 colorsel = GTK_COLOR_SELECTION_DIALOG(c->fg_color_dialog)->colorsel; | |
2460 | |
2461 gtk_object_set_user_data(GTK_OBJECT(colorsel), c); | |
2462 | |
2463 gtk_signal_connect(GTK_OBJECT(c->fg_color_dialog), "delete_event", GTK_SIGNAL_FUNC(delete_event_dialog), c); | |
2464 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->fg_color_dialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(do_fgcolor), colorsel); | |
2465 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->fg_color_dialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_fgcolor), c); | |
2466 | |
2467 gtk_widget_realize(c->fg_color_dialog); | |
2468 aol_icon(c->fg_color_dialog->window); | |
2469 } | |
2470 | |
2471 gtk_widget_show(c->fg_color_dialog); | |
2472 gdk_window_raise(c->fg_color_dialog->window); | |
2473 } | |
2474 | |
2475 void show_bgcolor_dialog(struct conversation *c, GtkWidget *color) | |
2476 { | |
2477 GtkWidget *colorsel; | |
2478 | |
2479 if (color == NULL) { /* we came from the prefs */ | |
2409 if (bgcseld) return; | 2480 if (bgcseld) return; |
2410 bgcseld = gtk_color_selection_dialog_new(_("Select Background Color")); | 2481 bgcseld = gtk_color_selection_dialog_new(_("Select Background Color")); |
2411 | 2482 |
2412 gtk_signal_connect(GTK_OBJECT(bgcseld), "delete_event", GTK_SIGNAL_FUNC(destroy_colorsel), NULL); | 2483 gtk_signal_connect(GTK_OBJECT(bgcseld), "delete_event", GTK_SIGNAL_FUNC(destroy_colorsel), NULL); |
2413 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(bgcseld)->cancel_button), "clicked", GTK_SIGNAL_FUNC(destroy_colorsel), NULL); | 2484 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(bgcseld)->cancel_button), "clicked", GTK_SIGNAL_FUNC(destroy_colorsel), NULL); |
2417 gtk_widget_show(bgcseld); | 2488 gtk_widget_show(bgcseld); |
2418 gdk_window_raise(bgcseld->window); | 2489 gdk_window_raise(bgcseld->window); |
2419 return; | 2490 return; |
2420 } | 2491 } |
2421 | 2492 |
2422 if (!c->color_dialog) | 2493 if (!c->bg_color_dialog) { |
2423 { | 2494 c->bg_color_dialog = gtk_color_selection_dialog_new(_("Select Text Color")); |
2424 c->color_dialog = gtk_color_selection_dialog_new(_("Select Text Color")); | |
2425 | 2495 |
2426 colorsel = GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->colorsel; | 2496 colorsel = GTK_COLOR_SELECTION_DIALOG(c->bg_color_dialog)->colorsel; |
2427 | 2497 |
2428 gtk_object_set_user_data(GTK_OBJECT(colorsel), c); | 2498 gtk_object_set_user_data(GTK_OBJECT(colorsel), c); |
2429 | 2499 |
2430 gtk_signal_connect(GTK_OBJECT(c->color_dialog), "delete_event", GTK_SIGNAL_FUNC(delete_event_dialog), c); | 2500 gtk_signal_connect(GTK_OBJECT(c->bg_color_dialog), "delete_event", GTK_SIGNAL_FUNC(delete_event_dialog), c); |
2431 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(do_color), colorsel); | 2501 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->bg_color_dialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(do_bgcolor), colorsel); |
2432 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_color), c); | 2502 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->bg_color_dialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_bgcolor), c); |
2433 | 2503 |
2434 gtk_widget_realize(c->color_dialog); | 2504 gtk_widget_realize(c->bg_color_dialog); |
2435 aol_icon(c->color_dialog->window); | 2505 aol_icon(c->bg_color_dialog->window); |
2436 } | 2506 } |
2437 | 2507 |
2438 gtk_widget_show(c->color_dialog); | 2508 gtk_widget_show(c->bg_color_dialog); |
2439 gdk_window_raise(c->color_dialog->window); | 2509 gdk_window_raise(c->bg_color_dialog->window); |
2440 } | 2510 } |
2441 | 2511 |
2442 /*------------------------------------------------------------------------*/ | 2512 /*------------------------------------------------------------------------*/ |
2443 /* Font Selection Dialog */ | 2513 /* Font Selection Dialog */ |
2444 /*------------------------------------------------------------------------*/ | 2514 /*------------------------------------------------------------------------*/ |