Mercurial > pidgin.yaz
comparison pidgin/gtkwhiteboard.c @ 32779:d72f2f13b60f
merge of 'c8c73eea7431e6f940916315ace40a41c8da3faa'
and 'fec428131bde0ae8247941bd6a3d996c984c9189'
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Fri, 21 Oct 2011 14:36:18 +0000 |
parents | 39d69f5bf146 |
children |
comparison
equal
deleted
inserted
replaced
32778:14787acaf9d7 | 32779:d72f2f13b60f |
---|---|
123 GtkWidget *color_button; | 123 GtkWidget *color_button; |
124 | 124 |
125 PidginWhiteboard *gtkwb = g_new0(PidginWhiteboard, 1); | 125 PidginWhiteboard *gtkwb = g_new0(PidginWhiteboard, 1); |
126 | 126 |
127 gtkwb->wb = wb; | 127 gtkwb->wb = wb; |
128 wb->ui_data = gtkwb; | 128 purple_whiteboard_set_ui_data(wb, gtkwb); |
129 | 129 |
130 /* Get dimensions (default?) for the whiteboard canvas */ | 130 /* Get dimensions (default?) for the whiteboard canvas */ |
131 if (!purple_whiteboard_get_dimensions(wb, >kwb->width, >kwb->height)) | 131 if (!purple_whiteboard_get_dimensions(wb, >kwb->width, >kwb->height)) |
132 { | 132 { |
133 /* Give some initial board-size */ | 133 /* Give some initial board-size */ |
143 } | 143 } |
144 | 144 |
145 /* Try and set window title as the name of the buddy, else just use their | 145 /* Try and set window title as the name of the buddy, else just use their |
146 * username | 146 * username |
147 */ | 147 */ |
148 buddy = purple_find_buddy(wb->account, wb->who); | 148 buddy = purple_find_buddy(purple_whiteboard_get_account(wb), purple_whiteboard_get_who(wb)); |
149 | 149 |
150 window = pidgin_create_window(buddy != NULL ? purple_buddy_get_contact_alias(buddy) : wb->who, 0, NULL, FALSE); | 150 window = pidgin_create_window(buddy != NULL ? purple_buddy_get_contact_alias(buddy) : purple_whiteboard_get_who(wb), 0, NULL, FALSE); |
151 gtkwb->window = window; | 151 gtkwb->window = window; |
152 gtk_widget_set_name(window, wb->who); | 152 gtk_widget_set_name(window, purple_whiteboard_get_who(wb)); |
153 | 153 |
154 g_signal_connect(G_OBJECT(window), "delete_event", | 154 g_signal_connect(G_OBJECT(window), "delete_event", |
155 G_CALLBACK(whiteboard_close_cb), gtkwb); | 155 G_CALLBACK(whiteboard_close_cb), gtkwb); |
156 | 156 |
157 #if 0 | 157 #if 0 |
272 { | 272 { |
273 PidginWhiteboard *gtkwb; | 273 PidginWhiteboard *gtkwb; |
274 GtkWidget *colour_dialog; | 274 GtkWidget *colour_dialog; |
275 | 275 |
276 g_return_if_fail(wb != NULL); | 276 g_return_if_fail(wb != NULL); |
277 gtkwb = wb->ui_data; | 277 gtkwb = purple_whiteboard_get_ui_data(wb); |
278 g_return_if_fail(gtkwb != NULL); | 278 g_return_if_fail(gtkwb != NULL); |
279 | 279 |
280 /* TODO Ask if user wants to save picture before the session is closed */ | 280 /* TODO Ask if user wants to save picture before the session is closed */ |
281 | 281 |
282 /* Clear graphical memory */ | 282 /* Clear graphical memory */ |
299 { | 299 { |
300 gtk_widget_destroy(gtkwb->window); | 300 gtk_widget_destroy(gtkwb->window); |
301 gtkwb->window = NULL; | 301 gtkwb->window = NULL; |
302 } | 302 } |
303 g_free(gtkwb); | 303 g_free(gtkwb); |
304 wb->ui_data = NULL; | 304 purple_whiteboard_set_ui_data(wb, NULL); |
305 } | 305 } |
306 | 306 |
307 static gboolean whiteboard_close_cb(GtkWidget *widget, GdkEvent *event, PidginWhiteboard *gtkwb) | 307 static gboolean whiteboard_close_cb(GtkWidget *widget, GdkEvent *event, PidginWhiteboard *gtkwb) |
308 { | 308 { |
309 PurpleWhiteboard *wb; | 309 PurpleWhiteboard *wb; |
404 { | 404 { |
405 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data; | 405 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data; |
406 GdkPixmap *pixmap = gtkwb->pixmap; | 406 GdkPixmap *pixmap = gtkwb->pixmap; |
407 | 407 |
408 PurpleWhiteboard *wb = gtkwb->wb; | 408 PurpleWhiteboard *wb = gtkwb->wb; |
409 GList *draw_list = wb->draw_list; | 409 GList *draw_list = purple_whiteboard_get_draw_list(wb); |
410 | 410 |
411 if(BrushState != BRUSH_STATE_UP) | 411 if(BrushState != BRUSH_STATE_UP) |
412 { | 412 { |
413 /* Potential double-click DOWN to DOWN? */ | 413 /* Potential double-click DOWN to DOWN? */ |
414 BrushState = BRUSH_STATE_DOWN; | 414 BrushState = BRUSH_STATE_DOWN; |
439 pidgin_whiteboard_draw_brush_point(gtkwb->wb, | 439 pidgin_whiteboard_draw_brush_point(gtkwb->wb, |
440 event->x, event->y, | 440 event->x, event->y, |
441 gtkwb->brush_color, gtkwb->brush_size); | 441 gtkwb->brush_color, gtkwb->brush_size); |
442 } | 442 } |
443 | 443 |
444 wb->draw_list = draw_list; | 444 purple_whiteboard_set_draw_list(wb, draw_list); |
445 | 445 |
446 return TRUE; | 446 return TRUE; |
447 } | 447 } |
448 | 448 |
449 static gboolean pidgin_whiteboard_brush_motion(GtkWidget *widget, GdkEventMotion *event, gpointer data) | 449 static gboolean pidgin_whiteboard_brush_motion(GtkWidget *widget, GdkEventMotion *event, gpointer data) |
457 | 457 |
458 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data; | 458 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data; |
459 GdkPixmap *pixmap = gtkwb->pixmap; | 459 GdkPixmap *pixmap = gtkwb->pixmap; |
460 | 460 |
461 PurpleWhiteboard *wb = gtkwb->wb; | 461 PurpleWhiteboard *wb = gtkwb->wb; |
462 GList *draw_list = wb->draw_list; | 462 GList *draw_list = purple_whiteboard_get_draw_list(wb); |
463 | 463 |
464 if(event->is_hint) | 464 if(event->is_hint) |
465 gdk_window_get_pointer(event->window, &x, &y, &state); | 465 gdk_window_get_pointer(event->window, &x, &y, &state); |
466 else | 466 else |
467 { | 467 { |
526 /* Set tracking variables */ | 526 /* Set tracking variables */ |
527 LastX = x; | 527 LastX = x; |
528 LastY = y; | 528 LastY = y; |
529 } | 529 } |
530 | 530 |
531 wb->draw_list = draw_list; | 531 purple_whiteboard_set_draw_list(wb, draw_list); |
532 | 532 |
533 return TRUE; | 533 return TRUE; |
534 } | 534 } |
535 | 535 |
536 static gboolean pidgin_whiteboard_brush_up(GtkWidget *widget, GdkEventButton *event, gpointer data) | 536 static gboolean pidgin_whiteboard_brush_up(GtkWidget *widget, GdkEventButton *event, gpointer data) |
537 { | 537 { |
538 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data; | 538 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data; |
539 GdkPixmap *pixmap = gtkwb->pixmap; | 539 GdkPixmap *pixmap = gtkwb->pixmap; |
540 | 540 |
541 PurpleWhiteboard *wb = gtkwb->wb; | 541 PurpleWhiteboard *wb = gtkwb->wb; |
542 GList *draw_list = wb->draw_list; | 542 GList *draw_list = purple_whiteboard_get_draw_list(wb); |
543 | 543 |
544 if((BrushState != BRUSH_STATE_DOWN) && (BrushState != BRUSH_STATE_MOTION)) | 544 if((BrushState != BRUSH_STATE_DOWN) && (BrushState != BRUSH_STATE_MOTION)) |
545 { | 545 { |
546 purple_debug_error("gtkwhiteboard", "***Bad brush state transition %d to UP\n", BrushState); | 546 purple_debug_error("gtkwhiteboard", "***Bad brush state transition %d to UP\n", BrushState); |
547 | 547 |
581 | 581 |
582 /* The brush stroke is finished, clear the list for another one */ | 582 /* The brush stroke is finished, clear the list for another one */ |
583 if(draw_list) | 583 if(draw_list) |
584 purple_whiteboard_draw_list_destroy(draw_list); | 584 purple_whiteboard_draw_list_destroy(draw_list); |
585 | 585 |
586 wb->draw_list = NULL; | 586 purple_whiteboard_set_draw_list(wb, NULL); |
587 } | 587 } |
588 | 588 |
589 return TRUE; | 589 return TRUE; |
590 } | 590 } |
591 | 591 |
592 static void pidgin_whiteboard_draw_brush_point(PurpleWhiteboard *wb, int x, int y, int color, int size) | 592 static void pidgin_whiteboard_draw_brush_point(PurpleWhiteboard *wb, int x, int y, int color, int size) |
593 { | 593 { |
594 PidginWhiteboard *gtkwb = wb->ui_data; | 594 PidginWhiteboard *gtkwb = purple_whiteboard_get_ui_data(wb); |
595 GtkWidget *widget = gtkwb->drawing_area; | 595 GtkWidget *widget = gtkwb->drawing_area; |
596 GdkPixmap *pixmap = gtkwb->pixmap; | 596 GdkPixmap *pixmap = gtkwb->pixmap; |
597 | 597 |
598 cairo_t *gfx_con = g_object_get_data(G_OBJECT(pixmap), "cairo-context"); | 598 cairo_t *gfx_con = g_object_get_data(G_OBJECT(pixmap), "cairo-context"); |
599 GdkColor col; | 599 GdkColor col; |
682 } | 682 } |
683 } | 683 } |
684 | 684 |
685 static void pidgin_whiteboard_set_dimensions(PurpleWhiteboard *wb, int width, int height) | 685 static void pidgin_whiteboard_set_dimensions(PurpleWhiteboard *wb, int width, int height) |
686 { | 686 { |
687 PidginWhiteboard *gtkwb = wb->ui_data; | 687 PidginWhiteboard *gtkwb = purple_whiteboard_get_ui_data(wb); |
688 | 688 |
689 gtkwb->width = width; | 689 gtkwb->width = width; |
690 gtkwb->height = height; | 690 gtkwb->height = height; |
691 } | 691 } |
692 | 692 |
693 static void pidgin_whiteboard_set_brush(PurpleWhiteboard *wb, int size, int color) | 693 static void pidgin_whiteboard_set_brush(PurpleWhiteboard *wb, int size, int color) |
694 { | 694 { |
695 PidginWhiteboard *gtkwb = wb->ui_data; | 695 PidginWhiteboard *gtkwb = purple_whiteboard_get_ui_data(wb); |
696 | 696 |
697 gtkwb->brush_size = size; | 697 gtkwb->brush_size = size; |
698 gtkwb->brush_color = color; | 698 gtkwb->brush_color = color; |
699 } | 699 } |
700 | 700 |
701 static void pidgin_whiteboard_clear(PurpleWhiteboard *wb) | 701 static void pidgin_whiteboard_clear(PurpleWhiteboard *wb) |
702 { | 702 { |
703 PidginWhiteboard *gtkwb = wb->ui_data; | 703 PidginWhiteboard *gtkwb = purple_whiteboard_get_ui_data(wb); |
704 GdkPixmap *pixmap = gtkwb->pixmap; | 704 GdkPixmap *pixmap = gtkwb->pixmap; |
705 GtkWidget *drawing_area = gtkwb->drawing_area; | 705 GtkWidget *drawing_area = gtkwb->drawing_area; |
706 cairo_t *cr = g_object_get_data(G_OBJECT(pixmap), "cairo-context"); | 706 cairo_t *cr = g_object_get_data(G_OBJECT(pixmap), "cairo-context"); |
707 | 707 |
708 gdk_cairo_set_source_color(cr, &drawing_area->style->white); | 708 gdk_cairo_set_source_color(cr, &drawing_area->style->white); |