summaryrefslogtreecommitdiff
blob: 2eaf6ae379ed61136c84744a64e1a87768faba24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
--- _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.