|
Blender
V2.59
|
00001 /* 00002 * $Id: GHOST_EventPrinter.cpp 38351 2011-07-13 06:04:54Z campbellbarton $ 00003 * ***** BEGIN GPL LICENSE BLOCK ***** 00004 * 00005 * This program is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU General Public License 00007 * as published by the Free Software Foundation; either version 2 00008 * of the License, or (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software Foundation, 00017 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00018 * 00019 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 00020 * All rights reserved. 00021 * 00022 * The Original Code is: all of this file. 00023 * 00024 * Contributor(s): none yet. 00025 * 00026 * ***** END GPL LICENSE BLOCK ***** 00027 */ 00028 00034 #include "GHOST_EventPrinter.h" 00035 #include <iostream> 00036 #include "GHOST_EventKey.h" 00037 #include "GHOST_EventDragnDrop.h" 00038 #include "GHOST_Debug.h" 00039 00040 #include <stdio.h> 00041 00042 bool GHOST_EventPrinter::processEvent(GHOST_IEvent* event) 00043 { 00044 bool handled = true; 00045 00046 GHOST_ASSERT(event, "event==0"); 00047 00048 if (event->getType() == GHOST_kEventWindowUpdate) return false; 00049 00050 std::cout << "\nGHOST_EventPrinter::processEvent, time: " << (GHOST_TInt32)event->getTime() << ", type: "; 00051 switch (event->getType()) { 00052 case GHOST_kEventUnknown: 00053 std::cout << "GHOST_kEventUnknown"; handled = false; 00054 break; 00055 00056 case GHOST_kEventButtonUp: 00057 { 00058 GHOST_TEventButtonData* buttonData = (GHOST_TEventButtonData*)((GHOST_IEvent*)event)->getData(); 00059 std::cout << "GHOST_kEventCursorButtonUp, button: " << buttonData->button; 00060 } 00061 break; 00062 case GHOST_kEventButtonDown: 00063 { 00064 GHOST_TEventButtonData* buttonData = (GHOST_TEventButtonData*)((GHOST_IEvent*)event)->getData(); 00065 std::cout << "GHOST_kEventButtonDown, button: " << buttonData->button; 00066 } 00067 break; 00068 00069 case GHOST_kEventWheel: 00070 { 00071 GHOST_TEventWheelData* wheelData = (GHOST_TEventWheelData*)((GHOST_IEvent*)event)->getData(); 00072 std::cout << "GHOST_kEventWheel, z: " << wheelData->z; 00073 } 00074 break; 00075 00076 case GHOST_kEventCursorMove: 00077 { 00078 GHOST_TEventCursorData* cursorData = (GHOST_TEventCursorData*)((GHOST_IEvent*)event)->getData(); 00079 std::cout << "GHOST_kEventCursorMove, (x,y): (" << cursorData->x << "," << cursorData->y << ")"; 00080 } 00081 break; 00082 00083 case GHOST_kEventKeyUp: 00084 { 00085 GHOST_TEventKeyData* keyData = (GHOST_TEventKeyData*)((GHOST_IEvent*)event)->getData(); 00086 char str[32]= {'\0'}; 00087 getKeyString(keyData->key, str); 00088 std::cout << "GHOST_kEventKeyUp, key: " << str; 00089 } 00090 break; 00091 case GHOST_kEventKeyDown: 00092 { 00093 GHOST_TEventKeyData* keyData = (GHOST_TEventKeyData*)((GHOST_IEvent*)event)->getData(); 00094 char str[32]= {'\0'}; 00095 getKeyString(keyData->key, str); 00096 std::cout << "GHOST_kEventKeyDown, key: " << str; 00097 } 00098 break; 00099 00100 case GHOST_kEventDraggingEntered: 00101 { 00102 GHOST_TEventDragnDropData* dragnDropData = (GHOST_TEventDragnDropData*)((GHOST_IEvent*)event)->getData(); 00103 std::cout << "GHOST_kEventDraggingEntered, dragged object type : " << dragnDropData->dataType; 00104 std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y; 00105 } 00106 break; 00107 00108 case GHOST_kEventDraggingUpdated: 00109 { 00110 GHOST_TEventDragnDropData* dragnDropData = (GHOST_TEventDragnDropData*)((GHOST_IEvent*)event)->getData(); 00111 std::cout << "GHOST_kEventDraggingUpdated, dragged object type : " << dragnDropData->dataType; 00112 std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y; 00113 } 00114 break; 00115 00116 case GHOST_kEventDraggingExited: 00117 { 00118 GHOST_TEventDragnDropData* dragnDropData = (GHOST_TEventDragnDropData*)((GHOST_IEvent*)event)->getData(); 00119 std::cout << "GHOST_kEventDraggingExited, dragged object type : " << dragnDropData->dataType; 00120 } 00121 break; 00122 00123 case GHOST_kEventDraggingDropDone: 00124 { 00125 GHOST_TEventDragnDropData* dragnDropData = (GHOST_TEventDragnDropData*)((GHOST_IEvent*)event)->getData(); 00126 std::cout << "GHOST_kEventDraggingDropDone,"; 00127 std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y; 00128 switch (dragnDropData->dataType) { 00129 case GHOST_kDragnDropTypeString: 00130 std::cout << " type : GHOST_kDragnDropTypeString,"; 00131 std::cout << "\n String received = " << (char*)dragnDropData->data; 00132 break; 00133 case GHOST_kDragnDropTypeFilenames: 00134 { 00135 GHOST_TStringArray *strArray = (GHOST_TStringArray*)dragnDropData->data; 00136 int i; 00137 std::cout << " type : GHOST_kDragnDropTypeFilenames,"; 00138 std::cout << "\n Received " << strArray->count << " filename" << (strArray->count > 1 ? "s:" : ":"); 00139 for (i=0;i<strArray->count;i++) 00140 std::cout << "\n File[" << i << "] : " << strArray->strings[i]; 00141 } 00142 break; 00143 default: 00144 break; 00145 } 00146 } 00147 break; 00148 00149 case GHOST_kEventOpenMainFile: 00150 { 00151 GHOST_TEventDataPtr eventData = ((GHOST_IEvent*)event)->getData(); 00152 00153 if (eventData) 00154 std::cout << "GHOST_kEventOpenMainFile for path : " << (char*)eventData; 00155 else 00156 std::cout << "GHOST_kEventOpenMainFile with no path specified!!"; 00157 } 00158 break; 00159 00160 case GHOST_kEventQuit: 00161 std::cout << "GHOST_kEventQuit"; 00162 break; 00163 case GHOST_kEventWindowClose: 00164 std::cout << "GHOST_kEventWindowClose"; 00165 break; 00166 case GHOST_kEventWindowActivate: 00167 std::cout << "GHOST_kEventWindowActivate"; 00168 break; 00169 case GHOST_kEventWindowDeactivate: 00170 std::cout << "GHOST_kEventWindowDeactivate"; 00171 break; 00172 case GHOST_kEventWindowUpdate: 00173 std::cout << "GHOST_kEventWindowUpdate"; 00174 break; 00175 case GHOST_kEventWindowSize: 00176 std::cout << "GHOST_kEventWindowSize"; 00177 break; 00178 00179 default: 00180 std::cout << "not found"; handled = false; 00181 break; 00182 } 00183 return handled; 00184 } 00185 00186 00187 void GHOST_EventPrinter::getKeyString(GHOST_TKey key, char str[32]) const 00188 { 00189 if ((key >= GHOST_kKeyComma) && (key <= GHOST_kKeyRightBracket)) { 00190 sprintf(str, "%c", (char)key); 00191 } else if ((key >= GHOST_kKeyNumpad0) && (key <= GHOST_kKeyNumpad9)) { 00192 sprintf(str, "Numpad %d", (key - GHOST_kKeyNumpad0)); 00193 #if defined(__sun__) || defined(__sun) 00194 } else if (key == 268828432) { /* solaris keyboards are messed up */ 00195 /* This should really test XK_F11 but that doesn't work */ 00196 strcpy(str, "F11"); 00197 } else if (key == 268828433) { /* solaris keyboards are messed up */ 00198 /* This should really test XK_F12 but that doesn't work */ 00199 strcpy(str, "F12"); 00200 #endif 00201 } else if ((key >= GHOST_kKeyF1) && (key <= GHOST_kKeyF24)) { 00202 sprintf(str, "F%d", key - GHOST_kKeyF1 + 1); 00203 } else { 00204 const char *tstr= NULL; 00205 switch (key) { 00206 case GHOST_kKeyBackSpace: 00207 tstr = "BackSpace"; 00208 break; 00209 case GHOST_kKeyTab: 00210 tstr = "Tab"; 00211 break; 00212 case GHOST_kKeyLinefeed: 00213 tstr = "Linefeed"; 00214 break; 00215 case GHOST_kKeyClear: 00216 tstr = "Clear"; 00217 break; 00218 case GHOST_kKeyEnter: 00219 tstr = "Enter"; 00220 break; 00221 case GHOST_kKeyEsc: 00222 tstr = "Esc"; 00223 break; 00224 case GHOST_kKeySpace: 00225 tstr = "Space"; 00226 break; 00227 case GHOST_kKeyQuote: 00228 tstr = "Quote"; 00229 break; 00230 case GHOST_kKeyBackslash: 00231 tstr = "\\"; 00232 break; 00233 case GHOST_kKeyAccentGrave: 00234 tstr = "`"; 00235 break; 00236 case GHOST_kKeyLeftShift: 00237 tstr = "LeftShift"; 00238 break; 00239 case GHOST_kKeyRightShift: 00240 tstr = "RightShift"; 00241 break; 00242 case GHOST_kKeyLeftControl: 00243 tstr = "LeftControl"; 00244 break; 00245 case GHOST_kKeyRightControl: 00246 tstr = "RightControl"; 00247 break; 00248 case GHOST_kKeyLeftAlt: 00249 tstr = "LeftAlt"; 00250 break; 00251 case GHOST_kKeyRightAlt: 00252 tstr = "RightAlt"; 00253 break; 00254 case GHOST_kKeyOS: 00255 tstr = "OS"; 00256 break; 00257 case GHOST_kKeyGrLess: 00258 // PC german! 00259 tstr = "GrLess"; 00260 break; 00261 case GHOST_kKeyCapsLock: 00262 tstr = "CapsLock"; 00263 break; 00264 case GHOST_kKeyNumLock: 00265 tstr = "NumLock"; 00266 break; 00267 case GHOST_kKeyScrollLock: 00268 tstr = "ScrollLock"; 00269 break; 00270 case GHOST_kKeyLeftArrow: 00271 tstr = "LeftArrow"; 00272 break; 00273 case GHOST_kKeyRightArrow: 00274 tstr = "RightArrow"; 00275 break; 00276 case GHOST_kKeyUpArrow: 00277 tstr = "UpArrow"; 00278 break; 00279 case GHOST_kKeyDownArrow: 00280 tstr = "DownArrow"; 00281 break; 00282 case GHOST_kKeyPrintScreen: 00283 tstr = "PrintScreen"; 00284 break; 00285 case GHOST_kKeyPause: 00286 tstr = "Pause"; 00287 break; 00288 case GHOST_kKeyInsert: 00289 tstr = "Insert"; 00290 break; 00291 case GHOST_kKeyDelete: 00292 tstr = "Delete"; 00293 break; 00294 case GHOST_kKeyHome: 00295 tstr = "Home"; 00296 break; 00297 case GHOST_kKeyEnd: 00298 tstr = "End"; 00299 break; 00300 case GHOST_kKeyUpPage: 00301 tstr = "UpPage"; 00302 break; 00303 case GHOST_kKeyDownPage: 00304 tstr = "DownPage"; 00305 break; 00306 case GHOST_kKeyNumpadPeriod: 00307 tstr = "NumpadPeriod"; 00308 break; 00309 case GHOST_kKeyNumpadEnter: 00310 tstr = "NumpadEnter"; 00311 break; 00312 case GHOST_kKeyNumpadPlus: 00313 tstr = "NumpadPlus"; 00314 break; 00315 case GHOST_kKeyNumpadMinus: 00316 tstr = "NumpadMinus"; 00317 break; 00318 case GHOST_kKeyNumpadAsterisk: 00319 tstr = "NumpadAsterisk"; 00320 break; 00321 case GHOST_kKeyNumpadSlash: 00322 tstr = "NumpadSlash"; 00323 break; 00324 case GHOST_kKeyMediaPlay: 00325 tstr = "MediaPlayPause"; 00326 break; 00327 case GHOST_kKeyMediaStop: 00328 tstr = "MediaStop"; 00329 break; 00330 case GHOST_kKeyMediaFirst: 00331 tstr = "MediaFirst"; 00332 break; 00333 case GHOST_kKeyMediaLast: 00334 tstr = "MediaLast"; 00335 break; 00336 default: 00337 tstr = "unknown"; 00338 break; 00339 } 00340 00341 sprintf(str, "%s", tstr); 00342 } 00343 } 00344