--- _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.
