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, &gtkwb->width, &gtkwb->height)) 131 if (!purple_whiteboard_get_dimensions(wb, &gtkwb->width, &gtkwb->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);