GPencil: Fix typo error
[blender.git] / intern / ghost / intern / GHOST_EventPrinter.cpp
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup GHOST
22  * Declaration of GHOST_EventPrinter class.
23  */
24
25 #include "GHOST_EventPrinter.h"
26 #include <iostream>
27 #include "GHOST_EventKey.h"
28 #include "GHOST_EventDragnDrop.h"
29 #include "GHOST_Debug.h"
30
31 #include <stdio.h>
32
33 bool GHOST_EventPrinter::processEvent(GHOST_IEvent *event)
34 {
35   bool handled = true;
36
37   GHOST_ASSERT(event, "event==0");
38
39   if (event->getType() == GHOST_kEventWindowUpdate)
40     return false;
41
42   std::cout << "\nGHOST_EventPrinter::processEvent, time: " << (GHOST_TInt32)event->getTime()
43             << ", type: ";
44   switch (event->getType()) {
45     case GHOST_kEventUnknown:
46       std::cout << "GHOST_kEventUnknown";
47       handled = false;
48       break;
49
50     case GHOST_kEventButtonUp: {
51       GHOST_TEventButtonData *buttonData =
52           (GHOST_TEventButtonData *)((GHOST_IEvent *)event)->getData();
53       std::cout << "GHOST_kEventCursorButtonUp, button: " << buttonData->button;
54     } break;
55     case GHOST_kEventButtonDown: {
56       GHOST_TEventButtonData *buttonData =
57           (GHOST_TEventButtonData *)((GHOST_IEvent *)event)->getData();
58       std::cout << "GHOST_kEventButtonDown, button: " << buttonData->button;
59     } break;
60
61     case GHOST_kEventWheel: {
62       GHOST_TEventWheelData *wheelData =
63           (GHOST_TEventWheelData *)((GHOST_IEvent *)event)->getData();
64       std::cout << "GHOST_kEventWheel, z: " << wheelData->z;
65     } break;
66
67     case GHOST_kEventCursorMove: {
68       GHOST_TEventCursorData *cursorData =
69           (GHOST_TEventCursorData *)((GHOST_IEvent *)event)->getData();
70       std::cout << "GHOST_kEventCursorMove, (x,y): (" << cursorData->x << "," << cursorData->y
71                 << ")";
72     } break;
73
74     case GHOST_kEventKeyUp: {
75       GHOST_TEventKeyData *keyData = (GHOST_TEventKeyData *)((GHOST_IEvent *)event)->getData();
76       char str[32] = {'\0'};
77       getKeyString(keyData->key, str);
78       std::cout << "GHOST_kEventKeyUp, key: " << str;
79     } break;
80     case GHOST_kEventKeyDown: {
81       GHOST_TEventKeyData *keyData = (GHOST_TEventKeyData *)((GHOST_IEvent *)event)->getData();
82       char str[32] = {'\0'};
83       getKeyString(keyData->key, str);
84       std::cout << "GHOST_kEventKeyDown, key: " << str;
85     } break;
86
87     case GHOST_kEventDraggingEntered: {
88       GHOST_TEventDragnDropData *dragnDropData =
89           (GHOST_TEventDragnDropData *)((GHOST_IEvent *)event)->getData();
90       std::cout << "GHOST_kEventDraggingEntered, dragged object type : "
91                 << dragnDropData->dataType;
92       std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y;
93     } break;
94
95     case GHOST_kEventDraggingUpdated: {
96       GHOST_TEventDragnDropData *dragnDropData =
97           (GHOST_TEventDragnDropData *)((GHOST_IEvent *)event)->getData();
98       std::cout << "GHOST_kEventDraggingUpdated, dragged object type : "
99                 << dragnDropData->dataType;
100       std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y;
101     } break;
102
103     case GHOST_kEventDraggingExited: {
104       GHOST_TEventDragnDropData *dragnDropData =
105           (GHOST_TEventDragnDropData *)((GHOST_IEvent *)event)->getData();
106       std::cout << "GHOST_kEventDraggingExited, dragged object type : " << dragnDropData->dataType;
107     } break;
108
109     case GHOST_kEventDraggingDropDone: {
110       GHOST_TEventDragnDropData *dragnDropData =
111           (GHOST_TEventDragnDropData *)((GHOST_IEvent *)event)->getData();
112       std::cout << "GHOST_kEventDraggingDropDone,";
113       std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y;
114       switch (dragnDropData->dataType) {
115         case GHOST_kDragnDropTypeString:
116           std::cout << " type : GHOST_kDragnDropTypeString,";
117           std::cout << "\n  String received = " << (char *)dragnDropData->data;
118           break;
119         case GHOST_kDragnDropTypeFilenames: {
120           GHOST_TStringArray *strArray = (GHOST_TStringArray *)dragnDropData->data;
121           int i;
122           std::cout << " type : GHOST_kDragnDropTypeFilenames,";
123           std::cout << "\n  Received " << strArray->count << " filename"
124                     << (strArray->count > 1 ? "s:" : ":");
125           for (i = 0; i < strArray->count; i++)
126             std::cout << "\n    File[" << i << "] : " << strArray->strings[i];
127         } break;
128         default:
129           break;
130       }
131     } break;
132
133     case GHOST_kEventOpenMainFile: {
134       GHOST_TEventDataPtr eventData = ((GHOST_IEvent *)event)->getData();
135
136       if (eventData)
137         std::cout << "GHOST_kEventOpenMainFile for path : " << (char *)eventData;
138       else
139         std::cout << "GHOST_kEventOpenMainFile with no path specified!!";
140     } break;
141
142     case GHOST_kEventQuitRequest:
143       std::cout << "GHOST_kEventQuitRequest";
144       break;
145     case GHOST_kEventWindowClose:
146       std::cout << "GHOST_kEventWindowClose";
147       break;
148     case GHOST_kEventWindowActivate:
149       std::cout << "GHOST_kEventWindowActivate";
150       break;
151     case GHOST_kEventWindowDeactivate:
152       std::cout << "GHOST_kEventWindowDeactivate";
153       break;
154     case GHOST_kEventWindowUpdate:
155       std::cout << "GHOST_kEventWindowUpdate";
156       break;
157     case GHOST_kEventWindowSize:
158       std::cout << "GHOST_kEventWindowSize";
159       break;
160
161     default:
162       std::cout << "not found";
163       handled = false;
164       break;
165   }
166
167   std::cout.flush();
168
169   return handled;
170 }
171
172 void GHOST_EventPrinter::getKeyString(GHOST_TKey key, char str[32]) const
173 {
174   if ((key >= GHOST_kKeyComma) && (key <= GHOST_kKeyRightBracket)) {
175     sprintf(str, "%c", (char)key);
176   }
177   else if ((key >= GHOST_kKeyNumpad0) && (key <= GHOST_kKeyNumpad9)) {
178     sprintf(str, "Numpad %d", (key - GHOST_kKeyNumpad0));
179   }
180   else if ((key >= GHOST_kKeyF1) && (key <= GHOST_kKeyF24)) {
181     sprintf(str, "F%d", key - GHOST_kKeyF1 + 1);
182   }
183   else {
184     const char *tstr = NULL;
185     switch (key) {
186       case GHOST_kKeyBackSpace:
187         tstr = "BackSpace";
188         break;
189       case GHOST_kKeyTab:
190         tstr = "Tab";
191         break;
192       case GHOST_kKeyLinefeed:
193         tstr = "Linefeed";
194         break;
195       case GHOST_kKeyClear:
196         tstr = "Clear";
197         break;
198       case GHOST_kKeyEnter:
199         tstr = "Enter";
200         break;
201       case GHOST_kKeyEsc:
202         tstr = "Esc";
203         break;
204       case GHOST_kKeySpace:
205         tstr = "Space";
206         break;
207       case GHOST_kKeyQuote:
208         tstr = "Quote";
209         break;
210       case GHOST_kKeyBackslash:
211         tstr = "\\";
212         break;
213       case GHOST_kKeyAccentGrave:
214         tstr = "`";
215         break;
216       case GHOST_kKeyLeftShift:
217         tstr = "LeftShift";
218         break;
219       case GHOST_kKeyRightShift:
220         tstr = "RightShift";
221         break;
222       case GHOST_kKeyLeftControl:
223         tstr = "LeftControl";
224         break;
225       case GHOST_kKeyRightControl:
226         tstr = "RightControl";
227         break;
228       case GHOST_kKeyLeftAlt:
229         tstr = "LeftAlt";
230         break;
231       case GHOST_kKeyRightAlt:
232         tstr = "RightAlt";
233         break;
234       case GHOST_kKeyOS:
235         tstr = "OS";
236         break;
237       case GHOST_kKeyGrLess:
238         // PC german!
239         tstr = "GrLess";
240         break;
241       case GHOST_kKeyCapsLock:
242         tstr = "CapsLock";
243         break;
244       case GHOST_kKeyNumLock:
245         tstr = "NumLock";
246         break;
247       case GHOST_kKeyScrollLock:
248         tstr = "ScrollLock";
249         break;
250       case GHOST_kKeyLeftArrow:
251         tstr = "LeftArrow";
252         break;
253       case GHOST_kKeyRightArrow:
254         tstr = "RightArrow";
255         break;
256       case GHOST_kKeyUpArrow:
257         tstr = "UpArrow";
258         break;
259       case GHOST_kKeyDownArrow:
260         tstr = "DownArrow";
261         break;
262       case GHOST_kKeyPrintScreen:
263         tstr = "PrintScreen";
264         break;
265       case GHOST_kKeyPause:
266         tstr = "Pause";
267         break;
268       case GHOST_kKeyInsert:
269         tstr = "Insert";
270         break;
271       case GHOST_kKeyDelete:
272         tstr = "Delete";
273         break;
274       case GHOST_kKeyHome:
275         tstr = "Home";
276         break;
277       case GHOST_kKeyEnd:
278         tstr = "End";
279         break;
280       case GHOST_kKeyUpPage:
281         tstr = "UpPage";
282         break;
283       case GHOST_kKeyDownPage:
284         tstr = "DownPage";
285         break;
286       case GHOST_kKeyNumpadPeriod:
287         tstr = "NumpadPeriod";
288         break;
289       case GHOST_kKeyNumpadEnter:
290         tstr = "NumpadEnter";
291         break;
292       case GHOST_kKeyNumpadPlus:
293         tstr = "NumpadPlus";
294         break;
295       case GHOST_kKeyNumpadMinus:
296         tstr = "NumpadMinus";
297         break;
298       case GHOST_kKeyNumpadAsterisk:
299         tstr = "NumpadAsterisk";
300         break;
301       case GHOST_kKeyNumpadSlash:
302         tstr = "NumpadSlash";
303         break;
304       case GHOST_kKeyMediaPlay:
305         tstr = "MediaPlayPause";
306         break;
307       case GHOST_kKeyMediaStop:
308         tstr = "MediaStop";
309         break;
310       case GHOST_kKeyMediaFirst:
311         tstr = "MediaFirst";
312         break;
313       case GHOST_kKeyMediaLast:
314         tstr = "MediaLast";
315         break;
316       default:
317         tstr = "unknown";
318         break;
319     }
320
321     sprintf(str, "%s", tstr);
322   }
323 }