Source code for nxpy.wx.interpreter

# nxpy.wx package ------------------------------------------------------------

# Copyright Nicola Musatti 2008 - 2014
# Use, modification, and distribution are subject to the Boost Software
# License, Version 1.0. (See accompanying file LICENSE.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

# See http://nxpy.sourceforge.net for library home page. ---------------------

r"""
Interactive program driver - wxPython version.

An alternative implementation of *command.interpreter.Interpreter* for use with wxPython 
applications, as the default one is not compatible with wxPython's application loop.

"""

from __future__ import absolute_import

import wx

import nxpy.command.interpreter


[docs]class Popen(object): r"""A simple wxPython based, Popen-like object."""
[docs] def __init__(self, cmd): self.process = wx.Process(None) self.process.Redirect(); wx.Execute(cmd, wx.EXEC_ASYNC, self.process)
[docs] def send(self, data): self.process.GetOutputStream().write(data)
[docs] def recv(self): stream = self.process.GetInputStream() if stream.CanRead(): return stream.read() return ""
[docs] def recv_err(self): stream = self.process.GetErrorStream() if stream.CanRead(): return stream.read() return ""
[docs]class Interpreter(nxpy.command.interpreter.BaseInterpreter): r"""A command interpreter suitable for use in wxPython based applications."""
[docs] def __init__(self, cmd): super(Interpreter, self).__init__(Popen(cmd))