Mercurial > pidgin
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 /*------------------------------------------------------------------------*/ |
