def _mainloop(self): evloop = getEventLoop() evloop.idle() for event in pygame.event.get(): # kill application (SIG_TERM) if event.type == pygame.QUIT: evloop.quit = True self.close() # mouse move elif event.type == pygame.MOUSEMOTION: # don't dispatch motion if no button are pressed if event.buttons == (0, 0, 0): continue x, y = event.pos self.dispatch_event('on_mouse_move', x, y, self.modifiers) # mouse action elif event.type in (pygame.MOUSEBUTTONDOWN, pygame.MOUSEBUTTONUP): self._pygame_update_modifiers() x, y = event.pos btn = 'left' if event.button == 3: btn = 'right' elif event.button == 2: btn = 'middle' eventname = 'on_mouse_down' if event.type == pygame.MOUSEBUTTONUP: eventname = 'on_mouse_up' self.dispatch_event(eventname, x, y, btn, self.modifiers) # keyboard action elif event.type in (pygame.KEYDOWN, pygame.KEYUP): self._pygame_update_modifiers(event.mod) # atm, don't handle keyup if event.type == pygame.KEYUP: self.dispatch_event('on_key_up', event.key, event.scancode) continue # don't dispatch more key if down event is accepted if self.dispatch_event('on_key_down', event.key, event.scancode, event.unicode): continue self.dispatch_event('on_keyboard', event.key, event.scancode, event.unicode) # video resize elif event.type == pygame.VIDEORESIZE: pass # ignored event elif event.type in (pygame.ACTIVEEVENT, pygame.VIDEOEXPOSE): pass # unhandled event ! else: pymt_logger.debug('WinPygame: Unhandled event %s' % str(event))
def _glut_redisplay(): evloop = getEventLoop() # hack, glut seem can't handle the leaving on the mainloop # so... leave with sys.exit() :[ try: evloop.idle() except KeyboardInterrupt: evloop.quit = True if evloop.quit: sys.exit(0) glutPostRedisplay()
def mainloop(self): # don't known why, but pygame required a resize event # for opengl, before mainloop... window reinit ? self.dispatch_event('on_resize', *self.size) evloop = getEventLoop() while not evloop.quit: try: self._mainloop() if not pygame.display.get_active(): pygame.time.wait(100) except BaseException, inst: # use exception manager first r = pymt_exception_manager.handle_exception(inst) if r == ExceptionManager.RAISE: stopTouchApp() raise else: pass