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