source: sasview/_modules/sas/perspectives/fitting/fitpanel.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: 99.0 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.perspectives.fitting.fitpanel &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="sas.perspectives.fitting" href="../fitting.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" >Module code</a> &raquo;</li>
42          <li><a href="../fitting.html" accesskey="U">sas.perspectives.fitting</a> &raquo;</li> 
43      </ul>
44    </div> 
45
46    <div class="document">
47      <div class="documentwrapper">
48        <div class="bodywrapper">
49          <div class="body">
50           
51  <h1>Source code for sas.perspectives.fitting.fitpanel</h1><div class="highlight"><pre>
52<span class="sd">&quot;&quot;&quot;</span>
53<span class="sd">FitPanel class contains fields allowing to fit  models and  data</span>
54
55<span class="sd">:note: For Fit to be performed the user should check at least one parameter</span>
56<span class="sd">    on fit Panel window.</span>
57<span class="sd">   </span>
58<span class="sd">&quot;&quot;&quot;</span>
59<span class="kn">import</span> <span class="nn">wx</span>
60<span class="kn">from</span> <span class="nn">wx.aui</span> <span class="kn">import</span> <span class="n">AuiNotebook</span> <span class="k">as</span> <span class="n">nb</span>
61
62<span class="kn">from</span> <span class="nn">sas.guiframe.panel_base</span> <span class="kn">import</span> <span class="n">PanelBase</span>
63<span class="kn">from</span> <span class="nn">sas.guiframe.events</span> <span class="kn">import</span> <span class="n">PanelOnFocusEvent</span>
64<span class="kn">from</span> <span class="nn">sas.guiframe.events</span> <span class="kn">import</span> <span class="n">StatusEvent</span>
65<span class="kn">from</span> <span class="nn">sas.guiframe.dataFitting</span> <span class="kn">import</span> <span class="n">check_data_validity</span>
66
67<span class="kn">import</span> <span class="nn">basepage</span>
68<span class="kn">import</span> <span class="nn">models</span>
69<span class="n">_BOX_WIDTH</span> <span class="o">=</span> <span class="mi">80</span>
70
71
72<div class="viewcode-block" id="FitPanel"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel">[docs]</a><span class="k">class</span> <span class="nc">FitPanel</span><span class="p">(</span><span class="n">nb</span><span class="p">,</span> <span class="n">PanelBase</span><span class="p">):</span>
73    <span class="sd">&quot;&quot;&quot;</span>
74<span class="sd">    FitPanel class contains fields allowing to fit  models and  data</span>
75<span class="sd">    </span>
76<span class="sd">    :note: For Fit to be performed the user should check at least one parameter</span>
77<span class="sd">        on fit Panel window.</span>
78<span class="sd">       </span>
79<span class="sd">    &quot;&quot;&quot;</span>
80    <span class="c">## Internal name for the AUI manager</span>
81    <span class="n">window_name</span> <span class="o">=</span> <span class="s">&quot;Fit panel&quot;</span>
82    <span class="c">## Title to appear on top of the window</span>
83    <span class="n">window_caption</span> <span class="o">=</span> <span class="s">&quot;Fit Panel &quot;</span>
84    <span class="n">CENTER_PANE</span> <span class="o">=</span> <span class="bp">True</span>
85   
86    <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="n">parent</span><span class="p">,</span> <span class="n">manager</span><span class="o">=</span><span class="bp">None</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>
87        <span class="sd">&quot;&quot;&quot;</span>
88<span class="sd">        &quot;&quot;&quot;</span>
89        <span class="n">nb</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
90                    <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">AUI_NB_WINDOWLIST_BUTTON</span><span class="o">|</span>
91                    <span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">AUI_NB_DEFAULT_STYLE</span><span class="o">|</span>
92                    <span class="n">wx</span><span class="o">.</span><span class="n">CLIP_CHILDREN</span><span class="p">)</span>
93        <span class="n">PanelBase</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">)</span>
94        <span class="c">#self.SetWindowStyleFlag(style=nb.FNB_FANCY_TABS)</span>
95        <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span> <span class="o">=</span> <span class="n">manager</span>
96        <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span>
97        <span class="bp">self</span><span class="o">.</span><span class="n">event_owner</span> <span class="o">=</span> <span class="bp">None</span>
98        <span class="c">#dictionary of miodel {model class name, model class}</span>
99        <span class="bp">self</span><span class="o">.</span><span class="n">menu_mng</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ModelManager</span><span class="p">()</span>
100        <span class="bp">self</span><span class="o">.</span><span class="n">model_list_box</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">menu_mng</span><span class="o">.</span><span class="n">get_model_list</span><span class="p">()</span>
101        <span class="c">#pageClosedEvent = nb.EVT_FLATNOTEBOOK_PAGE_CLOSING</span>
102        <span class="bp">self</span><span class="o">.</span><span class="n">model_dictionary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">menu_mng</span><span class="o">.</span><span class="n">get_model_dictionary</span><span class="p">()</span>
103        <span class="bp">self</span><span class="o">.</span><span class="n">pageClosedEvent</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">EVT_AUINOTEBOOK_PAGE_CLOSE</span>
104       
105        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pageClosedEvent</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_close_page</span><span class="p">)</span>
106        <span class="c">## save the title of the last page tab added</span>
107        <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span> <span class="o">=</span> <span class="p">{}</span>
108        <span class="c">## list of existing fit page</span>
109        <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span> <span class="o">=</span> <span class="p">{}</span>
110        <span class="c">#index of fit page</span>
111        <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_index</span> <span class="o">=</span> <span class="mi">0</span>
112        <span class="c">#index of batch page</span>
113        <span class="bp">self</span><span class="o">.</span><span class="n">batch_page_index</span> <span class="o">=</span> <span class="mi">0</span>
114        <span class="c">#page of simultaneous fit</span>
115        <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span> <span class="o">=</span> <span class="bp">None</span>
116        <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span> <span class="o">=</span> <span class="bp">None</span>
117        <span class="bp">self</span><span class="o">.</span><span class="n">fit_engine_type</span> <span class="o">=</span> <span class="s">&quot;bumps&quot;</span>
118        <span class="c">## get the state of a page</span>
119        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">basepage</span><span class="o">.</span><span class="n">EVT_PAGE_INFO</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onGetstate</span><span class="p">)</span>
120        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">basepage</span><span class="o">.</span><span class="n">EVT_PREVIOUS_STATE</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onUndo</span><span class="p">)</span>
121        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">basepage</span><span class="o">.</span><span class="n">EVT_NEXT_STATE</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onRedo</span><span class="p">)</span>
122        <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">aui</span><span class="o">.</span><span class="n">EVT_AUINOTEBOOK_PAGE_CHANGED</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_page_changing</span><span class="p">)</span>
123        <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">aui</span><span class="o">.</span><span class="n">EVT_AUINOTEBOOK_PAGE_CLOSED</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_closed</span><span class="p">)</span>
124       
125<div class="viewcode-block" id="FitPanel.on_closed"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.on_closed">[docs]</a>    <span class="k">def</span> <span class="nf">on_closed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
126        <span class="sd">&quot;&quot;&quot;</span>
127<span class="sd">        &quot;&quot;&quot;</span>
128        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageCount</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
129            <span class="bp">self</span><span class="o">.</span><span class="n">add_empty_page</span><span class="p">()</span>
130            <span class="bp">self</span><span class="o">.</span><span class="n">enable_close_button</span><span class="p">()</span>
131        </div>
132<div class="viewcode-block" id="FitPanel.save_project"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.save_project">[docs]</a>    <span class="k">def</span> <span class="nf">save_project</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
133        <span class="sd">&quot;&quot;&quot;</span>
134<span class="sd">        return an xml node containing state of the panel</span>
135<span class="sd">         that guiframe can write to file</span>
136<span class="sd">        &quot;&quot;&quot;</span>
137        <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
138        <span class="k">for</span> <span class="n">uid</span><span class="p">,</span> <span class="n">page</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
139            <span class="k">if</span> <span class="n">page</span><span class="o">.</span><span class="n">batch_on</span><span class="p">:</span>
140                <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageIndex</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
141                <span class="k">if</span> <span class="n">pos</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="ow">and</span> <span class="n">page</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="p">]:</span>
142                    <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> .</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetPageText</span><span class="p">(</span><span class="n">pos</span><span class="p">))</span>
143            <span class="k">else</span><span class="p">:</span>
144                <span class="n">data</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
145                <span class="c"># state must be cloned</span>
146                <span class="n">state</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">get_state</span><span class="p">()</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span>
147                <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">page</span><span class="o">.</span><span class="n">model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
148                    <span class="n">new_doc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">state_reader</span><span class="o">.</span><span class="n">write_toXML</span><span class="p">(</span><span class="n">data</span><span class="p">,</span>
149                                                                     <span class="n">state</span><span class="p">)</span>
150                    <span class="k">if</span> <span class="n">doc</span> <span class="o">!=</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="s">&quot;firstChild&quot;</span><span class="p">):</span>
151                        <span class="n">child</span> <span class="o">=</span> <span class="n">new_doc</span><span class="o">.</span><span class="n">firstChild</span><span class="o">.</span><span class="n">firstChild</span>
152                        <span class="n">doc</span><span class="o">.</span><span class="n">firstChild</span><span class="o">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">child</span><span class="p">)</span>
153                    <span class="k">else</span><span class="p">:</span>
154                        <span class="n">doc</span> <span class="o">=</span> <span class="n">new_doc</span>
155        <span class="k">if</span> <span class="n">msg</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">!=</span> <span class="s">&quot;&quot;</span><span class="p">:</span>
156            <span class="n">temp</span> <span class="o">=</span> <span class="s">&quot;Save Project is not supported for Batch page.</span><span class="se">\n</span><span class="s">&quot;</span>
157            <span class="n">temp</span> <span class="o">+=</span> <span class="s">&quot;The following pages will not be save:</span><span class="se">\n</span><span class="s">&quot;</span>
158            <span class="n">message</span> <span class="o">=</span> <span class="n">temp</span> <span class="o">+</span> <span class="n">msg</span>
159            <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">StatusEvent</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
160                                                            <span class="n">info</span><span class="o">=</span><span class="s">&quot;warning&quot;</span><span class="p">))</span>
161        <span class="k">return</span> <span class="n">doc</span>
162    </div>
163    <span class="k">def</span> <span class="nf">_on_engine_change</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&#39;scipy&#39;</span><span class="p">):</span>
164        <span class="sd">&quot;&quot;&quot;</span>
165<span class="sd">        &quot;&quot;&quot;</span>
166        <span class="k">for</span> <span class="n">panel</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
167            <span class="bp">self</span><span class="o">.</span><span class="n">set_engine_helper</span><span class="p">(</span><span class="n">panel</span><span class="o">=</span><span class="n">panel</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">)</span>
168           
169<div class="viewcode-block" id="FitPanel.set_engine_helper"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.set_engine_helper">[docs]</a>    <span class="k">def</span> <span class="nf">set_engine_helper</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">panel</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&#39;scipy&#39;</span><span class="p">):</span>
170        <span class="sd">&quot;&quot;&quot;</span>
171<span class="sd">        &quot;&quot;&quot;</span>
172        <span class="bp">self</span><span class="o">.</span><span class="n">fit_engine_type</span> <span class="o">=</span> <span class="n">name</span>
173        <span class="k">if</span> <span class="n">panel</span> <span class="ow">not</span> <span class="ow">in</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="p">]:</span>
174            <span class="n">panel</span><span class="o">.</span><span class="n">_on_engine_change</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">fit_engine_type</span><span class="p">)</span>
175                </div>
176<div class="viewcode-block" id="FitPanel.update_model_list"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.update_model_list">[docs]</a>    <span class="k">def</span> <span class="nf">update_model_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
177        <span class="sd">&quot;&quot;&quot;</span>
178<span class="sd">        &quot;&quot;&quot;</span>
179        <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">menu_mng</span><span class="o">.</span><span class="n">update</span><span class="p">()</span>
180        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">temp</span><span class="p">):</span>
181            <span class="bp">self</span><span class="o">.</span><span class="n">model_list_box</span> <span class="o">=</span> <span class="n">temp</span>
182        <span class="k">return</span> <span class="n">temp</span>
183    </div>
184<div class="viewcode-block" id="FitPanel.reset_pmodel_list"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.reset_pmodel_list">[docs]</a>    <span class="k">def</span> <span class="nf">reset_pmodel_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
185        <span class="sd">&quot;&quot;&quot;</span>
186<span class="sd">        &quot;&quot;&quot;</span>
187        <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">menu_mng</span><span class="o">.</span><span class="n">pulgins_reset</span><span class="p">()</span>
188        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">temp</span><span class="p">):</span>
189            <span class="bp">self</span><span class="o">.</span><span class="n">model_list_box</span> <span class="o">=</span> <span class="n">temp</span>
190        <span class="k">return</span> <span class="n">temp</span>
191    </div>
192<div class="viewcode-block" id="FitPanel.get_page_by_id"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.get_page_by_id">[docs]</a>    <span class="k">def</span> <span class="nf">get_page_by_id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uid</span><span class="p">):</span>
193        <span class="sd">&quot;&quot;&quot;</span>
194<span class="sd">        &quot;&quot;&quot;</span>
195        <span class="k">if</span> <span class="n">uid</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="p">:</span>
196            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Fitpanel cannot find ID: </span><span class="si">%s</span><span class="s"> in self.opened_pages&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">uid</span><span class="p">)</span>
197            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
198        <span class="k">else</span><span class="p">:</span>
199            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="p">[</span><span class="n">uid</span><span class="p">]</span>
200        </div>
201<div class="viewcode-block" id="FitPanel.on_page_changing"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.on_page_changing">[docs]</a>    <span class="k">def</span> <span class="nf">on_page_changing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
202        <span class="sd">&quot;&quot;&quot;</span>
203<span class="sd">        calls the function when the current event handler has exited. avoiding</span>
204<span class="sd">        to call panel on focus on a panel that is currently deleted</span>
205<span class="sd">        &quot;&quot;&quot;</span>
206        <span class="n">wx</span><span class="o">.</span><span class="n">CallAfter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">helper_on_page_change</span><span class="p">)</span>
207        </div>
208<div class="viewcode-block" id="FitPanel.helper_on_page_change"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.helper_on_page_change">[docs]</a>    <span class="k">def</span> <span class="nf">helper_on_page_change</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
209        <span class="sd">&quot;&quot;&quot;</span>
210<span class="sd">        &quot;&quot;&quot;</span>
211        <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">()</span>
212        <span class="k">if</span> <span class="n">pos</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
213            <span class="n">selected_page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
214            <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> 
215                         <span class="n">PanelOnFocusEvent</span><span class="p">(</span><span class="n">panel</span><span class="o">=</span><span class="n">selected_page</span><span class="p">))</span>
216        <span class="bp">self</span><span class="o">.</span><span class="n">enable_close_button</span><span class="p">()</span>
217       </div>
218<div class="viewcode-block" id="FitPanel.on_set_focus"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.on_set_focus">[docs]</a>    <span class="k">def</span> <span class="nf">on_set_focus</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
219        <span class="sd">&quot;&quot;&quot;</span>
220<span class="sd">        &quot;&quot;&quot;</span>
221        <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">()</span>
222        <span class="k">if</span> <span class="n">pos</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
223            <span class="n">selected_page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
224            <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> 
225                         <span class="n">PanelOnFocusEvent</span><span class="p">(</span><span class="n">panel</span><span class="o">=</span><span class="n">selected_page</span><span class="p">))</span>
226        </div>
227<div class="viewcode-block" id="FitPanel.get_data"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.get_data">[docs]</a>    <span class="k">def</span> <span class="nf">get_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
228        <span class="sd">&quot;&quot;&quot;</span>
229<span class="sd">        get the data in the current page</span>
230<span class="sd">        &quot;&quot;&quot;</span>
231        <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">()</span>
232        <span class="k">if</span> <span class="n">pos</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
233            <span class="n">selected_page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
234            <span class="k">return</span> <span class="n">selected_page</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
235    </div>
236<div class="viewcode-block" id="FitPanel.set_model_state"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.set_model_state">[docs]</a>    <span class="k">def</span> <span class="nf">set_model_state</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
237        <span class="sd">&quot;&quot;&quot;</span>
238<span class="sd">        receive a state to reset the model in the current page</span>
239<span class="sd">        &quot;&quot;&quot;</span>
240        <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">()</span>
241        <span class="k">if</span> <span class="n">pos</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
242            <span class="n">selected_page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
243            <span class="n">selected_page</span><span class="o">.</span><span class="n">set_model_state</span><span class="p">(</span><span class="n">state</span><span class="p">)</span>
244            </div>
245<div class="viewcode-block" id="FitPanel.get_state"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.get_state">[docs]</a>    <span class="k">def</span> <span class="nf">get_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
246        <span class="sd">&quot;&quot;&quot;</span>
247<span class="sd">         return the state of the current selected page</span>
248<span class="sd">        &quot;&quot;&quot;</span>
249        <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">()</span>
250        <span class="k">if</span> <span class="n">pos</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
251            <span class="n">selected_page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
252            <span class="k">return</span> <span class="n">selected_page</span><span class="o">.</span><span class="n">get_state</span><span class="p">()</span>
253    </div>
254<div class="viewcode-block" id="FitPanel.close_all"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.close_all">[docs]</a>    <span class="k">def</span> <span class="nf">close_all</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
255        <span class="sd">&quot;&quot;&quot;</span>
256<span class="sd">        remove all pages, used when a svs file is opened</span>
257<span class="sd">        &quot;&quot;&quot;</span>
258       
259        <span class="c">#get number of pages</span>
260        <span class="n">nop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageCount</span><span class="p">()</span>
261        <span class="c">#use while-loop, for-loop will not do the job well.</span>
262        <span class="k">while</span> <span class="p">(</span><span class="n">nop</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>
263            <span class="c">#delete the first page until no page exists</span>
264            <span class="n">page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
265            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">panel_on_focus</span> <span class="o">==</span> <span class="n">page</span><span class="p">:</span>
266                <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">panel_on_focus</span> <span class="o">=</span> <span class="bp">None</span>
267            <span class="bp">self</span><span class="o">.</span><span class="n">_close_helper</span><span class="p">(</span><span class="n">selected_page</span><span class="o">=</span><span class="n">page</span><span class="p">)</span>
268            <span class="bp">self</span><span class="o">.</span><span class="n">DeletePage</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
269            <span class="n">nop</span> <span class="o">=</span> <span class="n">nop</span> <span class="o">-</span> <span class="mi">1</span>
270           
271        <span class="c">## save the title of the last page tab added</span>
272        <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span> <span class="o">=</span> <span class="p">{}</span>
273        <span class="c">## list of existing fit page</span>
274        <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span> <span class="o">=</span> <span class="p">{}</span>
275         </div>
276<div class="viewcode-block" id="FitPanel.set_state"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.set_state">[docs]</a>    <span class="k">def</span> <span class="nf">set_state</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
277        <span class="sd">&quot;&quot;&quot;</span>
278<span class="sd">        Restore state of the panel</span>
279<span class="sd">        &quot;&quot;&quot;</span>
280        <span class="n">page_is_opened</span> <span class="o">=</span> <span class="bp">False</span>
281        <span class="k">if</span> <span class="n">state</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
282            <span class="k">for</span> <span class="n">uid</span><span class="p">,</span> <span class="n">panel</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
283                <span class="c">#Don&#39;t return any panel is the exact same page is created</span>
284                <span class="k">if</span> <span class="n">uid</span> <span class="o">==</span> <span class="n">panel</span><span class="o">.</span><span class="n">uid</span> <span class="ow">and</span> <span class="n">panel</span><span class="o">.</span><span class="n">data</span> <span class="o">==</span> <span class="n">state</span><span class="o">.</span><span class="n">data</span><span class="p">:</span>
285                    <span class="c"># the page is still opened</span>
286                    <span class="n">panel</span><span class="o">.</span><span class="n">reset_page</span><span class="p">(</span><span class="n">state</span><span class="o">=</span><span class="n">state</span><span class="p">)</span>
287                    <span class="n">panel</span><span class="o">.</span><span class="n">save_current_state</span><span class="p">()</span>
288                    <span class="n">page_is_opened</span> <span class="o">=</span> <span class="bp">True</span>
289            <span class="k">if</span> <span class="ow">not</span> <span class="n">page_is_opened</span><span class="p">:</span>
290                <span class="k">if</span> <span class="n">state</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">!=</span> <span class="s">&#39;list&#39;</span><span class="p">:</span>
291                    <span class="c">#To support older state file format</span>
292                    <span class="n">list_data</span> <span class="o">=</span> <span class="p">[</span><span class="n">state</span><span class="o">.</span><span class="n">data</span><span class="p">]</span>
293                <span class="k">else</span><span class="p">:</span>
294                    <span class="c">#Todo: need new file format for the list</span>
295                    <span class="n">list_data</span> <span class="o">=</span> <span class="n">state</span><span class="o">.</span><span class="n">data</span>
296                <span class="n">panel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">add_fit_page</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">list_data</span><span class="p">)</span>
297                <span class="c"># add data associated to the page created</span>
298                <span class="k">if</span> <span class="n">panel</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
299                    <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">store_data</span><span class="p">(</span><span class="n">uid</span><span class="o">=</span><span class="n">panel</span><span class="o">.</span><span class="n">uid</span><span class="p">,</span>
300                                             <span class="n">data_list</span><span class="o">=</span><span class="n">list_data</span><span class="p">,</span>
301                                             <span class="n">caption</span><span class="o">=</span><span class="n">panel</span><span class="o">.</span><span class="n">window_caption</span><span class="p">)</span>
302                    <span class="n">panel</span><span class="o">.</span><span class="n">reset_page</span><span class="p">(</span><span class="n">state</span><span class="o">=</span><span class="n">state</span><span class="p">)</span>
303                    <span class="n">panel</span><span class="o">.</span><span class="n">save_current_state</span><span class="p">()</span>
304                    </div>
305<div class="viewcode-block" id="FitPanel.clear_panel"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.clear_panel">[docs]</a>    <span class="k">def</span> <span class="nf">clear_panel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
306        <span class="sd">&quot;&quot;&quot;</span>
307<span class="sd">        Clear and close all panels, used by guimanager</span>
308<span class="sd">        &quot;&quot;&quot;</span>
309       
310        <span class="c">#close all panels only when svs file opened</span>
311        <span class="bp">self</span><span class="o">.</span><span class="n">close_all</span><span class="p">()</span>
312        <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">mypanels</span> <span class="o">=</span> <span class="p">[]</span>
313        </div>
314<div class="viewcode-block" id="FitPanel.on_close_page"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.on_close_page">[docs]</a>    <span class="k">def</span> <span class="nf">on_close_page</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
315        <span class="sd">&quot;&quot;&quot;</span>
316<span class="sd">        close page and remove all references to the closed page</span>
317<span class="sd">        &quot;&quot;&quot;</span>
318        <span class="n">nbr_page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageCount</span><span class="p">()</span>
319        <span class="n">selected_page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">())</span>
320        <span class="k">if</span> <span class="n">nbr_page</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
321            <span class="k">if</span> <span class="n">selected_page</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
322                <span class="k">if</span> <span class="n">event</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
323                    <span class="n">event</span><span class="o">.</span><span class="n">Veto</span><span class="p">()</span>
324                <span class="k">return</span>
325        <span class="bp">self</span><span class="o">.</span><span class="n">_close_helper</span><span class="p">(</span><span class="n">selected_page</span><span class="o">=</span><span class="n">selected_page</span><span class="p">)</span>
326        </div>
327<div class="viewcode-block" id="FitPanel.close_page_with_data"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.close_page_with_data">[docs]</a>    <span class="k">def</span> <span class="nf">close_page_with_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">deleted_data</span><span class="p">):</span>
328        <span class="sd">&quot;&quot;&quot;</span>
329<span class="sd">        close a fit page when its data is completely remove from the graph</span>
330<span class="sd">        &quot;&quot;&quot;</span>
331        <span class="k">if</span> <span class="n">deleted_data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
332            <span class="k">return</span>
333        <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetPageCount</span><span class="p">()):</span>
334            <span class="n">selected_page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
335            <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">selected_page</span><span class="p">,</span> <span class="s">&quot;get_data&quot;</span><span class="p">):</span>
336                <span class="n">data</span> <span class="o">=</span> <span class="n">selected_page</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
337               
338                <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
339                    <span class="c">#the fitpanel exists and only the initial fit page is open</span>
340                    <span class="c">#with no selected data</span>
341                    <span class="k">return</span>
342                <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">deleted_data</span><span class="o">.</span><span class="n">id</span><span class="p">:</span>
343                    <span class="bp">self</span><span class="o">.</span><span class="n">_close_helper</span><span class="p">(</span><span class="n">selected_page</span><span class="p">)</span>
344                    <span class="bp">self</span><span class="o">.</span><span class="n">DeletePage</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
345                    <span class="k">break</span>
346        </div>
347<div class="viewcode-block" id="FitPanel.set_manager"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.set_manager">[docs]</a>    <span class="k">def</span> <span class="nf">set_manager</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">manager</span><span class="p">):</span>
348        <span class="sd">&quot;&quot;&quot;</span>
349<span class="sd">        set panel manager</span>
350<span class="sd">        </span>
351<span class="sd">        :param manager: instance of plugin fitting</span>
352<span class="sd">        </span>
353<span class="sd">        &quot;&quot;&quot;</span>
354        <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span> <span class="o">=</span> <span class="n">manager</span>
355        <span class="k">for</span> <span class="n">pos</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetPageCount</span><span class="p">()):</span>
356            <span class="n">page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
357            <span class="k">if</span> <span class="n">page</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
358                <span class="n">page</span><span class="o">.</span><span class="n">set_manager</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="p">)</span>
359</div>
360<div class="viewcode-block" id="FitPanel.set_model_list"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.set_model_list">[docs]</a>    <span class="k">def</span> <span class="nf">set_model_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
361        <span class="sd">&quot;&quot;&quot;</span>
362<span class="sd">        copy a dictionary of model into its own dictionary</span>
363<span class="sd">        </span>
364<span class="sd">        :param m_dict: dictionnary made of model name as key and model class</span>
365<span class="sd">        as value</span>
366<span class="sd">        &quot;&quot;&quot;</span>
367        <span class="bp">self</span><span class="o">.</span><span class="n">model_list_box</span> <span class="o">=</span> <span class="nb">dict</span>
368        </div>
369<div class="viewcode-block" id="FitPanel.set_model_dict"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.set_model_dict">[docs]</a>    <span class="k">def</span> <span class="nf">set_model_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m_dict</span><span class="p">):</span>
370        <span class="sd">&quot;&quot;&quot;</span>
371<span class="sd">        copy a dictionary of model name -&gt; model object</span>
372
373<span class="sd">        :param m_dict: dictionary linking model name -&gt; model object</span>
374<span class="sd">        &quot;&quot;&quot;</span>
375</div>
376<div class="viewcode-block" id="FitPanel.get_current_page"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.get_current_page">[docs]</a>    <span class="k">def</span> <span class="nf">get_current_page</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
377        <span class="sd">&quot;&quot;&quot;</span>
378<span class="sd">        :return: the current page selected</span>
379<span class="sd">        </span>
380<span class="sd">        &quot;&quot;&quot;</span>
381        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPage</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">())</span>
382    </div>
383<div class="viewcode-block" id="FitPanel.add_sim_page"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.add_sim_page">[docs]</a>    <span class="k">def</span> <span class="nf">add_sim_page</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caption</span><span class="o">=</span><span class="s">&quot;Const &amp; Simul Fit&quot;</span><span class="p">):</span>
384        <span class="sd">&quot;&quot;&quot;</span>
385<span class="sd">        Add the simultaneous fit page</span>
386<span class="sd">        &quot;&quot;&quot;</span>
387        <span class="kn">from</span> <span class="nn">simfitpage</span> <span class="kn">import</span> <span class="n">SimultaneousFitPage</span>
388        <span class="n">page_finder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">get_page_finder</span><span class="p">()</span>
389        <span class="k">if</span> <span class="n">caption</span> <span class="o">==</span> <span class="s">&quot;Const &amp; Simul Fit&quot;</span><span class="p">:</span>
390            <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span> <span class="o">=</span> <span class="n">SimultaneousFitPage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page_finder</span><span class="o">=</span><span class="n">page_finder</span><span class="p">,</span>
391                                                 <span class="nb">id</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">batch_on</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
392            <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="o">.</span><span class="n">window_caption</span> <span class="o">=</span> <span class="n">caption</span>
393            <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="o">.</span><span class="n">window_name</span> <span class="o">=</span> <span class="n">caption</span>
394            <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span>
395            <span class="bp">self</span><span class="o">.</span><span class="n">AddPage</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="p">,</span> <span class="n">caption</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
396            <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="o">.</span><span class="n">set_manager</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="p">)</span>
397            <span class="bp">self</span><span class="o">.</span><span class="n">enable_close_button</span><span class="p">()</span>
398            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span>
399        <span class="k">else</span><span class="p">:</span>
400            <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span> <span class="o">=</span> <span class="n">SimultaneousFitPage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">batch_on</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
401                                                   <span class="n">page_finder</span><span class="o">=</span><span class="n">page_finder</span><span class="p">)</span>
402            <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="o">.</span><span class="n">window_caption</span> <span class="o">=</span> <span class="n">caption</span>
403            <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="o">.</span><span class="n">window_name</span> <span class="o">=</span> <span class="n">caption</span>
404            <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span>
405            <span class="bp">self</span><span class="o">.</span><span class="n">AddPage</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="p">,</span> <span class="n">caption</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
406            <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="o">.</span><span class="n">set_manager</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="p">)</span>
407            <span class="bp">self</span><span class="o">.</span><span class="n">enable_close_button</span><span class="p">()</span>
408            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span>
409 </div>
410<div class="viewcode-block" id="FitPanel.add_empty_page"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.add_empty_page">[docs]</a>    <span class="k">def</span> <span class="nf">add_empty_page</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
411        <span class="sd">&quot;&quot;&quot;</span>
412<span class="sd">        add an empty page</span>
413<span class="sd">        &quot;&quot;&quot;</span>
414        <span class="sd">&quot;&quot;&quot;</span>
415<span class="sd">        if self.batch_on:</span>
416<span class="sd">            from batchfitpage import BatchFitPage</span>
417<span class="sd">            panel = BatchFitPage(parent=self)</span>
418<span class="sd">            #Increment index of batch page</span>
419<span class="sd">            self.batch_page_index += 1</span>
420<span class="sd">            index = self.batch_page_index</span>
421<span class="sd">        else:</span>
422<span class="sd">        &quot;&quot;&quot;</span>
423        <span class="kn">from</span> <span class="nn">fitpage</span> <span class="kn">import</span> <span class="n">FitPage</span>
424        <span class="n">panel</span> <span class="o">=</span> <span class="n">FitPage</span><span class="p">(</span><span class="n">parent</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
425        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_on</span><span class="p">:</span>
426            <span class="bp">self</span><span class="o">.</span><span class="n">batch_page_index</span> <span class="o">+=</span> <span class="mi">1</span>
427            <span class="n">caption</span> <span class="o">=</span> <span class="s">&quot;BatchPage&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">batch_page_index</span><span class="p">)</span>
428            <span class="n">panel</span><span class="o">.</span><span class="n">set_index_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">batch_page_index</span><span class="p">)</span>
429        <span class="k">else</span><span class="p">:</span>
430            <span class="c">#Increment index of fit page</span>
431            <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_index</span> <span class="o">+=</span> <span class="mi">1</span>
432            <span class="n">caption</span> <span class="o">=</span> <span class="s">&quot;FitPage&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fit_page_index</span><span class="p">)</span>
433            <span class="n">panel</span><span class="o">.</span><span class="n">set_index_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fit_page_index</span><span class="p">)</span>
434        <span class="n">panel</span><span class="o">.</span><span class="n">batch_on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_on</span>
435        <span class="n">panel</span><span class="o">.</span><span class="n">_set_save_flag</span><span class="p">(</span><span class="ow">not</span> <span class="n">panel</span><span class="o">.</span><span class="n">batch_on</span><span class="p">)</span>
436        <span class="n">panel</span><span class="o">.</span><span class="n">set_model_dictionary</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_dictionary</span><span class="p">)</span>
437        <span class="n">panel</span><span class="o">.</span><span class="n">populate_box</span><span class="p">(</span><span class="n">model_dict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_list_box</span><span class="p">)</span>
438        <span class="n">panel</span><span class="o">.</span><span class="n">formfactor_combo_init</span><span class="p">()</span>
439        <span class="n">panel</span><span class="o">.</span><span class="n">set_manager</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="p">)</span>
440        <span class="n">panel</span><span class="o">.</span><span class="n">window_caption</span> <span class="o">=</span> <span class="n">caption</span>
441        <span class="n">panel</span><span class="o">.</span><span class="n">window_name</span> <span class="o">=</span> <span class="n">caption</span>
442        <span class="bp">self</span><span class="o">.</span><span class="n">AddPage</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span> <span class="n">caption</span><span class="p">,</span> <span class="n">select</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
443        <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="p">[</span><span class="n">panel</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="n">panel</span>
444        <span class="bp">self</span><span class="o">.</span><span class="n">set_engine_helper</span><span class="p">(</span><span class="n">panel</span><span class="o">=</span><span class="n">panel</span><span class="p">)</span>
445        <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">create_fit_problem</span><span class="p">(</span><span class="n">panel</span><span class="o">.</span><span class="n">uid</span><span class="p">)</span>
446        <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">page_finder</span><span class="p">[</span><span class="n">panel</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span><span class="o">.</span><span class="n">add_data</span><span class="p">(</span><span class="n">panel</span><span class="o">.</span><span class="n">get_data</span><span class="p">())</span>
447        <span class="bp">self</span><span class="o">.</span><span class="n">enable_close_button</span><span class="p">()</span>
448        <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>
449        <span class="k">return</span> <span class="n">panel</span>
450    </div>
451<div class="viewcode-block" id="FitPanel.enable_close_button"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.enable_close_button">[docs]</a>    <span class="k">def</span> <span class="nf">enable_close_button</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
452        <span class="sd">&quot;&quot;&quot;</span>
453<span class="sd">        display the close button on tab for more than 1 tabs else remove the</span>
454<span class="sd">        close button</span>
455<span class="sd">        &quot;&quot;&quot;</span>
456        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageCount</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
457            <span class="n">style</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetWindowStyleFlag</span><span class="p">()</span>
458            <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">AUI_NB_CLOSE_ON_ACTIVE_TAB</span>
459            <span class="k">if</span> <span class="n">style</span> <span class="o">&amp;</span> <span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">AUI_NB_CLOSE_ON_ACTIVE_TAB</span> <span class="o">==</span> <span class="n">flag</span><span class="p">:</span>
460                <span class="n">style</span> <span class="o">=</span> <span class="n">style</span> <span class="o">&amp;</span> <span class="o">~</span><span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">AUI_NB_CLOSE_ON_ACTIVE_TAB</span>
461                <span class="bp">self</span><span class="o">.</span><span class="n">SetWindowStyle</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
462        <span class="k">else</span><span class="p">:</span>
463            <span class="n">style</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetWindowStyleFlag</span><span class="p">()</span>
464            <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">AUI_NB_CLOSE_ON_ACTIVE_TAB</span>
465            <span class="k">if</span> <span class="n">style</span> <span class="o">&amp;</span> <span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">AUI_NB_CLOSE_ON_ACTIVE_TAB</span> <span class="o">!=</span> <span class="n">flag</span><span class="p">:</span>
466                <span class="n">style</span> <span class="o">|=</span> <span class="n">wx</span><span class="o">.</span><span class="n">aui</span><span class="o">.</span><span class="n">AUI_NB_CLOSE_ON_ACTIVE_TAB</span>
467                <span class="bp">self</span><span class="o">.</span><span class="n">SetWindowStyle</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
468            </div>
469<div class="viewcode-block" id="FitPanel.delete_data"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.delete_data">[docs]</a>    <span class="k">def</span> <span class="nf">delete_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
470        <span class="sd">&quot;&quot;&quot;</span>
471<span class="sd">        Delete the given data</span>
472<span class="sd">        &quot;&quot;&quot;</span>
473        <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">!=</span> <span class="s">&quot;list&quot;</span><span class="p">:</span>
474            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Fitpanel delete_data expect list of id&quot;</span>
475        <span class="k">else</span><span class="p">:</span>
476            <span class="n">n</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageCount</span><span class="p">()</span>
477            <span class="k">for</span> <span class="n">page</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
478                <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageIndex</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
479                <span class="n">temp_data</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
480                <span class="k">if</span> <span class="n">temp_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">temp_data</span><span class="o">.</span><span class="n">id</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
481                    <span class="bp">self</span><span class="o">.</span><span class="n">SetSelection</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
482                    <span class="bp">self</span><span class="o">.</span><span class="n">on_close_page</span><span class="p">(</span><span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
483                    <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">()</span>
484                    <span class="bp">self</span><span class="o">.</span><span class="n">DeletePage</span><span class="p">(</span><span class="n">temp</span><span class="p">)</span>
485            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageCount</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
486                <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">on_add_new_page</span><span class="p">(</span><span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
487        </div>
488<div class="viewcode-block" id="FitPanel.set_data_on_batch_mode"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.set_data_on_batch_mode">[docs]</a>    <span class="k">def</span> <span class="nf">set_data_on_batch_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_list</span><span class="p">):</span>
489        <span class="sd">&quot;&quot;&quot;</span>
490<span class="sd">        Add all data to a single tab when the application is on Batch mode.</span>
491<span class="sd">        However all data in the set of data must be either 1D or 2D type. </span>
492<span class="sd">        This method presents option to select the data type before creating a </span>
493<span class="sd">        tab.</span>
494<span class="sd">        &quot;&quot;&quot;</span>
495        <span class="n">data_1d_list</span> <span class="o">=</span> <span class="p">[]</span>
496        <span class="n">data_2d_list</span> <span class="o">=</span> <span class="p">[]</span>
497        <span class="n">group_id_1d</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span>
498        <span class="c"># separate data into data1d and data2d list</span>
499        <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">data_list</span><span class="p">:</span>
500            <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;Data1D&quot;</span><span class="p">:</span>
501                <span class="n">data</span><span class="o">.</span><span class="n">group_id</span> <span class="o">=</span> <span class="n">group_id_1d</span>
502                <span class="n">data_1d_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
503            <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;Data2D&quot;</span><span class="p">:</span>
504                <span class="n">data</span><span class="o">.</span><span class="n">group_id</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span>
505                <span class="n">data_2d_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
506        <span class="n">page</span> <span class="o">=</span> <span class="bp">None</span>
507        <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
508            <span class="c">#check if there is an empty page to fill up</span>
509            <span class="k">if</span> <span class="ow">not</span> <span class="n">check_data_validity</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">get_data</span><span class="p">())</span> <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">batch_on</span><span class="p">:</span>
510               
511                <span class="c">#make sure data get placed in 1D empty tab if data is 1D</span>
512                <span class="c">#else data get place on 2D tab empty tab</span>
513                <span class="n">enable2D</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">get_view_mode</span><span class="p">()</span>
514                <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;Data2D&quot;</span> <span class="ow">and</span> <span class="n">enable2D</span><span class="p">)</span>\
515                <span class="ow">or</span> <span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;Data1D&quot;</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">enable2D</span><span class="p">):</span>
516                    <span class="n">page</span> <span class="o">=</span> <span class="n">p</span>
517                    <span class="k">break</span>
518        <span class="k">if</span> <span class="n">data_1d_list</span> <span class="ow">and</span> <span class="n">data_2d_list</span><span class="p">:</span>
519            <span class="c"># need to warning the user that this batch is a special case</span>
520            <span class="kn">from</span> <span class="nn">sas</span> <span class="kn">import</span> <span class="n">BatchDataDialog</span>
521            <span class="n">dlg</span> <span class="o">=</span> <span class="n">BatchDataDialog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
522            <span class="k">if</span> <span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">:</span>
523                <span class="n">data_type</span> <span class="o">=</span> <span class="n">dlg</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
524                <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span>
525                <span class="k">if</span> <span class="n">page</span>  <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
526                    <span class="n">page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">add_empty_page</span><span class="p">()</span>
527                <span class="k">if</span> <span class="n">data_type</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
528                    <span class="c">#user has selected only data1D</span>
529                    <span class="n">page</span><span class="o">.</span><span class="n">fill_data_combobox</span><span class="p">(</span><span class="n">data_1d_list</span><span class="p">)</span>
530                <span class="k">elif</span> <span class="n">data_type</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
531                    <span class="n">page</span><span class="o">.</span><span class="n">fill_data_combobox</span><span class="p">(</span><span class="n">data_2d_list</span><span class="p">)</span>
532            <span class="k">else</span><span class="p">:</span>
533                <span class="c">#the batch analysis is canceled</span>
534                <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span>
535                <span class="k">return</span> <span class="bp">None</span>
536        <span class="k">else</span><span class="p">:</span>
537            <span class="k">if</span> <span class="n">page</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
538                <span class="n">page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">add_empty_page</span><span class="p">()</span>
539            <span class="k">if</span> <span class="n">data_1d_list</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">data_2d_list</span><span class="p">:</span>
540                <span class="c">#only on type of data</span>
541                <span class="n">page</span><span class="o">.</span><span class="n">fill_data_combobox</span><span class="p">(</span><span class="n">data_1d_list</span><span class="p">)</span>
542            <span class="k">elif</span> <span class="ow">not</span> <span class="n">data_1d_list</span> <span class="ow">and</span> <span class="n">data_2d_list</span><span class="p">:</span>
543                <span class="n">page</span><span class="o">.</span><span class="n">fill_data_combobox</span><span class="p">(</span><span class="n">data_2d_list</span><span class="p">)</span>
544               
545        <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageIndex</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
546        <span class="n">page</span><span class="o">.</span><span class="n">batch_on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_on</span>
547        <span class="n">page</span><span class="o">.</span><span class="n">_set_save_flag</span><span class="p">(</span><span class="ow">not</span> <span class="n">page</span><span class="o">.</span><span class="n">batch_on</span><span class="p">)</span>
548        <span class="bp">self</span><span class="o">.</span><span class="n">SetSelection</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
549        <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="p">[</span><span class="n">page</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="n">page</span>
550        <span class="k">return</span> <span class="n">page</span>
551    </div>
552<div class="viewcode-block" id="FitPanel.set_data"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.fitting.html#sas.perspectives.fitting.fitpanel.FitPanel.set_data">[docs]</a>    <span class="k">def</span> <span class="nf">set_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_list</span><span class="p">):</span>
553        <span class="sd">&quot;&quot;&quot;</span>
554<span class="sd">        Add a fitting page on the notebook contained by fitpanel</span>
555<span class="sd">        </span>
556<span class="sd">        :param data: data to fit</span>
557<span class="sd">        </span>
558<span class="sd">        :return panel : page just added for further used.</span>
559<span class="sd">        is used by fitting module</span>
560<span class="sd">        </span>
561<span class="sd">        &quot;&quot;&quot;</span>
562        <span class="k">if</span> <span class="ow">not</span> <span class="n">data_list</span><span class="p">:</span>
563            <span class="k">return</span> <span class="bp">None</span>
564        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_on</span><span class="p">:</span>
565            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_data_on_batch_mode</span><span class="p">(</span><span class="n">data_list</span><span class="p">)</span>
566        <span class="k">else</span><span class="p">:</span>
567            <span class="n">data</span> <span class="o">=</span> <span class="bp">None</span>
568            <span class="k">try</span><span class="p">:</span>
569                <span class="n">data</span> <span class="o">=</span> <span class="n">data_list</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
570            <span class="k">except</span><span class="p">:</span>
571                <span class="c"># for &#39;fitv&#39; files</span>
572                <span class="n">data_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">]</span>
573                <span class="n">data</span> <span class="o">=</span> <span class="n">data_list</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
574               
575            <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
576                <span class="k">return</span> <span class="bp">None</span>
577        <span class="k">for</span> <span class="n">page</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
578            <span class="c">#check if the selected data existing in the fitpanel</span>
579            <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageIndex</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
580            <span class="k">if</span> <span class="ow">not</span> <span class="n">check_data_validity</span><span class="p">(</span><span class="n">page</span><span class="o">.</span><span class="n">get_data</span><span class="p">())</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">page</span><span class="o">.</span><span class="n">batch_on</span><span class="p">:</span>
581                <span class="c">#make sure data get placed in 1D empty tab if data is 1D</span>
582                <span class="c">#else data get place on 2D tab empty tab</span>
583                <span class="n">enable2D</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">get_view_mode</span><span class="p">()</span>
584                <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;Data2D&quot;</span> <span class="ow">and</span> <span class="n">enable2D</span><span class="p">)</span>\
585                <span class="ow">or</span> <span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;Data1D&quot;</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">enable2D</span><span class="p">):</span>
586                    <span class="n">page</span><span class="o">.</span><span class="n">batch_on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_on</span>
587                    <span class="n">page</span><span class="o">.</span><span class="n">_set_save_flag</span><span class="p">(</span><span class="ow">not</span> <span class="n">page</span><span class="o">.</span><span class="n">batch_on</span><span class="p">)</span>
588                    <span class="n">page</span><span class="o">.</span><span class="n">fill_data_combobox</span><span class="p">(</span><span class="n">data_list</span><span class="p">)</span>
589                    <span class="c">#caption = &quot;FitPage&quot; + str(self.fit_page_index)</span>
590                    <span class="bp">self</span><span class="o">.</span><span class="n">SetPageText</span><span class="p">(</span><span class="n">pos</span><span class="p">,</span> <span class="n">page</span><span class="o">.</span><span class="n">window_caption</span><span class="p">)</span>
591                    <span class="bp">self</span><span class="o">.</span><span class="n">SetSelection</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
592                    <span class="k">return</span> <span class="n">page</span>
593        <span class="c">#create new page and add data</span>
594        <span class="n">page</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">add_empty_page</span><span class="p">()</span>
595        <span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetPageIndex</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
596        <span class="n">page</span><span class="o">.</span><span class="n">fill_data_combobox</span><span class="p">(</span><span class="n">data_list</span><span class="p">)</span>
597        <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="p">[</span><span class="n">page</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="n">page</span>
598        <span class="bp">self</span><span class="o">.</span><span class="n">SetSelection</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
599        <span class="k">return</span> <span class="n">page</span>
600       </div>
601    <span class="k">def</span> <span class="nf">_onGetstate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
602        <span class="sd">&quot;&quot;&quot;</span>
603<span class="sd">        copy the state of a page</span>
604<span class="sd">        &quot;&quot;&quot;</span>
605        <span class="n">page</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">page</span>
606        <span class="k">if</span> <span class="n">page</span><span class="o">.</span><span class="n">uid</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">:</span>
607            <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">[</span><span class="n">page</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span><span class="o">.</span><span class="n">appendItem</span><span class="p">(</span><span class="n">page</span><span class="o">.</span><span class="n">createMemento</span><span class="p">())</span>
608           
609    <span class="k">def</span> <span class="nf">_onUndo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
610        <span class="sd">&quot;&quot;&quot;</span>
611<span class="sd">        return the previous state of a given page is available</span>
612<span class="sd">        &quot;&quot;&quot;</span>
613        <span class="n">page</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">page</span>
614        <span class="k">if</span> <span class="n">page</span><span class="o">.</span><span class="n">uid</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">:</span>
615            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">[</span><span class="n">page</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span><span class="o">.</span><span class="n">getCurrentPosition</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
616                <span class="n">state</span> <span class="o">=</span> <span class="bp">None</span>
617            <span class="k">else</span><span class="p">:</span>
618                <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">[</span><span class="n">page</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span><span class="o">.</span><span class="n">getPreviousItem</span><span class="p">()</span>
619                <span class="n">page</span><span class="o">.</span><span class="n">_redo</span><span class="o">.</span><span class="n">Enable</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
620            <span class="n">page</span><span class="o">.</span><span class="n">reset_page</span><span class="p">(</span><span class="n">state</span><span class="p">)</span>
621       
622    <span class="k">def</span> <span class="nf">_onRedo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
623        <span class="sd">&quot;&quot;&quot;</span>
624<span class="sd">        return the next state available</span>
625<span class="sd">        &quot;&quot;&quot;</span>
626        <span class="n">page</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">page</span>
627        <span class="k">if</span> <span class="n">page</span><span class="o">.</span><span class="n">uid</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">:</span>
628            <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">[</span><span class="n">page</span><span class="o">.</span><span class="n">uid</span><span class="p">])</span>
629            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">[</span><span class="n">page</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span><span class="o">.</span><span class="n">getCurrentPosition</span><span class="p">()</span> <span class="o">==</span> <span class="n">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
630                <span class="n">state</span> <span class="o">=</span> <span class="bp">None</span>
631                <span class="n">page</span><span class="o">.</span><span class="n">_redo</span><span class="o">.</span><span class="n">Enable</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
632                <span class="n">page</span><span class="o">.</span><span class="n">_redo</span><span class="o">.</span><span class="n">Enable</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
633            <span class="k">else</span><span class="p">:</span>
634                <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fit_page_name</span><span class="p">[</span><span class="n">page</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span><span class="o">.</span><span class="n">getNextItem</span><span class="p">()</span>
635            <span class="n">page</span><span class="o">.</span><span class="n">reset_page</span><span class="p">(</span><span class="n">state</span><span class="p">)</span>
636                 
637    <span class="k">def</span> <span class="nf">_close_helper</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">selected_page</span><span class="p">):</span>
638        <span class="sd">&quot;&quot;&quot;</span>
639<span class="sd">        Delete the given page from the notebook</span>
640<span class="sd">        &quot;&quot;&quot;</span>
641        <span class="c">#remove hint page</span>
642        <span class="c">#if selected_page == self.hint_page:</span>
643        <span class="c">#    return</span>
644        <span class="c">## removing sim_page</span>
645        <span class="k">if</span> <span class="n">selected_page</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="p">:</span>
646            <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">sim_page</span> <span class="o">=</span> <span class="bp">None</span>
647            <span class="k">return</span>
648        <span class="k">if</span> <span class="n">selected_page</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="p">:</span>
649            <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">batch_page</span> <span class="o">=</span> <span class="bp">None</span>
650            <span class="k">return</span>
651        <span class="sd">&quot;&quot;&quot;</span>
652<span class="sd">        # The below is not working when delete #5 and still have #6.</span>
653<span class="sd">        if selected_page.__class__.__name__ == &quot;FitPage&quot;:</span>
654<span class="sd">            self.fit_page_index -= 1</span>
655<span class="sd">        else:</span>
656<span class="sd">            self.batch_page_index -= 1</span>
657<span class="sd">        &quot;&quot;&quot;</span>
658        <span class="c">## closing other pages</span>
659        <span class="n">state</span> <span class="o">=</span> <span class="n">selected_page</span><span class="o">.</span><span class="n">createMemento</span><span class="p">()</span>
660        <span class="n">page_finder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">get_page_finder</span><span class="p">()</span>
661        <span class="c">## removing fit page</span>
662        <span class="n">data</span> <span class="o">=</span> <span class="n">selected_page</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
663        <span class="c">#Don&#39; t remove plot for 2D</span>
664        <span class="n">flag</span> <span class="o">=</span> <span class="bp">True</span>
665        <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;Data2D&#39;</span><span class="p">:</span>
666            <span class="n">flag</span> <span class="o">=</span> <span class="bp">False</span>
667        <span class="k">if</span> <span class="n">selected_page</span> <span class="ow">in</span> <span class="n">page_finder</span><span class="p">:</span>
668            <span class="c">#Delete the name of the page into the list of open page</span>
669            <span class="k">for</span> <span class="n">uid</span><span class="p">,</span> <span class="nb">list</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
670                <span class="c">#Don&#39;t return any panel is the exact same page is created</span>
671               
672                <span class="k">if</span> <span class="n">flag</span> <span class="ow">and</span> <span class="n">selected_page</span><span class="o">.</span><span class="n">uid</span> <span class="o">==</span> <span class="n">uid</span><span class="p">:</span>
673                    <span class="bp">self</span><span class="o">.</span><span class="n">_manager</span><span class="o">.</span><span class="n">remove_plot</span><span class="p">(</span><span class="n">uid</span><span class="p">,</span> <span class="n">theory</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
674                    <span class="k">break</span>
675            <span class="k">del</span> <span class="n">page_finder</span><span class="p">[</span><span class="n">selected_page</span><span class="p">]</span>
676 
677        <span class="c">#Delete the name of the page into the list of open page</span>
678        <span class="k">for</span> <span class="n">uid</span><span class="p">,</span> <span class="nb">list</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
679            <span class="c">#Don&#39;t return any panel is the exact same page is created</span>
680            <span class="k">if</span> <span class="n">selected_page</span><span class="o">.</span><span class="n">uid</span> <span class="o">==</span> <span class="n">uid</span><span class="p">:</span>
681                <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">opened_pages</span><span class="p">[</span><span class="n">selected_page</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span>
682                <span class="k">break</span>
683        <span class="c">##remove the check box link to the model name of this page (selected_page)</span>
684        <span class="k">try</span><span class="p">:</span>
685            <span class="bp">self</span><span class="o">.</span><span class="n">sim_page</span><span class="o">.</span><span class="n">draw_page</span><span class="p">()</span>
686        <span class="k">except</span><span class="p">:</span>
687            <span class="c">## that page is already deleted no need to remove check box on</span>
688            <span class="c">##non existing page</span>
689            <span class="k">pass</span>
690        <span class="k">try</span><span class="p">:</span>
691            <span class="bp">self</span><span class="o">.</span><span class="n">batch_page</span><span class="o">.</span><span class="n">draw_page</span><span class="p">()</span>
692        <span class="k">except</span><span class="p">:</span>
693            <span class="c">## that page is already deleted no need to remove check box on</span>
694            <span class="c">##non existing page</span>
695            <span class="k">pass</span></div>
696</pre></div>
697
698          </div>
699        </div>
700      </div>
701      <div class="sphinxsidebar">
702        <div class="sphinxsidebarwrapper">
703<div id="searchbox" style="display: none">
704  <h3>Quick search</h3>
705    <form class="search" action="../../../../search.html" method="get">
706      <input type="text" name="q" />
707      <input type="submit" value="Go" />
708      <input type="hidden" name="check_keywords" value="yes" />
709      <input type="hidden" name="area" value="default" />
710    </form>
711    <p class="searchtip" style="font-size: 90%">
712    Enter search terms or a module, class or function name.
713    </p>
714</div>
715<script type="text/javascript">$('#searchbox').show(0);</script>
716        </div>
717      </div>
718      <div class="clearer"></div>
719    </div>
720    <div class="related">
721      <h3>Navigation</h3>
722      <ul>
723        <li class="right" style="margin-right: 10px">
724          <a href="../../../../genindex.html" title="General Index"
725             >index</a></li>
726        <li class="right" >
727          <a href="../../../../py-modindex.html" title="Python Module Index"
728             >modules</a> |</li>
729        <li><a href="../../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
730          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
731          <li><a href="../fitting.html" >sas.perspectives.fitting</a> &raquo;</li> 
732      </ul>
733    </div>
734    <div class="footer">
735        &copy; Copyright 2013, The SasView Project.
736      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
737    </div>
738  </body>
739</html>
Note: See TracBrowser for help on using the repository browser.