pidgin/gtkwhiteboard.c

Mon, 20 May 2019 02:52:00 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Mon, 20 May 2019 02:52:00 -0400
changeset 39603
98fd85e156e0
parent 38712
ea49cd76cf47
child 39763
c819e240b60e
permissions
-rw-r--r--

Rename gtklog -> pidginlog.

11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
2 * pidgin
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
4 * Pidgin is the legal property of its developers, whose names are too numerous
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * source distribution.
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 *
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * (at your option) any later version.
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 *
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * GNU General Public License for more details.
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 *
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17243
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 *
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 */
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23
13566
04a368d40d16 [gaim-migrate @ 15944]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 13476
diff changeset
24 #include "internal.h"
34706
02cb08146888 Renamed blist.[ch] to buddylist.[ch]
Ankit Vani <a@nevitus.org>
parents: 34622
diff changeset
25 #include "buddylist.h"
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
26 #include "debug.h"
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35500
diff changeset
27 #include "pidgin.h"
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
28 #include "whiteboard.h"
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35500
diff changeset
30 #include "gtk3compat.h"
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 #include "gtkwhiteboard.h"
17243
e731e733d5bf #include "gtkutils.h"
Richard Laager <rlaager@pidgin.im>
parents: 17213
diff changeset
32 #include "gtkutils.h"
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
34 typedef enum {
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
35 PIDGIN_WHITEBOARD_BRUSH_UP,
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
36 PIDGIN_WHITEBOARD_BRUSH_DOWN,
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
37 PIDGIN_WHITEBOARD_BRUSH_MOTION
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
38 } PidginWhiteboardBrushState;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
39
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
40 typedef struct _PidginWhiteboard PidginWhiteboard;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
41 typedef struct _PidginWhiteboardPrivate PidginWhiteboardPrivate;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
42
33113
73e1a4f7a1a9 Privatize some GtkWhiteboard fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32286
diff changeset
43 struct _PidginWhiteboardPrivate {
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
44 cairo_t *cr;
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
45 cairo_surface_t *surface;
33113
73e1a4f7a1a9 Privatize some GtkWhiteboard fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32286
diff changeset
46 };
73e1a4f7a1a9 Privatize some GtkWhiteboard fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32286
diff changeset
47
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
48 /**
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
49 * PidginWhiteboard:
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
50 * @priv: Internal data
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
51 * @wb: Backend data for this whiteboard
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
52 * @window: Window for the Doodle session
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
53 * @drawing_area: Drawing area
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
54 * @width: Canvas width
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
55 * @height: Canvas height
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
56 * @brush_color: Foreground color
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
57 * @brush_size: Brush size
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
58 *
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
59 * A PidginWhiteboard
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
60 */
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
61 struct _PidginWhiteboard
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
62 {
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
63 PidginWhiteboardPrivate *priv;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
64
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
65 PurpleWhiteboard *wb;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
66
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
67 GtkWidget *window;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
68 GtkWidget *drawing_area;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
69
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
70 int width;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
71 int height;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
72 int brush_color;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
73 int brush_size;
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
74 };
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
75
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
76 /******************************************************************************
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
77 * Prototypes
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
78 *****************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
79 static void pidgin_whiteboard_create(PurpleWhiteboard *wb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
80
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
81 static void pidgin_whiteboard_destroy(PurpleWhiteboard *wb);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
82 static gboolean whiteboard_close_cb(GtkWidget *widget, GdkEvent *event, PidginWhiteboard *gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
83
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
84 /*static void pidginwhiteboard_button_start_press(GtkButton *button, gpointer data); */
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
85
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
86 static gboolean pidgin_whiteboard_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data);
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
87 static gboolean
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
88 pidgin_whiteboard_draw_event(GtkWidget *widget, cairo_t *cr,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
89 gpointer _gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
90
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
91 static gboolean pidgin_whiteboard_brush_down(GtkWidget *widget, GdkEventButton *event, gpointer data);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
92 static gboolean pidgin_whiteboard_brush_motion(GtkWidget *widget, GdkEventMotion *event, gpointer data);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
93 static gboolean pidgin_whiteboard_brush_up(GtkWidget *widget, GdkEventButton *event, gpointer data);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
95 static void pidgin_whiteboard_draw_brush_point(PurpleWhiteboard *wb,
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
96 int x, int y, int color, int size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
97 static void pidgin_whiteboard_draw_brush_line(PurpleWhiteboard *wb, int x0, int y0,
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
98 int x1, int y1, int color, int size);
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
99
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
100 static void pidgin_whiteboard_set_dimensions(PurpleWhiteboard *wb, int width, int height);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
101 static void pidgin_whiteboard_set_brush(PurpleWhiteboard *wb, int size, int color);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
102 static void pidgin_whiteboard_clear(PurpleWhiteboard *wb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
103
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
104 static void pidgin_whiteboard_button_clear_press(GtkWidget *widget, gpointer data);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
105 static void pidgin_whiteboard_button_save_press(GtkWidget *widget, gpointer data);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
106
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
107 static void pidgin_whiteboard_set_canvas_as_icon(PidginWhiteboard *gtkwb);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
109 static void pidgin_whiteboard_rgb24_to_rgba(int color_rgb, GdkRGBA *color);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
110
35550
b18fa06ff063 Use GtkFontButton and GtkColorButton widgets.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35549
diff changeset
111 static void color_selected(GtkColorButton *button, PidginWhiteboard *gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
112
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
113 /******************************************************************************
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
114 * Globals
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
115 *****************************************************************************/
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
117 static int LastX; /* Tracks last position of the mouse when drawing */
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
118 static int LastY;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
119 static int MotionCount; /* Tracks how many brush motions made */
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
120 static PidginWhiteboardBrushState brush_state = PIDGIN_WHITEBOARD_BRUSH_UP;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
122 static PurpleWhiteboardUiOps ui_ops =
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
124 pidgin_whiteboard_create,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
125 pidgin_whiteboard_destroy,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
126 pidgin_whiteboard_set_dimensions,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
127 pidgin_whiteboard_set_brush,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
128 pidgin_whiteboard_draw_brush_point,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
129 pidgin_whiteboard_draw_brush_line,
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
130 pidgin_whiteboard_clear,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
131 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
132 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
133 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
134 NULL
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 };
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
137 /******************************************************************************
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
138 * API
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
139 *****************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
140 PurpleWhiteboardUiOps *pidgin_whiteboard_get_ui_ops(void)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
142 return &ui_ops;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
145 static void pidgin_whiteboard_create(PurpleWhiteboard *wb)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
147 PurpleBuddy *buddy;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 GtkWidget *window;
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 GtkWidget *drawing_area;
12039
eaa207b93455 [gaim-migrate @ 14332]
Daniel Atallah <datallah@pidgin.im>
parents: 12022
diff changeset
150 GtkWidget *vbox_controls;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 GtkWidget *hbox_canvas_and_controls;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
152
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
153 /*
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
154 --------------------------
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
155 |[][][][palette[][][][][]|
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
156 |------------------------|
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
157 | canvas | con |
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
158 | | trol|
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
159 | | s |
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
160 | | |
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
161 | | |
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
162 --------------------------
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
163 */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 GtkWidget *clear_button;
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 GtkWidget *save_button;
12039
eaa207b93455 [gaim-migrate @ 14332]
Daniel Atallah <datallah@pidgin.im>
parents: 12022
diff changeset
166 GtkWidget *color_button;
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
167 GdkRGBA color;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
168
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
169 PidginWhiteboard *gtkwb = g_new0(PidginWhiteboard, 1);
33113
73e1a4f7a1a9 Privatize some GtkWhiteboard fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32286
diff changeset
170 gtkwb->priv = g_new0(PidginWhiteboardPrivate, 1);
11506
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
171
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 gtkwb->wb = wb;
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
173 purple_whiteboard_set_ui_data(wb, gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
174
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
175 /* Get dimensions (default?) for the whiteboard canvas */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
176 if (!purple_whiteboard_get_dimensions(wb, &gtkwb->width, &gtkwb->height))
12022
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
177 {
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
178 /* Give some initial board-size */
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
179 gtkwb->width = 300;
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
180 gtkwb->height = 250;
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
181 }
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
182
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
183 if (!purple_whiteboard_get_brush(wb, &gtkwb->brush_size, &gtkwb->brush_color))
12022
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
184 {
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
185 /* Give some initial brush-info */
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
186 gtkwb->brush_size = 2;
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
187 gtkwb->brush_color = 0xff0000;
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
188 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
189
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
190 /* Try and set window title as the name of the buddy, else just use their
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
191 * username
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
192 */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34706
diff changeset
193 buddy = purple_blist_find_buddy(purple_whiteboard_get_account(wb), purple_whiteboard_get_who(wb));
13637
4b26c6541540 [gaim-migrate @ 16034]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13566
diff changeset
194
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
195 window = pidgin_create_window(buddy != NULL ? purple_buddy_get_contact_alias(buddy) : purple_whiteboard_get_who(wb), 0, NULL, FALSE);
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 16752
diff changeset
196 gtkwb->window = window;
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
197 gtk_widget_set_name(window, purple_whiteboard_get_who(wb));
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
198
13468
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
199 g_signal_connect(G_OBJECT(window), "delete_event",
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
200 G_CALLBACK(whiteboard_close_cb), gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
201
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35500
diff changeset
202 hbox_canvas_and_controls = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
12039
eaa207b93455 [gaim-migrate @ 14332]
Daniel Atallah <datallah@pidgin.im>
parents: 12022
diff changeset
203 gtk_widget_show(hbox_canvas_and_controls);
eaa207b93455 [gaim-migrate @ 14332]
Daniel Atallah <datallah@pidgin.im>
parents: 12022
diff changeset
204
eaa207b93455 [gaim-migrate @ 14332]
Daniel Atallah <datallah@pidgin.im>
parents: 12022
diff changeset
205 gtk_container_add(GTK_CONTAINER(window), hbox_canvas_and_controls);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
206 gtk_container_set_border_width(GTK_CONTAINER(window), PIDGIN_HIG_BORDER);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
207
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
208 /* Create the drawing area */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 drawing_area = gtk_drawing_area_new();
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 gtkwb->drawing_area = drawing_area;
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
211 gtk_widget_set_size_request(GTK_WIDGET(drawing_area), gtkwb->width, gtkwb->height);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
212 gtk_box_pack_start(GTK_BOX(hbox_canvas_and_controls), drawing_area, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
213
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
214 gtk_widget_show(drawing_area);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
215
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
216 /* Signals used to handle backing pixmap */
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
217 g_signal_connect(G_OBJECT(drawing_area), "draw",
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
218 G_CALLBACK(pidgin_whiteboard_draw_event), gtkwb);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
219
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
220 g_signal_connect(G_OBJECT(drawing_area), "configure-event",
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
221 G_CALLBACK(pidgin_whiteboard_configure_event), gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
222
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
223 /* Event signals */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
224 g_signal_connect(G_OBJECT(drawing_area), "button_press_event",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
225 G_CALLBACK(pidgin_whiteboard_brush_down), gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
226
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
227 g_signal_connect(G_OBJECT(drawing_area), "motion_notify_event",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
228 G_CALLBACK(pidgin_whiteboard_brush_motion), gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
229
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
230 g_signal_connect(G_OBJECT(drawing_area), "button_release_event",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
231 G_CALLBACK(pidgin_whiteboard_brush_up), gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
232
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
233 gtk_widget_set_events(drawing_area,
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
234 GDK_EXPOSURE_MASK |
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
235 GDK_LEAVE_NOTIFY_MASK |
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
236 GDK_BUTTON_PRESS_MASK |
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
237 GDK_POINTER_MOTION_MASK |
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
238 GDK_BUTTON_RELEASE_MASK |
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
239 GDK_POINTER_MOTION_HINT_MASK);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
240
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
241 /* Create vertical box to contain the controls */
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35500
diff changeset
242 vbox_controls = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
12039
eaa207b93455 [gaim-migrate @ 14332]
Daniel Atallah <datallah@pidgin.im>
parents: 12022
diff changeset
243 gtk_box_pack_start(GTK_BOX(hbox_canvas_and_controls),
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
244 vbox_controls, FALSE, FALSE, PIDGIN_HIG_BOX_SPACE);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
245 gtk_widget_show(vbox_controls);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
246
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
247 /* Add a clear button */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
248 clear_button = gtk_button_new_from_stock(GTK_STOCK_CLEAR);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
249 gtk_box_pack_start(GTK_BOX(vbox_controls), clear_button, FALSE, FALSE, PIDGIN_HIG_BOX_SPACE);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
250 gtk_widget_show(clear_button);
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
251 g_signal_connect(G_OBJECT(clear_button), "clicked",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
252 G_CALLBACK(pidgin_whiteboard_button_clear_press), gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
253
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
254 /* Add a save button */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
255 save_button = gtk_button_new_from_stock(GTK_STOCK_SAVE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
256 gtk_box_pack_start(GTK_BOX(vbox_controls), save_button, FALSE, FALSE, PIDGIN_HIG_BOX_SPACE);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
257 gtk_widget_show(save_button);
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
258
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
259 g_signal_connect(G_OBJECT(save_button), "clicked",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
260 G_CALLBACK(pidgin_whiteboard_button_save_press), gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
261
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
262 /* Add a color selector */
35550
b18fa06ff063 Use GtkFontButton and GtkColorButton widgets.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35549
diff changeset
263 color_button = gtk_color_button_new();
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
264 gtk_box_pack_start(GTK_BOX(vbox_controls), color_button, FALSE, FALSE, PIDGIN_HIG_BOX_SPACE);
12039
eaa207b93455 [gaim-migrate @ 14332]
Daniel Atallah <datallah@pidgin.im>
parents: 12022
diff changeset
265 gtk_widget_show(color_button);
35550
b18fa06ff063 Use GtkFontButton and GtkColorButton widgets.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35549
diff changeset
266
b18fa06ff063 Use GtkFontButton and GtkColorButton widgets.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35549
diff changeset
267 gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(color_button), FALSE);
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
268 pidgin_whiteboard_rgb24_to_rgba(gtkwb->brush_color, &color);
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
269 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(color_button), &color);
35550
b18fa06ff063 Use GtkFontButton and GtkColorButton widgets.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35549
diff changeset
270
b18fa06ff063 Use GtkFontButton and GtkColorButton widgets.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35549
diff changeset
271 g_signal_connect(G_OBJECT(color_button), "color-set",
b18fa06ff063 Use GtkFontButton and GtkColorButton widgets.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35549
diff changeset
272 G_CALLBACK(color_selected), gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
273
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
274 /* Make all this (window) visible */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
275 gtk_widget_show(window);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
276
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
277 pidgin_whiteboard_set_canvas_as_icon(gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
278
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
279 /* TODO Specific protocol/whiteboard assignment here? Needs a UI Op? */
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
280 /* Set default brush size and color */
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
281 /*
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
282 ds->brush_size = DOODLE_BRUSH_MEDIUM;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
283 ds->brush_color = 0;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
284 */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
287 static void pidgin_whiteboard_destroy(PurpleWhiteboard *wb)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
289 PidginWhiteboard *gtkwb;
28137
e9ba2df9038c Close the colour selection dialog when the whiteboard window is closed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
290 GtkWidget *colour_dialog;
13468
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
291
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
292 g_return_if_fail(wb != NULL);
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
293 gtkwb = purple_whiteboard_get_ui_data(wb);
13468
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
294 g_return_if_fail(gtkwb != NULL);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
295
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
296 /* TODO Ask if user wants to save picture before the session is closed */
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
297
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
298 /* Clear graphical memory */
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
299 if (gtkwb->priv->cr) {
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
300 cairo_destroy(gtkwb->priv->cr);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
301 gtkwb->priv->cr = NULL;
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
302 }
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
303 if (gtkwb->priv->surface) {
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
304 cairo_surface_destroy(gtkwb->priv->surface);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
305 gtkwb->priv->surface = NULL;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
307
28137
e9ba2df9038c Close the colour selection dialog when the whiteboard window is closed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
308 colour_dialog = g_object_get_data(G_OBJECT(gtkwb->window), "colour-dialog");
e9ba2df9038c Close the colour selection dialog when the whiteboard window is closed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
309 if (colour_dialog) {
e9ba2df9038c Close the colour selection dialog when the whiteboard window is closed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
310 gtk_widget_destroy(colour_dialog);
e9ba2df9038c Close the colour selection dialog when the whiteboard window is closed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
311 g_object_set_data(G_OBJECT(gtkwb->window), "colour-dialog", NULL);
e9ba2df9038c Close the colour selection dialog when the whiteboard window is closed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
312 }
e9ba2df9038c Close the colour selection dialog when the whiteboard window is closed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
313
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
314 if(gtkwb->window)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
316 gtk_widget_destroy(gtkwb->window);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 gtkwb->window = NULL;
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318 }
33113
73e1a4f7a1a9 Privatize some GtkWhiteboard fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32286
diff changeset
319
73e1a4f7a1a9 Privatize some GtkWhiteboard fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32286
diff changeset
320 g_free(gtkwb->priv);
13468
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
321 g_free(gtkwb);
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
322 purple_whiteboard_set_ui_data(wb, NULL);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
325 static gboolean whiteboard_close_cb(GtkWidget *widget, GdkEvent *event, PidginWhiteboard *gtkwb)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
327 PurpleWhiteboard *wb;
13411
3ccc9f3e3e29 [gaim-migrate @ 15785]
Richard Laager <rlaager@pidgin.im>
parents: 12039
diff changeset
328
13476
8fdb0b79d370 [gaim-migrate @ 15851]
Mark Doliner <markdoliner@pidgin.im>
parents: 13468
diff changeset
329 g_return_val_if_fail(gtkwb != NULL, FALSE);
13411
3ccc9f3e3e29 [gaim-migrate @ 15785]
Richard Laager <rlaager@pidgin.im>
parents: 12039
diff changeset
330 wb = gtkwb->wb;
13476
8fdb0b79d370 [gaim-migrate @ 15851]
Mark Doliner <markdoliner@pidgin.im>
parents: 13468
diff changeset
331 g_return_val_if_fail(wb != NULL, FALSE);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
332
34937
ca1dab25bd7a Removed purple_whiteboard_destroy(). Renamed purple_whiteboard_create() to purple_whiteboard_new().
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
333 g_object_unref(wb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
334
13468
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
335 return FALSE;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
336 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
337
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
338 /*
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
339 * Whiteboard start button on conversation window (move this code to gtkconv?
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
340 * and use new protocol member?)
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
341 */
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
342 #if 0
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
343 static void pidginwhiteboard_button_start_press(GtkButton *button, gpointer data)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
344 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
345 PurpleConversation *conv = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
346 PurpleAccount *account = purple_conversation_get_account(conv);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
347 PurpleConnection *gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
348 char *to = (char*)(purple_conversation_get_name(conv));
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
349
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
350 /* Only handle this if local client requested Doodle session (else local
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
351 * client would have sent one)
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
352 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
353 PurpleWhiteboard *wb = purple_whiteboard_get(account, to);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
354
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
355 /* Write a local message to this conversation showing that a request for a
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
356 * Doodle session has been made
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
357 */
13468
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
358 /* XXXX because otherwise gettext will see this string, even though it's
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
359 * in an #if 0 block. Remove the XXXX if you want to use this code.
eb08475cc34d [gaim-migrate @ 15842]
Richard Laager <rlaager@pidgin.im>
parents: 13411
diff changeset
360 * But, it really shouldn't be a Yahoo-specific string. ;) */
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 33270
diff changeset
361 purple_im_conversation_write_message(PURPLE_CONV_IM(conv), "", XXXX_("Sent Doodle request."),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
362 PURPLE_MESSAGE_NICK | PURPLE_MESSAGE_RECV, time(NULL));
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
363
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
364 yahoo_doodle_command_send_request(gc, to);
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
365 yahoo_doodle_command_send_ready(gc, to);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
366
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
367 /* Insert this 'session' in the list. At this point, it's only a requested
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
368 * session.
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
369 */
34937
ca1dab25bd7a Removed purple_whiteboard_destroy(). Renamed purple_whiteboard_create() to purple_whiteboard_new().
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
370 wb = purple_whiteboard_new(account, to, DOODLE_STATE_REQUESTING);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
371 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
372 #endif
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
373
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
374 static gboolean pidgin_whiteboard_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
375 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
376 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data;
30567
9356eb596043 So I only changed the obvious GdkGC use in the whiteboard. I think
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30565
diff changeset
377 cairo_t *cr;
32410
3d78feb90b9c don't use GDK_DRAWABLE
Marcus Lundblad <malu@pidgin.im>
parents: 32394
diff changeset
378 GtkAllocation allocation;
35549
1128302c7511 Fix more colour deprecation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35547
diff changeset
379 GdkRGBA white = {1.0, 1.0, 1.0, 1.0};
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
380
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
381 if (gtkwb->priv->cr)
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
382 cairo_destroy(gtkwb->priv->cr);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
383 if (gtkwb->priv->surface)
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
384 cairo_surface_destroy(gtkwb->priv->surface);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
385
32410
3d78feb90b9c don't use GDK_DRAWABLE
Marcus Lundblad <malu@pidgin.im>
parents: 32394
diff changeset
386 gtk_widget_get_allocation(widget, &allocation);
32422
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32410
diff changeset
387
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
388 gtkwb->priv->surface = cairo_image_surface_create(CAIRO_FORMAT_RGB24,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
389 allocation.width, allocation.height);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
390 gtkwb->priv->cr = cr = cairo_create(gtkwb->priv->surface);
35549
1128302c7511 Fix more colour deprecation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35547
diff changeset
391 gdk_cairo_set_source_rgba(cr, &white);
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
392 cairo_rectangle(cr, 0, 0, allocation.width, allocation.height);
30567
9356eb596043 So I only changed the obvious GdkGC use in the whiteboard. I think
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30565
diff changeset
393 cairo_fill(cr);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
394
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
395 return TRUE;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
396 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
397
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
398 static gboolean
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
399 pidgin_whiteboard_draw_event(GtkWidget *widget, cairo_t *cr,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
400 gpointer _gtkwb)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
401 {
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
402 PidginWhiteboard *gtkwb = _gtkwb;
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
403
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
404 cairo_set_source_surface(cr, gtkwb->priv->surface, 0, 0);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
405 cairo_paint(cr);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
406
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
407 return FALSE;
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
408 }
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
409
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
410 static gboolean pidgin_whiteboard_brush_down(GtkWidget *widget, GdkEventButton *event, gpointer data)
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
411 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
412 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
413
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
414 PurpleWhiteboard *wb = gtkwb->wb;
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
415 GList *draw_list = purple_whiteboard_get_draw_list(wb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
416
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
417 if (brush_state != PIDGIN_WHITEBOARD_BRUSH_UP) {
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
418 /* Potential double-click DOWN to DOWN? */
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
419 brush_state = PIDGIN_WHITEBOARD_BRUSH_DOWN;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
420
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
421 /* return FALSE; */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
422 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
423
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
424 brush_state = PIDGIN_WHITEBOARD_BRUSH_DOWN;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
425
38712
ea49cd76cf47 Use GDK button constants instead of magic numbers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37992
diff changeset
426 if(event->button == GDK_BUTTON_PRIMARY && gtkwb->priv->cr != NULL)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
427 {
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
428 /* Check if draw_list has contents; if so, clear it */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
429 if(draw_list)
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
430 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
431 purple_whiteboard_draw_list_destroy(draw_list);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
432 draw_list = NULL;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
433 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
434
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
435 /* Set tracking variables */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
436 LastX = event->x;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
437 LastY = event->y;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
438
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
439 MotionCount = 0;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
440
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
441 draw_list = g_list_append(draw_list, GINT_TO_POINTER(LastX));
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
442 draw_list = g_list_append(draw_list, GINT_TO_POINTER(LastY));
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
443
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
444 pidgin_whiteboard_draw_brush_point(gtkwb->wb,
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
445 event->x, event->y,
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
446 gtkwb->brush_color, gtkwb->brush_size);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
447 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
448
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
449 purple_whiteboard_set_draw_list(wb, draw_list);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
450
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
451 return TRUE;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
452 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
453
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
454 static gboolean pidgin_whiteboard_brush_motion(GtkWidget *widget, GdkEventMotion *event, gpointer data)
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
455 {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
456 int x;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
457 int y;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
458 int dx;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
459 int dy;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
460
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
461 GdkModifierType state;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
462
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
463 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
464
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
465 PurpleWhiteboard *wb = gtkwb->wb;
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
466 GList *draw_list = purple_whiteboard_get_draw_list(wb);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
467
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
468 if(event->is_hint)
33270
a6493d38dc28 Use GdkDevice instead of keyboard and pointer grabs.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33174
diff changeset
469 gdk_window_get_device_position(event->window, event->device, &x, &y,
a6493d38dc28 Use GdkDevice instead of keyboard and pointer grabs.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33174
diff changeset
470 &state);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
471 else
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
472 {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
473 x = event->x;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
474 y = event->y;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
475 state = event->state;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
476 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
477
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
478 if(state & GDK_BUTTON1_MASK && gtkwb->priv->cr != NULL)
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
479 {
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
480 if ((brush_state != PIDGIN_WHITEBOARD_BRUSH_DOWN) &&
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
481 (brush_state != PIDGIN_WHITEBOARD_BRUSH_MOTION))
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
482 {
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
483 purple_debug_error("gtkwhiteboard",
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
484 "***Bad brush state transition %d to MOTION\n",
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
485 brush_state);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
486
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
487 brush_state = PIDGIN_WHITEBOARD_BRUSH_MOTION;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
488
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
489 return FALSE;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
490 }
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
491 brush_state = PIDGIN_WHITEBOARD_BRUSH_MOTION;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
492
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
493 dx = x - LastX;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
494 dy = y - LastY;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
495
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
496 MotionCount++;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
497
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
498 /* NOTE 100 is a temporary constant for how many deltas/motions in a
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
499 * stroke (needs UI Ops?)
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
500 */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
501 if(MotionCount == 100)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
502 {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
503 draw_list = g_list_append(draw_list, GINT_TO_POINTER(dx));
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
504 draw_list = g_list_append(draw_list, GINT_TO_POINTER(dy));
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
505
12022
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
506 /* Send draw list to the draw_list handler */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
507 purple_whiteboard_send_draw_list(gtkwb->wb, draw_list);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
508
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
509 /* The brush stroke is finished, clear the list for another one */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
510 if(draw_list)
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
511 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
512 purple_whiteboard_draw_list_destroy(draw_list);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
513 draw_list = NULL;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
514 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
515
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
516 /* Reset motion tracking */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
517 MotionCount = 0;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
518
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
519 draw_list = g_list_append(draw_list, GINT_TO_POINTER(LastX));
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
520 draw_list = g_list_append(draw_list, GINT_TO_POINTER(LastY));
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
521
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
522 dx = x - LastX;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
523 dy = y - LastY;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
524 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
525
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
526 draw_list = g_list_append(draw_list, GINT_TO_POINTER(dx));
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
527 draw_list = g_list_append(draw_list, GINT_TO_POINTER(dy));
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
528
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
529 pidgin_whiteboard_draw_brush_line(gtkwb->wb,
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
530 LastX, LastY,
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
531 x, y,
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
532 gtkwb->brush_color, gtkwb->brush_size);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
533
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
534 /* Set tracking variables */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
535 LastX = x;
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
536 LastY = y;
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
537 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
538
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
539 purple_whiteboard_set_draw_list(wb, draw_list);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
540
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
541 return TRUE;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
542 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
543
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
544 static gboolean pidgin_whiteboard_brush_up(GtkWidget *widget, GdkEventButton *event, gpointer data)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
545 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
546 PidginWhiteboard *gtkwb = (PidginWhiteboard*)data;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
547
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
548 PurpleWhiteboard *wb = gtkwb->wb;
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
549 GList *draw_list = purple_whiteboard_get_draw_list(wb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
550
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
551 if ((brush_state != PIDGIN_WHITEBOARD_BRUSH_DOWN) &&
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
552 (brush_state != PIDGIN_WHITEBOARD_BRUSH_MOTION))
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
553 {
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
554 purple_debug_error("gtkwhiteboard",
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
555 "***Bad brush state transition %d to UP\n",
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
556 brush_state);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
557
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
558 brush_state = PIDGIN_WHITEBOARD_BRUSH_UP;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
559
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
560 return FALSE;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
561 }
35543
a0f314250ac6 Hide PidginWhiteboard API
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35542
diff changeset
562 brush_state = PIDGIN_WHITEBOARD_BRUSH_UP;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
563
38712
ea49cd76cf47 Use GDK button constants instead of magic numbers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37992
diff changeset
564 if(event->button == GDK_BUTTON_PRIMARY && gtkwb->priv->cr != NULL)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
565 {
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
566 /* If the brush was never moved, express two sets of two deltas That's a
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
567 * 'point,' but not for Yahoo!
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
568 */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
569 /* if((event->x == LastX) && (event->y == LastY)) */
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
570 if(MotionCount == 0)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
571 {
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
572 int index;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
573
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
574 /* For Yahoo!, a (0 0) indicates the end of drawing */
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
575 /* FIXME: Yahoo Doodle specific! */
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
576 for(index = 0; index < 2; index++)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
577 {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
578 draw_list = g_list_append(draw_list, 0);
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
579 draw_list = g_list_append(draw_list, 0);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
580 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
581 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
582 /*
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
583 else
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
584 MotionCount = 0;
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
585 */
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
586
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
587 /* Send draw list to protocol draw_list handler */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
588 purple_whiteboard_send_draw_list(gtkwb->wb, draw_list);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
589
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
590 pidgin_whiteboard_set_canvas_as_icon(gtkwb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
591
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
592 /* The brush stroke is finished, clear the list for another one */
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
593 if(draw_list)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
594 purple_whiteboard_draw_list_destroy(draw_list);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
595
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
596 purple_whiteboard_set_draw_list(wb, NULL);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
597 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
598
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
599 return TRUE;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
600 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
601
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
602 static void pidgin_whiteboard_draw_brush_point(PurpleWhiteboard *wb, int x, int y, int color, int size)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
603 {
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
604 PidginWhiteboard *gtkwb = purple_whiteboard_get_ui_data(wb);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
605 GtkWidget *widget = gtkwb->drawing_area;
33113
73e1a4f7a1a9 Privatize some GtkWhiteboard fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32286
diff changeset
606 cairo_t *gfx_con = gtkwb->priv->cr;
35549
1128302c7511 Fix more colour deprecation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35547
diff changeset
607 GdkRGBA rgba;
11506
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
608
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
609 /* Interpret and convert color */
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
610 pidgin_whiteboard_rgb24_to_rgba(color, &rgba);
35549
1128302c7511 Fix more colour deprecation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35547
diff changeset
611 gdk_cairo_set_source_rgba(gfx_con, &rgba);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
612
30608
dd18b4f2fc3d I don't think cairo draws circles too badly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30607
diff changeset
613 /* Draw a circle */
dd18b4f2fc3d I don't think cairo draws circles too badly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30607
diff changeset
614 cairo_arc(gfx_con,
dd18b4f2fc3d I don't think cairo draws circles too badly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30607
diff changeset
615 x, y,
dd18b4f2fc3d I don't think cairo draws circles too badly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30607
diff changeset
616 size / 2.0,
dd18b4f2fc3d I don't think cairo draws circles too badly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30607
diff changeset
617 0.0, 2.0 * M_PI);
dd18b4f2fc3d I don't think cairo draws circles too badly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30607
diff changeset
618 cairo_fill(gfx_con);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
619
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
620 gtk_widget_queue_draw_area(widget,
30565
5d6bc29074bd Replace GdkGC in whiteboard stuff. But I don't have Yahoo!, so don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29694
diff changeset
621 x - size / 2, y - size / 2,
5d6bc29074bd Replace GdkGC in whiteboard stuff. But I don't have Yahoo!, so don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29694
diff changeset
622 size, size);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
623 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
624
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
625 /* Uses Bresenham's algorithm (as provided by Wikipedia) */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
626 static void pidgin_whiteboard_draw_brush_line(PurpleWhiteboard *wb, int x0, int y0, int x1, int y1, int color, int size)
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
627 {
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
628 int temp;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
629
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
630 int xstep;
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
631 int ystep;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
632
11506
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
633 int dx;
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
634 int dy;
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
635
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
636 int error;
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
637 int derror;
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
638
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
639 int x;
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
640 int y;
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
641
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
642 gboolean steep = abs(y1 - y0) > abs(x1 - x0);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
643
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
644 if(steep)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
645 {
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
646 temp = x0; x0 = y0; y0 = temp;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
647 temp = x1; x1 = y1; y1 = temp;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
648 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
649
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
650 dx = abs(x1 - x0);
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
651 dy = abs(y1 - y0);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
652
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
653 error = 0;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
654 derror = dy;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
655
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
656 x = x0;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
657 y = y0;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
658
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
659 if(x0 < x1)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
660 xstep = 1;
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
661 else
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
662 xstep = -1;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
663
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
664 if(y0 < y1)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
665 ystep = 1;
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
666 else
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
667 ystep = -1;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
668
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
669 if(steep)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
670 pidgin_whiteboard_draw_brush_point(wb, y, x, color, size);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
671 else
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
672 pidgin_whiteboard_draw_brush_point(wb, x, y, color, size);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
673
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
674 while(x != x1)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
675 {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
676 x += xstep;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
677 error += derror;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
678
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
679 if((error * 2) >= dx)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
680 {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
681 y += ystep;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
682 error -= dx;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
683 }
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
684
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
685 if(steep)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
686 pidgin_whiteboard_draw_brush_point(wb, y, x, color, size);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
687 else
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
688 pidgin_whiteboard_draw_brush_point(wb, x, y, color, size);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
689 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
690 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
691
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
692 static void pidgin_whiteboard_set_dimensions(PurpleWhiteboard *wb, int width, int height)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
693 {
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
694 PidginWhiteboard *gtkwb = purple_whiteboard_get_ui_data(wb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
695
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
696 gtkwb->width = width;
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
697 gtkwb->height = height;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
698 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
699
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
700 static void pidgin_whiteboard_set_brush(PurpleWhiteboard *wb, int size, int color)
12022
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
701 {
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
702 PidginWhiteboard *gtkwb = purple_whiteboard_get_ui_data(wb);
12022
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
703
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
704 gtkwb->brush_size = size;
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
705 gtkwb->brush_color = color;
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
706 }
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
707
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
708 static void pidgin_whiteboard_clear(PurpleWhiteboard *wb)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
709 {
32286
316da124dc0e Use the new accessor functions of PidginWhiteboard.
Andrew Victor <andrew.victor@mxit.com>
parents: 30698
diff changeset
710 PidginWhiteboard *gtkwb = purple_whiteboard_get_ui_data(wb);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
711 GtkWidget *drawing_area = gtkwb->drawing_area;
33113
73e1a4f7a1a9 Privatize some GtkWhiteboard fields.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32286
diff changeset
712 cairo_t *cr = gtkwb->priv->cr;
32422
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32410
diff changeset
713 GtkAllocation allocation;
35549
1128302c7511 Fix more colour deprecation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35547
diff changeset
714 GdkRGBA white = {1.0, 1.0, 1.0, 1.0};
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
715
32422
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32410
diff changeset
716 gtk_widget_get_allocation(drawing_area, &allocation);
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32410
diff changeset
717
35549
1128302c7511 Fix more colour deprecation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35547
diff changeset
718 gdk_cairo_set_source_rgba(cr, &white);
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
719 cairo_rectangle(cr, 0, 0, allocation.width, allocation.height);
30567
9356eb596043 So I only changed the obvious GdkGC use in the whiteboard. I think
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30565
diff changeset
720 cairo_fill(cr);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
721
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
722 gtk_widget_queue_draw_area(drawing_area, 0, 0,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
723 allocation.width, allocation.height);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
724 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
725
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
726 static void pidgin_whiteboard_button_clear_press(GtkWidget *widget, gpointer data)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
727 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
728 PidginWhiteboard *gtkwb = (PidginWhiteboard*)(data);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
729
29325
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
730 /* Confirm whether the user really wants to clear */
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
731 GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(gtkwb->window),
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
732 GTK_DIALOG_DESTROY_WITH_PARENT,
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
733 GTK_MESSAGE_QUESTION,
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
734 GTK_BUTTONS_YES_NO,
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
735 _("Do you really want to clear?"));
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
736 gint response = gtk_dialog_run(GTK_DIALOG(dialog));
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
737 gtk_widget_destroy(dialog);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
738
29325
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
739 if (response == GTK_RESPONSE_YES)
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
740 {
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
741 pidgin_whiteboard_clear(gtkwb->wb);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
742
29325
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
743 pidgin_whiteboard_set_canvas_as_icon(gtkwb);
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
744
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
745 /* Do protocol specific clearing procedures */
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
746 purple_whiteboard_send_clear(gtkwb->wb);
45a011117ac5 Display a confirmation prompt when attempting to clear the whiteboard.
Kartik Mohta <kartikmohta@gmail.com>
parents: 28981
diff changeset
747 }
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
748 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
749
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
750 static void
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
751 pidgin_whiteboard_button_save_press(GtkWidget *widget, gpointer _gtkwb)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
752 {
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
753 PidginWhiteboard *gtkwb = _gtkwb;
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
754 GdkPixbuf *pixbuf;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
755 GtkWidget *dialog;
11506
5fdbdf55cbe9 [gaim-migrate @ 13751]
Richard Laager <rlaager@pidgin.im>
parents: 11484
diff changeset
756 int result;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
757
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
758 dialog = gtk_file_chooser_dialog_new(_("Save File"),
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
759 GTK_WINDOW(gtkwb->window), GTK_FILE_CHOOSER_ACTION_SAVE,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
760 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
761 GTK_RESPONSE_ACCEPT, NULL);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
762
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
763 gtk_file_chooser_set_do_overwrite_confirmation(
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
764 GTK_FILE_CHOOSER(dialog), TRUE);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
765
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
766 gtk_file_chooser_set_current_name(
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
767 GTK_FILE_CHOOSER(dialog), "whiteboard.png");
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28137
diff changeset
768
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
769 result = gtk_dialog_run(GTK_DIALOG(dialog));
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
770
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
771 if (result == GTK_RESPONSE_ACCEPT) {
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
772 gboolean success;
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
773 gchar *filename =
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
774 gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28137
diff changeset
775
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
776 gtk_widget_destroy(dialog);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
777
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
778 pixbuf = gdk_pixbuf_get_from_surface(gtkwb->priv->surface, 0, 0,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
779 gtkwb->width, gtkwb->height);
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
780
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
781 success = gdk_pixbuf_save(pixbuf, filename, "png", NULL,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
782 "compression", "9", NULL);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
783 g_object_unref(pixbuf);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
784 if (success) {
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
785 purple_debug_info("gtkwhiteboard",
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
786 "whiteboard saved to \"%s\"", filename);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
787 } else {
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
788 purple_notify_error(NULL, _("Whiteboard"),
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
789 _("Unable to save the file"), NULL, NULL);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
790 purple_debug_error("gtkwhiteboard", "whiteboard "
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
791 "couldn't be saved to \"%s\"", filename);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
792 }
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11506
diff changeset
793 g_free(filename);
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
794 } else if (result == GTK_RESPONSE_CANCEL)
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
795 gtk_widget_destroy(dialog);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
796 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
797
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
798 static void pidgin_whiteboard_set_canvas_as_icon(PidginWhiteboard *gtkwb)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
799 {
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
800 GdkPixbuf *pixbuf;
11802
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
801
b97b3fea95ce [gaim-migrate @ 14093]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
802 /* Makes an icon from the whiteboard's canvas 'image' */
35542
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
803 pixbuf = gdk_pixbuf_get_from_surface(gtkwb->priv->surface,
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
804 0, 0, gtkwb->width, gtkwb->height);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
805 gtk_window_set_icon(GTK_WINDOW(gtkwb->window), pixbuf);
53d0fee7c971 Fix whiteboard to work on both gtk2 and gtk3
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35527
diff changeset
806 g_object_unref(pixbuf);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
807 }
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
808
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
809 static void pidgin_whiteboard_rgb24_to_rgba(int color_rgb, GdkRGBA *color)
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
810 {
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
811 color->red = ((color_rgb >> 16) & 0xFF) / 255.0f;
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
812 color->green = ((color_rgb >> 8) & 0xFF) / 255.0f;
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
813 color->blue = (color_rgb & 0xFF) / 255.0f;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
814 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
815
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
816 static void
35550
b18fa06ff063 Use GtkFontButton and GtkColorButton widgets.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35549
diff changeset
817 color_selected(GtkColorButton *button, PidginWhiteboard *gtkwb)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
818 {
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
819 GdkRGBA color;
35547
561418a41b08 Replace gtk_color_selection with gtk_color_chooser
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35543
diff changeset
820 PurpleWhiteboard *wb = gtkwb->wb;
561418a41b08 Replace gtk_color_selection with gtk_color_chooser
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35543
diff changeset
821 int old_size, old_color;
12022
c03fe7e2cd1d [gaim-migrate @ 14315]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11938
diff changeset
822 int new_color;
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
823
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
824 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(button), &color);
35547
561418a41b08 Replace gtk_color_selection with gtk_color_chooser
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35543
diff changeset
825
37992
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
826 new_color = (unsigned int)(color.red * 255) << 16;
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
827 new_color |= (unsigned int)(color.green * 255) << 8;
0185eb26ac7d Use GdkRGBA instead of GdkColor.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37422
diff changeset
828 new_color |= (unsigned int)(color.blue * 255);
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11829
diff changeset
829
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
830 purple_whiteboard_get_brush(wb, &old_size, &old_color);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
831 purple_whiteboard_send_brush(wb, old_size, new_color);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
832 }
12039
eaa207b93455 [gaim-migrate @ 14332]
Daniel Atallah <datallah@pidgin.im>
parents: 12022
diff changeset
833

mercurial