/*! \fn wcurses::Application::ProcessEvent(Event* E) */ void Application::ProcessEvent ( Event* E ) { Event::EVT e; // Debug; switch ( E->Type() ) { case event::KeyEvent: e.K = E->toEventType<KeyPressEvent>(); keyPressCaptured_ ( e.K ); Dbg << "Key event"; ProcessKeyEvent ( e.K ); break; case event::MouseEvent: e.M = E->toEventType<MouseEvent>(); mouseCaptured_ ( e.M ); Dbg << "Mouse event..."; ProcessMouseEvent ( e.M ); break; case event::MessageEvent: e.G = E->toEventType<MessageEvent>(); messageListeners_ ( e.G ); Dbg << "Message..."; break; } DEND; }
void ProcessInputEvent (const SDL_Event *Event) { if (!InputInitialized) return; ProcessMouseEvent (Event); // In character mode with NumLock on, numpad chars bypass VControl // so that menu arrow events are not produced if (!is_numpad_char_event (Event)) VControl_HandleEvent (Event); if (Event->type == SDL_KEYDOWN || Event->type == SDL_KEYUP) { // process character input event, if any // keysym.sym is an SDLKey type which is an enum and can be signed // or unsigned on different platforms; we'll use a guaranteed type int k = Event->key.keysym.sym; UniChar map_key = Event->key.keysym.unicode; if (k < 0 || k > num_keys) k = num_keys; // for unknown keys if (Event->type == SDL_KEYDOWN) { int newtail; // dont care about the non-printable, non-char if (!map_key) return; kbdstate[k]++; newtail = (kbdtail + 1) & (KBDBUFSIZE - 1); // ignore the char if the buffer is full if (newtail != kbdhead) { kbdbuf[kbdtail] = map_key; kbdtail = newtail; lastchar = map_key; menu_vec[KEY_MENU_ANY]++; } } else if (Event->type == SDL_KEYUP) { if (kbdstate[k] == 0) { // something is fishy -- better to reset the // repeatable state to avoid big problems menu_vec[KEY_MENU_ANY] = 0; } else { kbdstate[k]--; if (menu_vec[KEY_MENU_ANY] > 0) menu_vec[KEY_MENU_ANY]--; } } } }
bool CDialog::OnSystemEvent(const EventData& event) { switch (event.m_nEventType) { case EVT_BUTTON: { if (ProcessButtonEvent(event)) { ActionOnButtonEvent(event); return true; } break; } case EVT_MOUSE: { if (ProcessMouseEvent(event)) { ActionOnMouseEvent(event); return true; } break; } case EVT_RESIZE: { if (ProcessResizeEvent(event)) { //Do nothing } break; } default: break; } //switch (event.m_nEventType) for (auto iter = m_children.begin(); iter != m_children.end(); ++iter) { if ((*iter)->OnSystemEvent(event)) return true; } return false; }
void SDLApplication::HandleEvent (SDL_Event* event) { switch (event->type) { case SDL_USEREVENT: currentUpdate = SDL_GetTicks (); updateEvent.deltaTime = currentUpdate - lastUpdate; lastUpdate = currentUpdate; while (nextUpdate <= currentUpdate) { nextUpdate += framePeriod; } UpdateEvent::Dispatch (&updateEvent); RenderEvent::Dispatch (&renderEvent); break; case SDL_APP_WILLENTERBACKGROUND: windowEvent.type = WINDOW_DEACTIVATE; WindowEvent::Dispatch (&windowEvent); break; case SDL_APP_WILLENTERFOREGROUND: windowEvent.type = WINDOW_ACTIVATE; WindowEvent::Dispatch (&windowEvent); break; case SDL_CONTROLLERAXISMOTION: case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONUP: case SDL_CONTROLLERDEVICEADDED: case SDL_CONTROLLERDEVICEREMOVED: ProcessGamepadEvent (event); break; case SDL_FINGERMOTION: case SDL_FINGERDOWN: case SDL_FINGERUP: ProcessTouchEvent (event); break; case SDL_JOYAXISMOTION: case SDL_JOYBALLMOTION: case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: case SDL_JOYHATMOTION: case SDL_JOYDEVICEADDED: case SDL_JOYDEVICEREMOVED: //joy break; case SDL_KEYDOWN: case SDL_KEYUP: ProcessKeyEvent (event); break; case SDL_MOUSEMOTION: case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: case SDL_MOUSEWHEEL: ProcessMouseEvent (event); break; case SDL_TEXTINPUT: case SDL_TEXTEDITING: ProcessTextEvent (event); break; case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_ENTER: case SDL_WINDOWEVENT_LEAVE: case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_HIDDEN: case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_FOCUS_LOST: case SDL_WINDOWEVENT_MINIMIZED: case SDL_WINDOWEVENT_MOVED: case SDL_WINDOWEVENT_RESTORED: ProcessWindowEvent (event); break; case SDL_WINDOWEVENT_EXPOSED: RenderEvent::Dispatch (&renderEvent); break; case SDL_WINDOWEVENT_SIZE_CHANGED: ProcessWindowEvent (event); RenderEvent::Dispatch (&renderEvent); break; case SDL_WINDOWEVENT_CLOSE: ProcessWindowEvent (event); active = false; break; } break; case SDL_QUIT: //quit active = false; break; } }
void SDLApplication::HandleEvent (SDL_Event* event) { switch (event->type) { case SDL_USEREVENT: currentUpdate = SDL_GetTicks (); applicationEvent.type = UPDATE; applicationEvent.deltaTime = currentUpdate - lastUpdate; lastUpdate = currentUpdate; nextUpdate += framePeriod; while (nextUpdate <= currentUpdate) { nextUpdate += framePeriod; } ApplicationEvent::Dispatch (&applicationEvent); RenderEvent::Dispatch (&renderEvent); break; case SDL_APP_WILLENTERBACKGROUND: windowEvent.type = WINDOW_DEACTIVATE; WindowEvent::Dispatch (&windowEvent); break; case SDL_APP_WILLENTERFOREGROUND: windowEvent.type = WINDOW_ACTIVATE; WindowEvent::Dispatch (&windowEvent); break; case SDL_CONTROLLERAXISMOTION: case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONUP: case SDL_CONTROLLERDEVICEADDED: case SDL_CONTROLLERDEVICEREMOVED: ProcessGamepadEvent (event); break; case SDL_DROPFILE: ProcessDropEvent (event); break; case SDL_FINGERMOTION: case SDL_FINGERDOWN: case SDL_FINGERUP: #ifndef HX_MACOS ProcessTouchEvent (event); #endif break; case SDL_JOYAXISMOTION: if (SDLJoystick::IsAccelerometer (event->jaxis.which)) { ProcessSensorEvent (event); } else { ProcessJoystickEvent (event); } break; case SDL_JOYBALLMOTION: case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: case SDL_JOYHATMOTION: case SDL_JOYDEVICEADDED: case SDL_JOYDEVICEREMOVED: ProcessJoystickEvent (event); break; case SDL_KEYDOWN: case SDL_KEYUP: ProcessKeyEvent (event); break; case SDL_MOUSEMOTION: case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: case SDL_MOUSEWHEEL: ProcessMouseEvent (event); break; case SDL_TEXTINPUT: case SDL_TEXTEDITING: ProcessTextEvent (event); break; case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_ENTER: case SDL_WINDOWEVENT_LEAVE: case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_HIDDEN: case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_FOCUS_LOST: case SDL_WINDOWEVENT_MINIMIZED: case SDL_WINDOWEVENT_MOVED: case SDL_WINDOWEVENT_RESTORED: ProcessWindowEvent (event); break; case SDL_WINDOWEVENT_EXPOSED: RenderEvent::Dispatch (&renderEvent); break; case SDL_WINDOWEVENT_SIZE_CHANGED: ProcessWindowEvent (event); RenderEvent::Dispatch (&renderEvent); break; case SDL_WINDOWEVENT_CLOSE: ProcessWindowEvent (event); break; } break; case SDL_QUIT: active = false; break; } }
void SDLApplication::HandleEvent (SDL_Event* event) { switch (event->type) { case SDL_USEREVENT: currentUpdate = SDL_GetTicks (); updateEvent.deltaTime = currentUpdate - lastUpdate; lastUpdate = currentUpdate; while (nextUpdate <= currentUpdate) { nextUpdate += framePeriod; } UpdateEvent::Dispatch (&updateEvent); RenderEvent::Dispatch (&renderEvent); break; case SDL_JOYAXISMOTION: case SDL_JOYBALLMOTION: case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: case SDL_JOYHATMOTION: case SDL_JOYDEVICEADDED: case SDL_JOYDEVICEREMOVED: //joy break; case SDL_KEYDOWN: case SDL_KEYUP: ProcessKeyEvent (event); break; case SDL_MOUSEMOTION: case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: case SDL_MOUSEWHEEL: ProcessMouseEvent (event); break; case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_HIDDEN: case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_FOCUS_LOST: case SDL_WINDOWEVENT_MOVED: ProcessWindowEvent (event); break; case SDL_WINDOWEVENT_EXPOSED: RenderEvent::Dispatch (&renderEvent); break; case SDL_WINDOWEVENT_SIZE_CHANGED: ProcessWindowEvent (event); RenderEvent::Dispatch (&renderEvent); break; case SDL_WINDOWEVENT_CLOSE: ProcessWindowEvent (event); active = false; break; } break; case SDL_QUIT: //quit active = false; break; } }
void main( int argc, char** argv) { //struct Position Pos; int Ix; strcpy( ConfigFile, "config.dat"); Parity = NoneParity; DataBits = 8; StopBits = 1; CalledByGuideFlag = No; KeepGoingFlag = No; ReadSlewFlag = No; StartScrollFlag = No; /* if '-k' and '-s' (after full init): slew to Ra, Dec in slew.dat and keep going, exiting when desired, writing slew_out.dat file; if '-k' (before full init): (no slew.dat), keep going until centered on init position, write slew_out.dat file and exit; if '-s': slew to Ra, Dec in slew.dat and exit, writing slew_out.dat file; if no '-k' and no '-s': write slew_out.dat file and exit; if -c, then use following string as configuration file name, ie scope.exe -c config.dat will result in config.dat being used if -x, then use following string as scroll file name, and execute scroll file upon program startup, ie scope.exe -x nan.scr will cause nan.scr to be loaded and started */ /* argv[0] is name of executing program */ for( Ix = 1; Ix < argc; Ix++) if( argv[Ix][0] == '-') if( strcmpi( &argv[Ix][1], "GUIDE") == 0) CalledByGuideFlag = Yes; else if( argv[Ix][1] == 'k') KeepGoingFlag = Yes; else if( argv[Ix][1] == 's') ReadSlewFlag = Yes; else if( (argv[Ix][1] == 'c' || argv[Ix][1] == 'C') && Ix < argc-1) strcpy( ConfigFile, argv[Ix+1]); else if( (argv[Ix][1] == 'x' || argv[Ix][1] == 'X') && Ix < argc-1) { strcpy( ScrollFilename, argv[Ix+1]); StartScrollFlag = Yes; } InitCommonVars(); ReadConfig(); /* Pos.Ra = Pos.Dec = 0; applyCorrectionsFromDataFileCoordYearToEpochNow(&Pos); printf("\n%f %f %f %f %f %f %f %f", Pos.Precession.A*RadToArcsec, Pos.Precession.Z*RadToArcsec, Pos.Nutation.A*RadToArcsec, Pos.Nutation.Z*RadToArcsec, Pos.AnnualAberration.A*RadToArcsec, Pos.AnnualAberration.Z*RadToArcsec, Pos.Ra*RadToArcsec, Pos.Dec*RadToArcsec); ContMsgRoutine(); */ /* HsRecFile = fopen( HsRecFilename, "w"); if( HsRecFile == NULL) BadExit( strcat( "Could not create ", HsRecFilename)); HsRecIx = 0; */ /* InitTimes( DisplayOpeningMsgs, Tz, DST, LongitudeDeg); InitConvert(); TestConvert(); getch(); TestAltAltAzTrack(); */ if( DisplayOpeningMsgs) { printf( "\nCopyright BBAstroDesigns Inc. 2009\n"); printf( "\nLIMITED WARRANTY This software is provided ``as is'' and any express or"); printf( "\nimplied warranties, including, but not limited to, the implied warranties"); printf( "\nof merchantability and fitness for a particular purpose are disclaimed."); printf( "\nIn no event shall BBAstroDesigns be liable for any direct, indirect,"); printf( "\nincidental, special, exemplary, nor consequential damages (including, but"); printf( "\nnot limited to, procurement of substitute goods or services, loss of use,"); printf( "\ndate, or profits, or business interruption) however caused and on any"); printf( "\ntheory of liability, whether in contract, strict liability, or tort"); printf( "\n(including negligence or otherwise) arising in any way out of the use of"); printf( "\nthis software, even if advised of the possibility of such damage.\n"); printf( "\nThis software licensed under the GNU GENERAL PUBLIC LICENSE. You may"); printf( "\ndistribute this software per the GNU GPL. See the enclosed gpl.txt.\n\n"); ContMsgRoutine(); } if( DisplayOpeningMsgs) printf( "\ncalled by guide: %d, keep_going: %d, read slew.dat file %d", CalledByGuideFlag, KeepGoingFlag, ReadSlewFlag); /* if( strcmpi( TestString, "TestSerial") == 0) { InitSerial( EncoderComPort, EncoderBaudRate, Parity, DataBits, StopBits); TestSerial( EncoderComPort); CloseSerial( EncoderComPort); } */ /* else if( strcmpi( TestString, "TestVideo") == 0) { InitVideo( DisplayOpeningMsgs); TestVideo(); } */ /* else if( strcmpi( TestString, "TestATimes") == 0) { InitTimes( DisplayOpeningMsgs, Tz, DST, LongitudeDeg); TestTimes(); } */ /* else if( strcmpi( TestString, "TestParallelPort") == 0) { InitPPort(); TestPPort(); ClosePPort(); } */ /* else if( strcmpi( TestString, "TestRefract") == 0) { InitRefract(); TestRefract(); } */ /* else if( strcmpi( TestString, "TestMouse") == 0) { TestMouse(); } */ /* else if( strcmpi( TestString, "TestEncoders") == 0) { InitSerial( EncoderComPort, EncoderBaudRate, Parity, DataBits, StopBits); InitEncoders(); TestEncoders(); CloseSerial( EncoderComPort); } */ /* else if( strcmpi( TestString, "TestHandpad") == 0) { InitPPort(); InitializeHandpad(); TestHandpad(); ClosePPort(); } */ /* else if( strcmpi( TestString, "TestConversion") == 0) { InitTimes( DisplayOpeningMsgs, Tz, DST, LongitudeDeg); InitConvert(); TestConvert(); } */ /* else if( strcmpi( TestString, "TestAltOffset") == 0) { InitTimes( DisplayOpeningMsgs, Tz, DST, LongitudeDeg); InitConvert(); TestAltOffset(); } */ /* else if( strcmpi( TestString, "TestIACA") == 0) { InitTimes( DisplayOpeningMsgs, Tz, DST, LongitudeDeg); TestIACA(); InitIACA(); } */ /* else if( strcmpi( TestString, "WritePWMValues") == 0) { InitTimes( DisplayOpeningMsgs, Tz, DST, LongitudeDeg); InitVideo( DisplayOpeningMsgs); InitPPort(); InitMotors(); WritePWMValues(); CloseSteppers(); ClosePPort(); } else */ { if( strcmpi( TestString, "NoTest") != 0 && strcmpi( TestString, "PreloadGuidexx.dat") != 0 && strcmpi( TestString, "Track") != 0) { if( DisplayOpeningMsgs) printf( "\nsetting unrecognized TestString to 'NoTest'"); strcpy( TestString, "NoTest"); } InitSerial( EncoderComPort, EncoderBaudRate, Parity, DataBits, StopBits); InitEncoders(); InitMouseControl(); InitTimes( DisplayOpeningMsgs, Tz, DST, LongitudeDeg); InitVideo( DisplayOpeningMsgs); InitPPort(); InitializeHandpad(); InitMotors(); InitConvert(); InitRefract(); InitPEC(); InitGuide(); if( strcmpi( TestString, "PreloadGuidexx.dat") == 0) { LoadGuideAlts(); LoadGuideAzs(); } InitIACA(); InitLX200Input(); InitHPEvent(); if( !CalledByGuideFlag || (CalledByGuideFlag && (KeepGoingFlag || ReadSlewFlag))) { InitKBEvent(); if( ReadSlewFlag) InputEquatSlewDat(); if( StartScrollFlag) LoadScrollFileFromFile(); if( strcmpi( TestString, "Track") == 0) Start2MotorTrackWithDefaultValues(); while( !QuitFlag) { SequentialTaskController(); /* GrandTourFlag used to flag next object: set in ProcessHPEventsModeSwitch() */ if( GrandTourLoaded && GrandTourFlag) ProcessGrandTour(); else if( ScrollLoaded && ScrollFlag) ProcessScroll(); else if( HPPolarAlignLoaded && HPPolarAlignFlag) ProcessHPPolarAlign(); else { if( UseMouseFlag && ProcessMouseEvent()) ; else if( KeyStroke) ProcessKBEvents(); else ProcessHPEvents(); } } CloseKBEvent(); if( DisplayOpeningMsgs) { AskAndWriteConfig(); WriteLogFile(); } } CloseSteppers(); ClosePPort(); CloseEncoderResetLogFile(); CloseSerial( EncoderComPort); CloseSerial( LX200ComPort); if( CalledByGuideFlag) WriteAltazSlewOutFile(); CloseMouseControl(); } /* for( Ix = 0; Ix < HsRecSize; Ix++) fprintf( HsRecFile, "%8ld %8ld\n", HsRec[Ix].A, HsRec[Ix].Z); // first position is index 0 fprintf( HsRecFile, " last entry in circular queue at position %d", HsRecIx); fclose( HsRecFile); */ }