| --- _Gnuplot.py.orig 2003-10-17 16:28:10.000000000 +0200 |
| +++ _Gnuplot.py 2004-10-28 14:39:20.000000000 +0200 |
| @@ -18,6 +18,27 @@ |
| |
| 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: |
| """A file to which gnuplot commands can be written. |
| @@ -152,7 +173,7 @@ |
| '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. By default, this starts a gnuplot |
| @@ -172,8 +193,19 @@ |
| 'debug=1' -- echo the gnuplot commands to stderr as well as |
| 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: |
| self.gnuplot = gp.GnuplotProcess(persist=persist) |
| else: |
| @@ -182,10 +214,14 @@ |
| 'Gnuplot with output to file does not allow ' |
| 'persist option.') |
| self.gnuplot = _GnuplotFile(filename) |
| + |
| self._clear_queue() |
| self.debug = debug |
| 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): |
| """Send a command string to gnuplot. |