コード例 #1
0
ファイル: shell.py プロジェクト: geocam/geocamPycroraptor2
def inputhook_gevent():
    try:
        while not stdin_ready():
            gevent.sleep(0.05)
    except KeyboardInterrupt:
        pass
    return 0
コード例 #2
0
ファイル: shell.py プロジェクト: geocam/geocamPycroraptor2
def inputhook_gevent():
    try:
        while not stdin_ready():
            gevent.sleep(0.05)
    except KeyboardInterrupt:
        pass
    return 0
コード例 #3
0
def inputhook_wx3():
    """Run the wx event loop by processing pending events only.

    This is like inputhook_wx1, but it keeps processing pending events
    until stdin is ready.  After processing all pending events, a call to
    time.sleep is inserted.  This is needed, otherwise, CPU usage is at 100%.
    This sleep time should be tuned though for best performance.
    """
    # We need to protect against a user pressing Control-C when IPython is
    # idle and this is running. We trap KeyboardInterrupt and pass.
    try:
        app = wx.GetApp()
        if app is not None:
            assert wx.Thread_IsMain()

            # The import of wx on Linux sets the handler for signal.SIGINT
            # to 0.  This is a bug in wx or gtk.  We fix by just setting it
            # back to the Python default.
            if not isinstance(signal.getsignal(signal.SIGINT),
                              collections.Callable):
                signal.signal(signal.SIGINT, signal.default_int_handler)

            evtloop = wx.EventLoop()
            ea = wx.EventLoopActivator(evtloop)
            t = clock()
            while not stdin_ready():
                while evtloop.Pending():
                    t = clock()
                    evtloop.Dispatch()
                app.ProcessIdle()
                # We need to sleep at this point to keep the idle CPU load
                # low.  However, if sleep to long, GUI response is poor.  As
                # a compromise, we watch how often GUI events are being processed
                # and switch between a short and long sleep time.  Here are some
                # stats useful in helping to tune this.
                # time    CPU load
                # 0.001   13%
                # 0.005   3%
                # 0.01    1.5%
                # 0.05    0.5%
                used_time = clock() - t
                if used_time > 5 * 60.0:
                    # print 'Sleep for 5 s'  # dbg
                    time.sleep(5.0)
                elif used_time > 10.0:
                    # print 'Sleep for 1 s'  # dbg
                    time.sleep(1.0)
                elif used_time > 0.1:
                    # Few GUI events coming in, so we can sleep longer
                    # print 'Sleep for 0.05 s'  # dbg
                    time.sleep(0.05)
                else:
                    # Many GUI events coming in, so sleep only very little
                    time.sleep(0.001)
            del ea
    except KeyboardInterrupt:
        pass
    return 0
コード例 #4
0
ファイル: inputhookwx.py プロジェクト: cournape/ipython
def inputhook_wx3():
    """Run the wx event loop by processing pending events only.

    This is like inputhook_wx1, but it keeps processing pending events
    until stdin is ready.  After processing all pending events, a call to
    time.sleep is inserted.  This is needed, otherwise, CPU usage is at 100%.
    This sleep time should be tuned though for best performance.
    """
    # We need to protect against a user pressing Control-C when IPython is
    # idle and this is running. We trap KeyboardInterrupt and pass.
    try:
        app = wx.GetApp()
        if app is not None:
            assert wx.Thread_IsMain()

            # The import of wx on Linux sets the handler for signal.SIGINT
            # to 0.  This is a bug in wx or gtk.  We fix by just setting it
            # back to the Python default.
            if not callable(signal.getsignal(signal.SIGINT)):
                signal.signal(signal.SIGINT, signal.default_int_handler)

            evtloop = wx.EventLoop()
            ea = wx.EventLoopActivator(evtloop)
            t = clock()
            while not stdin_ready():
                while evtloop.Pending():
                    t = clock()
                    evtloop.Dispatch()
                app.ProcessIdle()
                # We need to sleep at this point to keep the idle CPU load
                # low.  However, if sleep to long, GUI response is poor.  As
                # a compromise, we watch how often GUI events are being processed
                # and switch between a short and long sleep time.  Here are some
                # stats useful in helping to tune this.
                # time    CPU load
                # 0.001   13%
                # 0.005   3%
                # 0.01    1.5%
                # 0.05    0.5%
                used_time = clock() - t
                if used_time > 5*60.0:
                    # print 'Sleep for 5 s'  # dbg
                    time.sleep(5.0)
                elif used_time > 10.0:
                    # print 'Sleep for 1 s'  # dbg
                    time.sleep(1.0)
                elif used_time > 0.1:
                    # Few GUI events coming in, so we can sleep longer
                    # print 'Sleep for 0.05 s'  # dbg
                    time.sleep(0.05)
                else:
                    # Many GUI events coming in, so sleep only very little
                    time.sleep(0.001)
            del ea
    except KeyboardInterrupt:
        pass
    return 0
コード例 #5
0
 def inputhook_pygame(self):
     self.clock.tick(
         self.hz
     )  #if we broke out of the loop, ensure loop doesn't start back up too soon
     while True:
         self.callback()
         if stdin_ready():
             break
         else:
             self.clock.tick(self.hz)
     return 0
コード例 #6
0
ファイル: inputhookqt4.py プロジェクト: g2p/ipython
    def inputhook_qt4():
        """PyOS_InputHook python hook for Qt4.

        Process pending Qt events and if there's no pending keyboard
        input, spend a short slice of time (50ms) running the Qt event
        loop.

        As a Python ctypes callback can't raise an exception, we catch
        the KeyboardInterrupt and temporarily deactivate the hook,
        which will let a *second* CTRL+C be processed normally and go
        back to a clean prompt line.
        """
        try:
            allow_CTRL_C()
            app = QtCore.QCoreApplication.instance()
            if not app:  # shouldn't happen, but safer if it happens anyway...
                return 0
            app.processEvents(QtCore.QEventLoop.AllEvents, 300)
            if not stdin_ready():
                timer = QtCore.QTimer()
                timer.timeout.connect(app.quit)
                while not stdin_ready():
                    timer.start(50)
                    app.exec_()
                    timer.stop()
            ignore_CTRL_C()
        except KeyboardInterrupt:
            ignore_CTRL_C()
            got_kbdint[0] = True
            print("\nKeyboardInterrupt - qt4 event loop interrupted!"
                  "\n  * hit CTRL+C again to clear the prompt"
                  "\n  * use '%gui none' to disable the event loop"
                  " permanently"
                  "\n    and '%gui qt4' to re-enable it later")
            mgr.clear_inputhook()
        except:  # NO exceptions are allowed to escape from a ctypes callback
            mgr.clear_inputhook()
            from traceback import print_exc
            print_exc()
            print("Got exception from inputhook_qt4, unregistering.")
        return 0
コード例 #7
0
ファイル: inputhookqt4.py プロジェクト: cboos/ipython
    def inputhook_qt4():
        """PyOS_InputHook python hook for Qt4.

        Process pending Qt events and if there's no pending keyboard
        input, spend a short slice of time (50ms) running the Qt event
        loop.

        As a Python ctypes callback can't raise an exception, we catch
        the KeyboardInterrupt and temporarily deactivate the hook,
        which will let a *second* CTRL+C be processed normally and go
        back to a clean prompt line.
        """
        try:
            allow_CTRL_C()
            app = QtCore.QCoreApplication.instance()
            if not app: # shouldn't happen, but safer if it happens anyway...
                return 0
            app.processEvents(QtCore.QEventLoop.AllEvents, 300)
            if not stdin_ready():
                timer = QtCore.QTimer()
                timer.timeout.connect(app.quit)
                while not stdin_ready():
                    timer.start(50)
                    app.exec_()
                    timer.stop()
            ignore_CTRL_C()
        except KeyboardInterrupt:
            ignore_CTRL_C()
            got_kbdint[0] = True
            print("\nKeyboardInterrupt - qt4 event loop interrupted!"
                  "\n  * hit CTRL+C again to clear the prompt"
                  "\n  * use '%gui none' to disable the event loop"
                  " permanently"
                  "\n    and '%gui qt4' to re-enable it later")
            mgr.clear_inputhook()
        except: # NO exceptions are allowed to escape from a ctypes callback
            mgr.clear_inputhook()
            from traceback import print_exc
            print_exc()
            print("Got exception from inputhook_qt4, unregistering.")
        return 0
コード例 #8
0
    def inputhook_kivy(self=None):
        try:
            while not stdin_ready() and not EventLoop.quit:
                try:
                    EventLoop.window._mainloop()
                except Exception as e:
                    print(e)

        except KeyboardInterrupt:
            print("???")

        return 0
コード例 #9
0
ファイル: helpers.py プロジェクト: DarkArtek/stuff
    def inputhook_kivy(self = None):
        try:
            while not stdin_ready() and not EventLoop.quit:
                try:
                    EventLoop.window._mainloop()
                except Exception as e:
                    print(e)

        except KeyboardInterrupt:
            print("???")

        return 0
コード例 #10
0
ファイル: ipython.py プロジェクト: NexeyaSGara/hapPyTango
 def inputhook_gevent():
     """PyOS_InputHook python hook for Gevent.
     """
     try:
         ignore_CTRL_C()
         gevent.sleep(0.01)
         while not stdin_ready():
             gevent.sleep(0.05)
     except:
         ignore_CTRL_C()
         from traceback import print_exc
         print_exc()
     finally:
         allow_CTRL_C()
     return 0
コード例 #11
0
ファイル: ipython.py プロジェクト: mguijarr/hapPyTango
 def inputhook_gevent():
     """PyOS_InputHook python hook for Gevent.
     """
     try:
         ignore_CTRL_C()
         gevent.sleep(0.01)
         while not stdin_ready():
             gevent.sleep(0.05)
     except:
         ignore_CTRL_C()
         from traceback import print_exc
         print_exc()
     finally:
         allow_CTRL_C()
     return 0
コード例 #12
0
ファイル: hook.py プロジェクト: ElricleNecro/LISA
        def _dealEvents(self):
            allow_CTRL_C()
            while not stdin_ready():
                start = s.SDL_GetTicks()

                self._ev.update()

                if len(self._windowList) != 0:
                    if self._ev.id in self._windowList:
                        self._windowList[self._ev.id].events(self._ev)

                for win in self._windowList.values():
                    win.draw()

                stop = s.SDL_GetTicks()
                duree = (stop - start)
                if duree < self._framerate:
                    s.SDL_Delay(self._framerate - duree)
コード例 #13
0
ファイル: console.py プロジェクト: hackaugusto/raiden
def inputhook_gevent():
    while not stdin_ready():
        gevent.sleep(0.05)
    return 0
コード例 #14
0
ファイル: inputhookqt4.py プロジェクト: terrdavis/ipython
    def inputhook_qt4():
        """PyOS_InputHook python hook for Qt4.

        Process pending Qt events and if there's no pending keyboard
        input, spend a short slice of time (50ms) running the Qt event
        loop.

        As a Python ctypes callback can't raise an exception, we catch
        the KeyboardInterrupt and temporarily deactivate the hook,
        which will let a *second* CTRL+C be processed normally and go
        back to a clean prompt line.
        """
        try:
            allow_CTRL_C()
            app = QtCore.QCoreApplication.instance()
            if not app:  # shouldn't happen, but safer if it happens anyway...
                return 0
            app.processEvents(QtCore.QEventLoop.AllEvents, 300)
            if not stdin_ready():
                # Generally a program would run QCoreApplication::exec()
                # from main() to enter and process the Qt event loop until
                # quit() or exit() is called and the program terminates.
                #
                # For our input hook integration, we need to repeatedly
                # enter and process the Qt event loop for only a short
                # amount of time (say 50ms) to ensure that Python stays
                # responsive to other user inputs.
                #
                # A naive approach would be to repeatedly call
                # QCoreApplication::exec(), using a timer to quit after a
                # short amount of time. Unfortunately, QCoreApplication
                # emits an aboutToQuit signal before stopping, which has
                # the undesirable effect of closing all modal windows.
                #
                # To work around this problem, we instead create a
                # QEventLoop and call QEventLoop::exec(). Other than
                # setting some state variables which do not seem to be
                # used anywhere, the only thing QCoreApplication adds is
                # the aboutToQuit signal which is precisely what we are
                # trying to avoid.
                timer = QtCore.QTimer()
                event_loop = QtCore.QEventLoop()
                timer.timeout.connect(event_loop.quit)
                while not stdin_ready():
                    timer.start(50)
                    event_loop.exec_()
                    timer.stop()
        except KeyboardInterrupt:
            global got_kbdint, sigint_timer

            ignore_CTRL_C()
            got_kbdint = True
            mgr.clear_inputhook()

            # This generates a second SIGINT so the user doesn't have to
            # press CTRL+C twice to get a clean prompt.
            #
            # Since we can't catch the resulting KeyboardInterrupt here
            # (because this is a ctypes callback), we use a timer to
            # generate the SIGINT after we leave this callback.
            #
            # Unfortunately this doesn't work on Windows (SIGINT kills
            # Python and CTRL_C_EVENT doesn't work).
            if os.name == "posix":
                pid = os.getpid()
                if not sigint_timer:
                    sigint_timer = threading.Timer(
                        0.01, os.kill, args=[pid, signal.SIGINT]
                    )
                    sigint_timer.start()
            else:
                print("\nKeyboardInterrupt - Ctrl-C again for new prompt")

        except:  # NO exceptions are allowed to escape from a ctypes callback
            ignore_CTRL_C()
            from traceback import print_exc

            print_exc()
            print("Got exception from inputhook_qt4, unregistering.")
            mgr.clear_inputhook()
        finally:
            allow_CTRL_C()
        return 0
コード例 #15
0
 def check_stdin(self):
     if stdin_ready():
         self.timer.Stop()
         self.evtloop.Exit()
コード例 #16
0
ファイル: console.py プロジェクト: valkwarble/raiden
def inputhook_gevent():
    while not stdin_ready():
        gevent.sleep(0.05)
    return 0
コード例 #17
0
 def check_stdin(self):
     if stdin_ready():
         self.timer.Stop()
         self.evtloop.Exit()
コード例 #18
0
ファイル: ipython_config.py プロジェクト: SoonSYJ/pymote2.0
    def inputhook_qt4():
        """PyOS_InputHook python hook for Qt4.

        Process pending Qt events and if there's no pending keyboard
        input, spend a short slice of time (50ms) running the Qt event
        loop.

        As a Python ctypes callback can't raise an exception, we catch
        the KeyboardInterrupt and temporarily deactivate the hook,
        which will let a *second* CTRL+C be processed normally and go
        back to a clean prompt line.
        """
        try:
            allow_CTRL_C()
            app = QtCore.QCoreApplication.instance()
            if not app:  # shouldn't happen, but safer if it happens anyway...
                return 0
            app.processEvents(QtCore.QEventLoop.AllEvents, 300)
            if not stdin_ready():
                # Generally a program would run QCoreApplication::exec()
                # from main() to enter and process the Qt event loop until
                # quit() or exit() is called and the program terminates.
                #
                # For our input hook integration, we need to repeatedly
                # enter and process the Qt event loop for only a short
                # amount of time (say 50ms) to ensure that Python stays
                # responsive to other user inputs.
                #
                # A naive approach would be to repeatedly call
                # QCoreApplication::exec(), using a timer to quit after a
                # short amount of time. Unfortunately, QCoreApplication
                # emits an aboutToQuit signal before stopping, which has
                # the undesirable effect of closing all modal windows.
                #
                # To work around this problem, we instead create a
                # QEventLoop and call QEventLoop::exec(). Other than
                # setting some state variables which do not seem to be
                # used anywhere, the only thing QCoreApplication adds is
                # the aboutToQuit signal which is precisely what we are
                # trying to avoid.
                timer = QtCore.QTimer()
                event_loop = QtCore.QEventLoop()
                timer.timeout.connect(event_loop.quit)
                while not stdin_ready():
                    timer.start(50)
                    event_loop.exec_()
                    timer.stop()
        except KeyboardInterrupt:
            ignore_CTRL_C()
            got_kbdint[0] = True
            print("\nKeyboardInterrupt - Ctrl-C again for new prompt")
            mgr.clear_inputhook()
        except:  # NO exceptions are allowed to escape from a ctypes callback
            ignore_CTRL_C()
            from traceback import print_exc
            print_exc()
            print("Got exception from inputhook_qt4, unregistering.")
            mgr.clear_inputhook()
        finally:
            allow_CTRL_C()
        return 0
コード例 #19
0
 def bearlibterminal_inputhook():
     has_input()
     while not inputhook.stdin_ready():
         delay(5)
     return 0
コード例 #20
0
		def bearlibterminal_inputhook():
			has_input()
			while not inputhook.stdin_ready():
				delay(5)
			return 0