source: sasview/_modules/sas/plottools/canvas.html @ a462c6a

gh-pages
Last change on this file since a462c6a was a462c6a, checked in by ajj, 9 years ago

Rebuild to fix index and modules docs

  • Property mode set to 100644
File size: 40.7 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>sas.plottools.canvas &mdash; SasView 3.0.0 documentation</title>
10   
11    <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../../../',
17        VERSION:     '3.0.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../../../_static/jquery.js"></script>
24    <script type="text/javascript" src="../../../_static/underscore.js"></script>
25    <script type="text/javascript" src="../../../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="SasView 3.0.0 documentation" href="../../../index.html" />
28    <link rel="up" title="Module code" href="../../index.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../../../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../../../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
41          <li><a href="../../index.html" accesskey="U">Module code</a> &raquo;</li> 
42      </ul>
43    </div> 
44
45    <div class="document">
46      <div class="documentwrapper">
47        <div class="bodywrapper">
48          <div class="body">
49           
50  <h1>Source code for sas.plottools.canvas</h1><div class="highlight"><pre>
51<span class="sd">&quot;&quot;&quot;</span>
52<span class="sd">This module implements a faster canvas for plotting.</span>
53<span class="sd">it ovewrites some matplolib methods to allow printing on sys.platform==&#39;win32&#39;</span>
54<span class="sd">&quot;&quot;&quot;</span>
55<span class="kn">import</span> <span class="nn">wx</span>
56<span class="kn">import</span> <span class="nn">sys</span>
57<span class="kn">from</span> <span class="nn">matplotlib.backends.backend_wxagg</span> <span class="kn">import</span> <span class="n">FigureCanvasWxAgg</span>
58<span class="kn">from</span> <span class="nn">matplotlib.backends.backend_wxagg</span> <span class="kn">import</span> <span class="n">_convert_agg_to_wx_bitmap</span>
59<span class="kn">from</span> <span class="nn">matplotlib.backends.backend_agg</span> <span class="kn">import</span> <span class="n">FigureCanvasAgg</span>
60<span class="kn">from</span> <span class="nn">matplotlib.backend_bases</span> <span class="kn">import</span> <span class="n">MouseEvent</span><span class="p">,</span> <span class="n">RendererBase</span>
61<span class="kn">from</span> <span class="nn">matplotlib.backends.backend_wx</span> <span class="kn">import</span> <span class="n">GraphicsContextWx</span><span class="p">,</span> <span class="n">PrintoutWx</span>
62<span class="kn">from</span> <span class="nn">matplotlib.backends.backend_wx</span> <span class="kn">import</span> <span class="n">RendererWx</span>
63
64
65<div class="viewcode-block" id="draw_image"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.draw_image">[docs]</a><span class="k">def</span> <span class="nf">draw_image</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">im</span><span class="p">,</span> <span class="n">bbox</span><span class="p">,</span> <span class="n">clippath</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">clippath_trans</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
66    <span class="sd">&quot;&quot;&quot;</span>
67<span class="sd">    Draw the image instance into the current axes;</span>
68
69<span class="sd">    :param x: is the distance in pixels from the left hand side of the canvas.</span>
70<span class="sd">    :param y: the distance from the origin.  That is, if origin is</span>
71<span class="sd">        upper, y is the distance from top.  If origin is lower, y</span>
72<span class="sd">        is the distance from bottom</span>
73<span class="sd">    :param im: the class`matplotlib._image.Image` instance</span>
74<span class="sd">    :param bbox: a class `matplotlib.transforms.Bbox` instance for clipping, or</span>
75<span class="sd">        None</span>
76
77<span class="sd">    &quot;&quot;&quot;</span>
78    <span class="k">pass</span>
79
80</div>
81<div class="viewcode-block" id="select"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.select">[docs]</a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
82    <span class="sd">&quot;&quot;&quot;</span>
83<span class="sd">    &quot;&quot;&quot;</span>
84    <span class="k">pass</span>
85
86</div>
87<div class="viewcode-block" id="unselect"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.unselect">[docs]</a><span class="k">def</span> <span class="nf">unselect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
88    <span class="sd">&quot;&quot;&quot;</span>
89<span class="sd">    &quot;&quot;&quot;</span>
90    <span class="k">pass</span>
91
92</div>
93<div class="viewcode-block" id="OnPrintPage"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.OnPrintPage">[docs]</a><span class="k">def</span> <span class="nf">OnPrintPage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">):</span>
94    <span class="sd">&quot;&quot;&quot;</span>
95<span class="sd">    override printPage of matplotlib</span>
96<span class="sd">    &quot;&quot;&quot;</span>
97    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
98    <span class="n">dc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetDC</span><span class="p">()</span>
99    <span class="k">try</span><span class="p">:</span>
100        <span class="p">(</span><span class="n">ppw</span><span class="p">,</span> <span class="n">pph</span><span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPPIPrinter</span><span class="p">()</span>      <span class="c"># printer&#39;s pixels per in</span>
101    <span class="k">except</span><span class="p">:</span>
102        <span class="n">ppw</span> <span class="o">=</span> <span class="mi">1</span>
103        <span class="n">pph</span> <span class="o">=</span> <span class="mi">1</span>
104    <span class="p">(</span><span class="n">pgw</span><span class="p">,</span> <span class="n">pgh</span><span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageSizePixels</span><span class="p">()</span>  <span class="c"># page size in pixels</span>
105    <span class="p">(</span><span class="n">dcw</span><span class="p">,</span> <span class="n">dch</span><span class="p">)</span> <span class="o">=</span> <span class="n">dc</span><span class="o">.</span><span class="n">GetSize</span><span class="p">()</span>
106    <span class="p">(</span><span class="n">grw</span><span class="p">,</span> <span class="n">grh</span><span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">GetSizeTuple</span><span class="p">()</span>
107
108    <span class="c"># save current figure dpi resolution and bg color,</span>
109    <span class="c"># so that we can temporarily set them to the dpi of</span>
110    <span class="c"># the printer, and the bg color to white</span>
111    <span class="n">bgcolor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">get_facecolor</span><span class="p">()</span>
112    <span class="n">fig_dpi</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">dpi</span>
113
114    <span class="c"># draw the bitmap, scaled appropriately</span>
115    <span class="n">vscale</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">ppw</span><span class="p">)</span> <span class="o">/</span> <span class="n">fig_dpi</span>
116
117    <span class="c"># set figure resolution,bg color for printer</span>
118    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">dpi</span> <span class="o">=</span> <span class="n">ppw</span>
119    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">set_facecolor</span><span class="p">(</span><span class="s">&#39;#FFFFFF&#39;</span><span class="p">)</span>
120
121    <span class="n">renderer</span> <span class="o">=</span> <span class="n">RendererWx</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">bitmap</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">dpi</span><span class="p">)</span>
122    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">draw</span><span class="p">(</span><span class="n">renderer</span><span class="p">)</span>
123    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">bitmap</span><span class="o">.</span><span class="n">SetWidth</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">bitmap</span><span class="o">.</span><span class="n">GetWidth</span><span class="p">()</span> <span class="o">*</span> <span class="n">vscale</span><span class="p">))</span>
124    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">bitmap</span><span class="o">.</span><span class="n">SetHeight</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">bitmap</span><span class="o">.</span><span class="n">GetHeight</span><span class="p">()</span> <span class="o">*</span> <span class="n">vscale</span><span class="p">))</span>
125    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
126
127    <span class="c"># page may need additional scaling on preview</span>
128    <span class="n">page_scale</span> <span class="o">=</span> <span class="mf">1.0</span>
129    <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">IsPreview</span><span class="p">():</span>
130        <span class="n">page_scale</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">dcw</span><span class="p">)</span><span class="o">/</span><span class="n">pgw</span>
131
132    <span class="c"># get margin in pixels = (margin in in) * (pixels/in)</span>
133    <span class="n">top_margin</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">margin</span> <span class="o">*</span> <span class="n">pph</span> <span class="o">*</span> <span class="n">page_scale</span><span class="p">)</span>
134    <span class="n">left_margin</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">margin</span> <span class="o">*</span> <span class="n">ppw</span> <span class="o">*</span> <span class="n">page_scale</span><span class="p">)</span>
135
136    <span class="c"># set scale so that width of output is self.width inches</span>
137    <span class="c"># (assuming grw is size of graph in inches....)</span>
138    <span class="n">user_scale</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">*</span> <span class="n">fig_dpi</span> <span class="o">*</span> <span class="n">page_scale</span><span class="p">)</span> <span class="o">/</span> <span class="nb">float</span><span class="p">(</span><span class="n">grw</span><span class="p">)</span>
139    <span class="n">dc</span><span class="o">.</span><span class="n">SetDeviceOrigin</span><span class="p">(</span><span class="n">left_margin</span><span class="p">,</span> <span class="n">top_margin</span><span class="p">)</span>
140    <span class="n">dc</span><span class="o">.</span><span class="n">SetUserScale</span><span class="p">(</span><span class="n">user_scale</span><span class="p">,</span> <span class="n">user_scale</span><span class="p">)</span>
141
142    <span class="c"># this cute little number avoid API inconsistencies in wx</span>
143    <span class="k">try</span><span class="p">:</span>
144        <span class="n">dc</span><span class="o">.</span><span class="n">DrawBitmap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">bitmap</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
145    <span class="k">except</span><span class="p">:</span>
146        <span class="k">try</span><span class="p">:</span>
147            <span class="n">dc</span><span class="o">.</span><span class="n">DrawBitmap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">bitmap</span><span class="p">,</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
148        <span class="k">except</span><span class="p">:</span>
149            <span class="k">pass</span>
150
151    <span class="c"># restore original figure  resolution</span>
152    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">set_facecolor</span><span class="p">(</span><span class="n">bgcolor</span><span class="p">)</span>
153    <span class="c">## used to be self.canvas.figure.dpi.set( fig_dpi)</span>
154    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">dpi</span> <span class="o">=</span> <span class="n">fig_dpi</span>
155    <span class="bp">self</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
156    <span class="k">return</span> <span class="bp">True</span>
157</div>
158<span class="n">GraphicsContextWx</span><span class="o">.</span><span class="n">select</span> <span class="o">=</span> <span class="n">select</span>
159<span class="n">GraphicsContextWx</span><span class="o">.</span><span class="n">unselect</span> <span class="o">=</span> <span class="n">unselect</span>
160<span class="n">PrintoutWx</span><span class="o">.</span><span class="n">OnPrintPage</span> <span class="o">=</span> <span class="n">OnPrintPage</span>
161<span class="n">RendererBase</span><span class="o">.</span><span class="n">draw_image</span> <span class="o">=</span> <span class="n">draw_image</span>
162
163
164<div class="viewcode-block" id="FigureCanvas"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.FigureCanvas">[docs]</a><span class="k">class</span> <span class="nc">FigureCanvas</span><span class="p">(</span><span class="n">FigureCanvasWxAgg</span><span class="p">):</span>
165    <span class="sd">&quot;&quot;&quot;</span>
166<span class="sd">    Add features to the wx agg canvas for better support of AUI and</span>
167<span class="sd">    faster plotting.</span>
168<span class="sd">    &quot;&quot;&quot;</span>
169
170    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
171        <span class="nb">super</span><span class="p">(</span><span class="n">FigureCanvas</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
172        <span class="bp">self</span><span class="o">.</span><span class="n">_isRendered</span> <span class="o">=</span> <span class="bp">False</span>
173       
174        <span class="c"># Create an timer for handling draw_idle requests</span>
175        <span class="c"># If there are events pending when the timer is</span>
176        <span class="c"># complete, reset the timer and continue.  The</span>
177        <span class="c"># alternative approach, binding to wx.EVT_IDLE,</span>
178        <span class="c"># doesn&#39;t behave as nicely.</span>
179        <span class="bp">self</span><span class="o">.</span><span class="n">idletimer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">CallLater</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onDrawIdle</span><span class="p">)</span>
180        <span class="c"># panel information</span>
181        <span class="bp">self</span><span class="o">.</span><span class="n">panel</span> <span class="o">=</span> <span class="bp">None</span>
182        <span class="bp">self</span><span class="o">.</span><span class="n">resizing</span> <span class="o">=</span> <span class="bp">False</span>
183        <span class="bp">self</span><span class="o">.</span><span class="n">xaxis</span> <span class="o">=</span> <span class="bp">None</span>
184        <span class="bp">self</span><span class="o">.</span><span class="n">yaxis</span> <span class="o">=</span> <span class="bp">None</span>
185        <span class="bp">self</span><span class="o">.</span><span class="n">ndraw</span> <span class="o">=</span> <span class="mi">0</span>
186        <span class="c"># Support for mouse wheel</span>
187        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_MOUSEWHEEL</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onMouseWheel</span><span class="p">)</span>
188       
189<div class="viewcode-block" id="FigureCanvas.set_panel"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.FigureCanvas.set_panel">[docs]</a>    <span class="k">def</span> <span class="nf">set_panel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">panel</span><span class="p">):</span>
190        <span class="sd">&quot;&quot;&quot;</span>
191<span class="sd">        Set axes</span>
192<span class="sd">        &quot;&quot;&quot;</span>
193        <span class="c"># set panel</span>
194        <span class="bp">self</span><span class="o">.</span><span class="n">panel</span> <span class="o">=</span> <span class="n">panel</span>
195        <span class="c"># set axes</span>
196        <span class="bp">self</span><span class="o">.</span><span class="n">xaxis</span> <span class="o">=</span> <span class="n">panel</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">xaxis</span>
197        <span class="bp">self</span><span class="o">.</span><span class="n">yaxis</span> <span class="o">=</span> <span class="n">panel</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">yaxis</span>
198        </div>
199<div class="viewcode-block" id="FigureCanvas.draw_idle"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.FigureCanvas.draw_idle">[docs]</a>    <span class="k">def</span> <span class="nf">draw_idle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
200        <span class="sd">&quot;&quot;&quot;</span>
201<span class="sd">        Render after a delay if no other render requests have been made.</span>
202<span class="sd">        &quot;&quot;&quot;</span>
203        <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">subplot</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">grid_on</span><span class="p">)</span>
204        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">legend</span> <span class="o">!=</span> <span class="bp">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">legend_pos_loc</span><span class="p">:</span>
205            <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">legend</span><span class="o">.</span><span class="n">_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">legend_pos_loc</span>
206        <span class="bp">self</span><span class="o">.</span><span class="n">idletimer</span><span class="o">.</span><span class="n">Restart</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>  <span class="c"># Delay by 5 ms</span>
207</div>
208    <span class="k">def</span> <span class="nf">_onDrawIdle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
209        <span class="sd">&quot;&quot;&quot;</span>
210<span class="sd">        &quot;&quot;&quot;</span>
211        <span class="k">if</span> <span class="bp">False</span> <span class="ow">and</span> <span class="n">wx</span><span class="o">.</span><span class="n">GetApp</span><span class="p">()</span><span class="o">.</span><span class="n">Pending</span><span class="p">():</span>
212            <span class="bp">self</span><span class="o">.</span><span class="n">idletimer</span><span class="o">.</span><span class="n">Restart</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
213        <span class="k">else</span><span class="p">:</span>
214            <span class="c"># Draw plot, changes resizing too</span>
215            <span class="bp">self</span><span class="o">.</span><span class="n">draw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
216            <span class="bp">self</span><span class="o">.</span><span class="n">resizing</span> <span class="o">=</span> <span class="bp">False</span>
217           
218    <span class="k">def</span> <span class="nf">_get_axes_switch</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
219        <span class="sd">&quot;&quot;&quot;</span>
220<span class="sd">        &quot;&quot;&quot;</span>
221        <span class="c"># Check resize whether or not True</span>
222        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">dimension</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
223            <span class="k">return</span>
224
225        <span class="c"># This is for fast response when plot is being resized</span>
226        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">resizing</span><span class="p">:</span>
227            <span class="bp">self</span><span class="o">.</span><span class="n">xaxis</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
228            <span class="bp">self</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
229            <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">schedule_full_draw</span><span class="p">(</span><span class="s">&#39;del&#39;</span><span class="p">)</span>
230        <span class="k">else</span><span class="p">:</span>
231            <span class="bp">self</span><span class="o">.</span><span class="n">xaxis</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
232            <span class="bp">self</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
233            <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">schedule_full_draw</span><span class="p">(</span><span class="s">&#39;append&#39;</span><span class="p">)</span>
234        <span class="c"># set the resizing back to default= False</span>
235        <span class="bp">self</span><span class="o">.</span><span class="n">set_resizing</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
236       
237<div class="viewcode-block" id="FigureCanvas.set_resizing"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.FigureCanvas.set_resizing">[docs]</a>    <span class="k">def</span> <span class="nf">set_resizing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resizing</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
238        <span class="sd">&quot;&quot;&quot;</span>
239<span class="sd">        Setting the resizing</span>
240<span class="sd">        &quot;&quot;&quot;</span>
241        <span class="bp">self</span><span class="o">.</span><span class="n">resizing</span> <span class="o">=</span> <span class="n">resizing</span>
242        <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">set_resizing</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
243             </div>
244<div class="viewcode-block" id="FigureCanvas.draw"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.FigureCanvas.draw">[docs]</a>    <span class="k">def</span> <span class="nf">draw</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">drawDC</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
245        <span class="sd">&quot;&quot;&quot;</span>
246<span class="sd">        Render the figure using agg.</span>
247<span class="sd">        &quot;&quot;&quot;</span>
248        <span class="c"># Only draw if window is shown, otherwise graph will bleed through</span>
249        <span class="c"># on the notebook style AUI widgets.</span>
250        <span class="c">#    raise</span>
251        <span class="n">fig</span> <span class="o">=</span> <span class="n">FigureCanvasWxAgg</span>
252        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">IsShownOnScreen</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">ndraw</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
253            <span class="bp">self</span><span class="o">.</span><span class="n">_isRendered</span> <span class="o">=</span> <span class="bp">True</span>
254            <span class="bp">self</span><span class="o">.</span><span class="n">_get_axes_switch</span><span class="p">()</span>
255            <span class="c">#import time</span>
256            <span class="c">#st = time.time()</span>
257            <span class="k">try</span><span class="p">:</span>
258                <span class="n">fig</span><span class="o">.</span><span class="n">draw</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
259            <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
260                <span class="k">pass</span>
261            <span class="c">#self.bitmap = _convert_agg_to_wx_bitmap(self.get_renderer(), None)</span>
262            <span class="c">#self.gui_repaint(drawDC=drawDC)</span>
263            <span class="c">#print &quot;time&quot;, time.time() - st</span>
264        <span class="k">else</span><span class="p">:</span>
265            <span class="bp">self</span><span class="o">.</span><span class="n">_isRendered</span> <span class="o">=</span> <span class="bp">False</span>
266        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ndraw</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
267            <span class="bp">self</span><span class="o">.</span><span class="n">ndraw</span> <span class="o">+=</span> <span class="mi">1</span>
268        </div>
269    <span class="k">def</span> <span class="nf">_onMouseWheel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">evt</span><span class="p">):</span>
270        <span class="sd">&quot;&quot;&quot;Translate mouse wheel events into matplotlib events&quot;&quot;&quot;</span>
271        <span class="c"># Determine mouse location</span>
272        <span class="n">w</span><span class="p">,</span> <span class="n">h</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">get_width_height</span><span class="p">()</span>
273        <span class="n">x</span> <span class="o">=</span> <span class="n">evt</span><span class="o">.</span><span class="n">GetX</span><span class="p">()</span>
274        <span class="n">y</span> <span class="o">=</span> <span class="n">h</span> <span class="o">-</span> <span class="n">evt</span><span class="o">.</span><span class="n">GetY</span><span class="p">()</span>
275
276        <span class="c"># Convert delta/rotation/rate into a floating point step size</span>
277        <span class="n">delta</span> <span class="o">=</span> <span class="n">evt</span><span class="o">.</span><span class="n">GetWheelDelta</span><span class="p">()</span>
278        <span class="n">rotation</span> <span class="o">=</span> <span class="n">evt</span><span class="o">.</span><span class="n">GetWheelRotation</span><span class="p">()</span>
279        <span class="n">rate</span> <span class="o">=</span> <span class="n">evt</span><span class="o">.</span><span class="n">GetLinesPerAction</span><span class="p">()</span>
280        <span class="c">#print &quot;delta,rotation,rate&quot;,delta,rotation,rate</span>
281        <span class="n">step</span> <span class="o">=</span> <span class="n">rate</span> <span class="o">*</span> <span class="nb">float</span><span class="p">(</span><span class="n">rotation</span><span class="p">)</span> <span class="o">/</span> <span class="n">delta</span>
282
283        <span class="c"># Convert to mpl event</span>
284        <span class="n">evt</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span>
285        <span class="bp">self</span><span class="o">.</span><span class="n">scroll_event</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">step</span><span class="p">,</span> <span class="n">guiEvent</span><span class="o">=</span><span class="n">evt</span><span class="p">)</span>
286
287<div class="viewcode-block" id="FigureCanvas.scroll_event"><a class="viewcode-back" href="../../../dev/api/sas.plottools.html#sas.plottools.canvas.FigureCanvas.scroll_event">[docs]</a>    <span class="k">def</span> <span class="nf">scroll_event</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">guiEvent</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
288        <span class="sd">&quot;&quot;&quot;</span>
289<span class="sd">        Backend derived classes should call this function on any</span>
290<span class="sd">        scroll wheel event.  x,y are the canvas coords: 0,0 is lower,</span>
291<span class="sd">        left.  button and key are as defined in MouseEvent</span>
292<span class="sd">        &quot;&quot;&quot;</span>
293        <span class="n">button</span> <span class="o">=</span> <span class="s">&#39;up&#39;</span> <span class="k">if</span> <span class="n">step</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="k">else</span> <span class="s">&#39;down&#39;</span>
294        <span class="bp">self</span><span class="o">.</span><span class="n">_button</span> <span class="o">=</span> <span class="n">button</span>
295        <span class="n">s</span> <span class="o">=</span> <span class="s">&#39;scroll_event&#39;</span>
296        <span class="n">event</span> <span class="o">=</span> <span class="n">MouseEvent</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">button</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">guiEvent</span><span class="o">=</span><span class="n">guiEvent</span><span class="p">)</span>
297        <span class="nb">setattr</span><span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="s">&#39;step&#39;</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
298        <span class="bp">self</span><span class="o">.</span><span class="n">callbacks</span><span class="o">.</span><span class="n">process</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">event</span><span class="p">)</span>
299        <span class="k">if</span> <span class="n">step</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
300            <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">is_zoomed</span> <span class="o">=</span> <span class="bp">True</span>
301               </div>
302    <span class="k">def</span> <span class="nf">_onRightButtonDown</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">evt</span><span class="p">):</span>
303        <span class="sd">&quot;&quot;&quot;</span>
304<span class="sd">        Overload the right button down call back to avoid a problem</span>
305<span class="sd">        with the context menu over matplotlib plots on linux.</span>
306<span class="sd">        </span>
307<span class="sd">        :TODO: Investigate what the root cause of the problem is.</span>
308<span class="sd">        </span>
309<span class="sd">        &quot;&quot;&quot;</span>
310        <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">&#39;linux2&#39;</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">dimension</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
311            <span class="n">evt</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span>
312        <span class="k">else</span><span class="p">:</span>
313            <span class="n">FigureCanvasWxAgg</span><span class="o">.</span><span class="n">_onRightButtonDown</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">evt</span><span class="p">)</span>
314            <span class="c"># This solves the focusing on rightclick.</span>
315            <span class="c"># Todo: better design</span>
316            <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">set_plot_unfocus</span><span class="p">()</span>
317            <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">on_set_focus</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
318        <span class="k">return</span>
319
320    <span class="c"># CRUFT: wx 3.0.0.0 on OS X doesn&#39;t release the mouse on leaving window</span>
321    <span class="k">def</span> <span class="nf">_onLeave</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">evt</span><span class="p">):</span>
322        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">HasCapture</span><span class="p">():</span> <span class="bp">self</span><span class="o">.</span><span class="n">ReleaseMouse</span><span class="p">()</span>
323        <span class="nb">super</span><span class="p">(</span><span class="n">FigureCanvas</span><span class="p">,</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">_onLeave</span><span class="p">(</span><span class="n">evt</span><span class="p">)</span></div>
324</pre></div>
325
326          </div>
327        </div>
328      </div>
329      <div class="sphinxsidebar">
330        <div class="sphinxsidebarwrapper">
331<div id="searchbox" style="display: none">
332  <h3>Quick search</h3>
333    <form class="search" action="../../../search.html" method="get">
334      <input type="text" name="q" />
335      <input type="submit" value="Go" />
336      <input type="hidden" name="check_keywords" value="yes" />
337      <input type="hidden" name="area" value="default" />
338    </form>
339    <p class="searchtip" style="font-size: 90%">
340    Enter search terms or a module, class or function name.
341    </p>
342</div>
343<script type="text/javascript">$('#searchbox').show(0);</script>
344        </div>
345      </div>
346      <div class="clearer"></div>
347    </div>
348    <div class="related">
349      <h3>Navigation</h3>
350      <ul>
351        <li class="right" style="margin-right: 10px">
352          <a href="../../../genindex.html" title="General Index"
353             >index</a></li>
354        <li class="right" >
355          <a href="../../../py-modindex.html" title="Python Module Index"
356             >modules</a> |</li>
357        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
358          <li><a href="../../index.html" >Module code</a> &raquo;</li> 
359      </ul>
360    </div>
361    <div class="footer">
362        &copy; Copyright 2013, The SasView Project.
363      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
364    </div>
365  </body>
366</html>
Note: See TracBrowser for help on using the repository browser.