|
|
| |
import gp, PlotItems, termdefs | import gp, PlotItems, termdefs |
| |
|
def test_mouse(): |
|
"""Return whether mouse support is present or not. |
|
|
|
The detection is done by calling gnuplot with a file containing only the |
|
"set mouse" command. If gnuplot does have mouse support, it should simply |
|
execute the file silently, producing no output.""" |
|
|
|
import os,tempfile,commands |
|
|
|
tmpname = tempfile.mktemp() |
|
tfile = open(tmpname,"w") |
|
tfile.write("set mouse") |
|
tfile.close() |
|
msg = commands.getoutput(gp.GnuplotOpts.gnuplot_command + " " + |
|
tmpname) |
|
os.unlink(tmpname) |
|
if msg: # Gnuplot won"t print anything if it has mouse support |
|
has_mouse = 0 |
|
else: |
|
has_mouse = 1 |
|
return has_mouse |
| |
class _GnuplotFile: | class _GnuplotFile: |
"""A file to which gnuplot commands can be written. | """A file to which gnuplot commands can be written. |
|
|
'output' : 'string', | 'output' : 'string', |
} | } |
| |
def __init__(self, filename=None, persist=None, debug=0): |
def __init__(self, filename=None, persist=None, debug=0, mouse=None): |
"""Create a Gnuplot object. | """Create a Gnuplot object. |
| |
Create a 'Gnuplot' object. By default, this starts a gnuplot | Create a 'Gnuplot' object. By default, this starts a gnuplot |
|
|
'debug=1' -- echo the gnuplot commands to stderr as well as | 'debug=1' -- echo the gnuplot commands to stderr as well as |
sending them to gnuplot. | sending them to gnuplot. |
| |
|
"mouse=1" -- activate mouse support (officially available as of |
|
gnuplot 4.0 under certain platforms). |
|
|
""" | """ |
| |
|
# The mouse check must be done first, so we can decide whether to use |
|
# inline data and fifos or not (they break mouse support) |
|
if mouse is None: |
|
mouse = test_mouse() |
|
if mouse: |
|
gp.GnuplotOpts.prefer_inline_data = 0 |
|
gp.GnuplotOpts.prefer_fifo_data = 0 |
|
|
if filename is None: | if filename is None: |
self.gnuplot = gp.GnuplotProcess(persist=persist) | self.gnuplot = gp.GnuplotProcess(persist=persist) |
else: | else: |
|
|
'Gnuplot with output to file does not allow ' | 'Gnuplot with output to file does not allow ' |
'persist option.') | 'persist option.') |
self.gnuplot = _GnuplotFile(filename) | self.gnuplot = _GnuplotFile(filename) |
|
|
self._clear_queue() | self._clear_queue() |
self.debug = debug | self.debug = debug |
self.plotcmd = 'plot' | self.plotcmd = 'plot' |
self('set terminal %s' % (gp.GnuplotOpts.default_term,)) |
# The "set mouse" command MUST be the VERY FIRST command passed to gnuplot |
|
if mouse: |
|
self("set mouse") |
|
self("set terminal %s" % gp.GnuplotOpts.default_term) |
| |
def __call__(self, s): | def __call__(self, s): |
"""Send a command string to gnuplot. | """Send a command string to gnuplot. |