235 | | <span class="n">textlist</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">item</span><span class="p">)]</span> |
236 | | <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetItemParent</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> |
237 | | <span class="k">while</span> <span class="n">parent</span><span class="p">:</span> |
238 | | <span class="k">if</span> <span class="n">parent</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">:</span> <span class="k">break</span> |
239 | | <span class="n">textlist</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">parent</span><span class="p">))</span> |
240 | | <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetItemParent</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span> |
241 | | <span class="k">return</span> <span class="n">textlist</span> |
242 | | |
243 | | <div class="viewcode-block" id="G2TreeCtrl.onSelectionChanged"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2TreeCtrl.onSelectionChanged">[docs]</a> <span class="k">def</span> <span class="nf">onSelectionChanged</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
244 | | <span class="sd">'''Log each press on a tree item here. </span> |
245 | | <span class="sd"> '''</span> |
246 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">SelectionChanged</span><span class="p">:</span> |
247 | | <span class="n">textlist</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_getTreeItemsList</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">GetItem</span><span class="p">())</span> |
248 | | <span class="k">if</span> <span class="n">log</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">[</span><span class="s">'Logging'</span><span class="p">]</span> <span class="ow">and</span> <span class="n">event</span><span class="o">.</span><span class="n">GetItem</span><span class="p">()</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">:</span> |
249 | | <span class="n">textlist</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetRelativeHistNum</span><span class="p">(</span><span class="n">textlist</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> |
250 | | <span class="k">if</span> <span class="n">textlist</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">"Phases"</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">textlist</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> |
251 | | <span class="n">textlist</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetRelativePhaseNum</span><span class="p">(</span><span class="n">textlist</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> |
252 | | <span class="n">log</span><span class="o">.</span><span class="n">MakeTreeLog</span><span class="p">(</span><span class="n">textlist</span><span class="p">)</span> |
253 | | <span class="bp">self</span><span class="o">.</span><span class="n">SelectionChanged</span><span class="p">(</span><span class="n">event</span><span class="p">)</span> |
254 | | </div> |
255 | | <div class="viewcode-block" id="G2TreeCtrl.Bind"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2TreeCtrl.Bind">[docs]</a> <span class="k">def</span> <span class="nf">Bind</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">eventtype</span><span class="p">,</span><span class="n">handler</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> |
256 | | <span class="sd">'''Override the Bind() function so that page change events can be trapped</span> |
257 | | <span class="sd"> '''</span> |
258 | | <span class="k">if</span> <span class="n">eventtype</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">EVT_TREE_SEL_CHANGED</span><span class="p">:</span> |
259 | | <span class="bp">self</span><span class="o">.</span><span class="n">SelectionChanged</span> <span class="o">=</span> <span class="n">handler</span> |
260 | | <span class="n">wx</span><span class="o">.</span><span class="n">TreeCtrl</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">eventtype</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">onSelectionChanged</span><span class="p">)</span> |
261 | | <span class="k">return</span> |
262 | | <span class="n">wx</span><span class="o">.</span><span class="n">TreeCtrl</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">eventtype</span><span class="p">,</span><span class="n">handler</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> |
263 | | </div> |
264 | | <div class="viewcode-block" id="G2TreeCtrl.GetItemPyData"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2TreeCtrl.GetItemPyData">[docs]</a> <span class="k">def</span> <span class="nf">GetItemPyData</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="o">*</span><span class="n">args</span><span class="p">,</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> |
265 | | <span class="sd">'''Override the standard method to wrap the contents</span> |
266 | | <span class="sd"> so that the source can be tracked</span> |
267 | | <span class="sd"> '''</span> |
268 | | <span class="n">data</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">GetItemPyData</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> |
269 | | <span class="n">textlist</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_getTreeItemsList</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> |
270 | | <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">dict</span><span class="p">:</span> |
271 | | <span class="k">return</span> <span class="n">log</span><span class="o">.</span><span class="n">dictLogged</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">textlist</span><span class="p">)</span> |
272 | | <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">list</span><span class="p">:</span> |
273 | | <span class="k">return</span> <span class="n">log</span><span class="o">.</span><span class="n">listLogged</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">textlist</span><span class="p">)</span> |
274 | | <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> <span class="c">#N.B. tuples get converted to lists</span> |
275 | | <span class="k">return</span> <span class="n">log</span><span class="o">.</span><span class="n">listLogged</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">data</span><span class="p">),</span><span class="n">textlist</span><span class="p">)</span> |
276 | | <span class="k">return</span> <span class="n">data</span> |
277 | | </div> |
278 | | <div class="viewcode-block" id="G2TreeCtrl.GetRelativeHistNum"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2TreeCtrl.GetRelativeHistNum">[docs]</a> <span class="k">def</span> <span class="nf">GetRelativeHistNum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">histname</span><span class="p">):</span> |
279 | | <span class="sd">'''Returns list with a histogram type and a relative number for that</span> |
280 | | <span class="sd"> histogram, or the original string if not a histogram</span> |
281 | | <span class="sd"> '''</span> |
282 | | <span class="n">histtype</span> <span class="o">=</span> <span class="n">histname</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> |
283 | | <span class="k">if</span> <span class="n">histtype</span> <span class="o">!=</span> <span class="n">histtype</span><span class="o">.</span><span class="n">upper</span><span class="p">():</span> <span class="c"># histograms (only) have a keyword all in caps</span> |
284 | | <span class="k">return</span> <span class="n">histname</span> |
285 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetFirstChild</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">)</span> |
286 | | <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> |
287 | | <span class="k">while</span> <span class="n">item</span><span class="p">:</span> |
288 | | <span class="n">itemtext</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> |
289 | | <span class="k">if</span> <span class="n">itemtext</span> <span class="o">==</span> <span class="n">histname</span><span class="p">:</span> |
290 | | <span class="k">return</span> <span class="n">histtype</span><span class="p">,</span><span class="n">i</span> |
291 | | <span class="k">elif</span> <span class="n">itemtext</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">histtype</span><span class="p">:</span> |
292 | | <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> |
293 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetNextChild</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">,</span> <span class="n">cookie</span><span class="p">)</span> |
294 | | <span class="k">else</span><span class="p">:</span> |
295 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">"Histogram not found: "</span><span class="o">+</span><span class="n">histname</span><span class="p">)</span> |
296 | | </div> |
297 | | <div class="viewcode-block" id="G2TreeCtrl.ConvertRelativeHistNum"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2TreeCtrl.ConvertRelativeHistNum">[docs]</a> <span class="k">def</span> <span class="nf">ConvertRelativeHistNum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">histtype</span><span class="p">,</span><span class="n">histnum</span><span class="p">):</span> |
298 | | <span class="sd">'''Converts a histogram type and relative histogram number to a</span> |
299 | | <span class="sd"> histogram name in the current project</span> |
300 | | <span class="sd"> '''</span> |
301 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetFirstChild</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">)</span> |
302 | | <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> |
303 | | <span class="k">while</span> <span class="n">item</span><span class="p">:</span> |
304 | | <span class="n">itemtext</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> |
305 | | <span class="k">if</span> <span class="n">itemtext</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">histtype</span><span class="p">:</span> |
306 | | <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="n">histnum</span><span class="p">:</span> <span class="k">return</span> <span class="n">itemtext</span> |
307 | | <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> |
308 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetNextChild</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">,</span> <span class="n">cookie</span><span class="p">)</span> |
309 | | <span class="k">else</span><span class="p">:</span> |
310 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">"Histogram #'+str(histnum)+' of type "</span><span class="o">+</span><span class="n">histtype</span><span class="o">+</span><span class="s">' not found'</span><span class="p">)</span> |
311 | | </div> |
312 | | <div class="viewcode-block" id="G2TreeCtrl.GetRelativePhaseNum"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2TreeCtrl.GetRelativePhaseNum">[docs]</a> <span class="k">def</span> <span class="nf">GetRelativePhaseNum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">phasename</span><span class="p">):</span> |
313 | | <span class="sd">'''Returns a phase number if the string matches a phase name</span> |
314 | | <span class="sd"> or else returns the original string</span> |
315 | | <span class="sd"> '''</span> |
316 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetFirstChild</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">)</span> |
317 | | <span class="k">while</span> <span class="n">item</span><span class="p">:</span> |
318 | | <span class="n">itemtext</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> |
319 | | <span class="k">if</span> <span class="n">itemtext</span> <span class="o">==</span> <span class="s">"Phases"</span><span class="p">:</span> |
320 | | <span class="n">parent</span> <span class="o">=</span> <span class="n">item</span> |
321 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetFirstChild</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span> |
322 | | <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> |
323 | | <span class="k">while</span> <span class="n">item</span><span class="p">:</span> |
324 | | <span class="n">itemtext</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> |
325 | | <span class="k">if</span> <span class="n">itemtext</span> <span class="o">==</span> <span class="n">phasename</span><span class="p">:</span> |
326 | | <span class="k">return</span> <span class="n">i</span> |
327 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetNextChild</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">cookie</span><span class="p">)</span> |
328 | | <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> |
329 | | <span class="k">else</span><span class="p">:</span> |
330 | | <span class="k">return</span> <span class="n">phasename</span> <span class="c"># not a phase name</span> |
331 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetNextChild</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">,</span> <span class="n">cookie</span><span class="p">)</span> |
332 | | <span class="k">else</span><span class="p">:</span> |
333 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">"No phases found "</span><span class="p">)</span> |
334 | | </div> |
335 | | <div class="viewcode-block" id="G2TreeCtrl.ConvertRelativePhaseNum"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2TreeCtrl.ConvertRelativePhaseNum">[docs]</a> <span class="k">def</span> <span class="nf">ConvertRelativePhaseNum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">phasenum</span><span class="p">):</span> |
336 | | <span class="sd">'''Converts relative phase number to a phase name in</span> |
337 | | <span class="sd"> the current project</span> |
338 | | <span class="sd"> '''</span> |
339 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetFirstChild</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">)</span> |
340 | | <span class="k">while</span> <span class="n">item</span><span class="p">:</span> |
341 | | <span class="n">itemtext</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> |
342 | | <span class="k">if</span> <span class="n">itemtext</span> <span class="o">==</span> <span class="s">"Phases"</span><span class="p">:</span> |
343 | | <span class="n">parent</span> <span class="o">=</span> <span class="n">item</span> |
344 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetFirstChild</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span> |
345 | | <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> |
346 | | <span class="k">while</span> <span class="n">item</span><span class="p">:</span> |
347 | | <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="n">phasenum</span><span class="p">:</span> |
348 | | <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> |
349 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetNextChild</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">cookie</span><span class="p">)</span> |
350 | | <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> |
351 | | <span class="k">else</span><span class="p">:</span> |
352 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">"Phase "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">phasenum</span><span class="p">)</span><span class="o">+</span><span class="s">" not found"</span><span class="p">)</span> |
353 | | <span class="n">item</span><span class="p">,</span> <span class="n">cookie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetNextChild</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">,</span> <span class="n">cookie</span><span class="p">)</span> |
354 | | <span class="k">else</span><span class="p">:</span> |
355 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">"No phases found "</span><span class="p">)</span> |
356 | | <span class="c">#===========================================================================</span></div></div> |
| 255 | <span class="bp">self</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> |
| 256 | <span class="k">return</span> |
| 257 | |
| 258 | |
| 259 | </div></div> |
374 | | <span class="c">#===========================================================================</span></div></div> |
375 | | <div class="viewcode-block" id="ValidatedTxtCtrl"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ValidatedTxtCtrl">[docs]</a><span class="k">class</span> <span class="nc">ValidatedTxtCtrl</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="p">):</span> |
376 | | <span class="sd">'''Create a TextCtrl widget that uses a validator to prevent the</span> |
377 | | <span class="sd"> entry of inappropriate characters and changes color to highlight</span> |
378 | | <span class="sd"> when invalid input is supplied. As valid values are typed,</span> |
379 | | <span class="sd"> they are placed into the dict or list where the initial value</span> |
380 | | <span class="sd"> came from. The type of the initial value must be int,</span> |
381 | | <span class="sd"> float or str or None (see :obj:`key` and :obj:`typeHint`);</span> |
382 | | <span class="sd"> this type (or the one in :obj:`typeHint`) is preserved.</span> |
383 | | |
384 | | <span class="sd"> Float values can be entered in the TextCtrl as numbers or also</span> |
385 | | <span class="sd"> as algebraic expressions using operators + - / \* () and \*\*,</span> |
386 | | <span class="sd"> in addition pi, sind(), cosd(), tand(), and sqrt() can be used,</span> |
387 | | <span class="sd"> as well as appreviations s, sin, c, cos, t, tan and sq. </span> |
388 | | |
389 | | <span class="sd"> :param wx.Panel parent: name of panel or frame that will be</span> |
390 | | <span class="sd"> the parent to the TextCtrl. Can be None.</span> |
391 | | |
392 | | <span class="sd"> :param dict/list loc: the dict or list with the initial value to be</span> |
393 | | <span class="sd"> placed in the TextCtrl. </span> |
394 | | |
395 | | <span class="sd"> :param int/str key: the dict key or the list index for the value to be</span> |
396 | | <span class="sd"> edited by the TextCtrl. The ``loc[key]`` element must exist, but may</span> |
397 | | <span class="sd"> have value None. If None, the type for the element is taken from</span> |
398 | | <span class="sd"> :obj:`typeHint` and the value for the control is set initially</span> |
399 | | <span class="sd"> blank (and thus invalid.) This is a way to specify a field without a</span> |
400 | | <span class="sd"> default value: a user must set a valid value. </span> |
401 | | <span class="sd"> If the value is not None, it must have a base</span> |
402 | | <span class="sd"> type of int, float, str or unicode; the TextCrtl will be initialized</span> |
403 | | <span class="sd"> from this value.</span> |
404 | | <span class="sd"> </span> |
405 | | <span class="sd"> :param list nDig: number of digits & places ([nDig,nPlc]) after decimal to use</span> |
406 | | <span class="sd"> for display of float. Alternately, None can be specified which causes</span> |
407 | | <span class="sd"> numbers to be displayed with approximately 5 significant figures</span> |
408 | | <span class="sd"> (Default=None).</span> |
409 | | |
410 | | <span class="sd"> :param bool notBlank: if True (default) blank values are invalid</span> |
411 | | <span class="sd"> for str inputs.</span> |
412 | | <span class="sd"> </span> |
413 | | <span class="sd"> :param number min: minimum allowed valid value. If None (default) the</span> |
414 | | <span class="sd"> lower limit is unbounded.</span> |
415 | | |
416 | | <span class="sd"> :param number max: maximum allowed valid value. If None (default) the</span> |
417 | | <span class="sd"> upper limit is unbounded</span> |
418 | | |
419 | | <span class="sd"> :param function OKcontrol: specifies a function or method that will be</span> |
420 | | <span class="sd"> called when the input is validated. The called function is supplied</span> |
421 | | <span class="sd"> with one argument which is False if the TextCtrl contains an invalid</span> |
422 | | <span class="sd"> value and True if the value is valid.</span> |
423 | | <span class="sd"> Note that this function should check all values</span> |
424 | | <span class="sd"> in the dialog when True, since other entries might be invalid.</span> |
425 | | <span class="sd"> The default for this is None, which indicates no function should</span> |
426 | | <span class="sd"> be called.</span> |
427 | | |
428 | | <span class="sd"> :param function OnLeave: specifies a function or method that will be</span> |
429 | | <span class="sd"> called when the focus for the control is lost.</span> |
430 | | <span class="sd"> The called function is supplied with (at present) three keyword arguments:</span> |
431 | | |
432 | | <span class="sd"> * invalid: (*bool*) True if the value for the TextCtrl is invalid</span> |
433 | | <span class="sd"> * value: (*int/float/str*) the value contained in the TextCtrl</span> |
434 | | <span class="sd"> * tc: (*wx.TextCtrl*) the TextCtrl name</span> |
435 | | |
436 | | <span class="sd"> The number of keyword arguments may be increased in the future should needs arise,</span> |
437 | | <span class="sd"> so it is best to code these functions with a \*\*kwargs argument so they will</span> |
438 | | <span class="sd"> continue to run without errors</span> |
439 | | |
440 | | <span class="sd"> The default for OnLeave is None, which indicates no function should</span> |
441 | | <span class="sd"> be called.</span> |
442 | | |
443 | | <span class="sd"> :param type typeHint: the value of typeHint is overrides the initial value</span> |
444 | | <span class="sd"> for the dict/list element ``loc[key]``, if set to </span> |
445 | | <span class="sd"> int or float, which specifies the type for input to the TextCtrl.</span> |
446 | | <span class="sd"> Defaults as None, which is ignored.</span> |
447 | | |
448 | | <span class="sd"> :param bool CIFinput: for str input, indicates that only printable</span> |
449 | | <span class="sd"> ASCII characters may be entered into the TextCtrl. Forces output</span> |
450 | | <span class="sd"> to be ASCII rather than Unicode. For float and int input, allows</span> |
451 | | <span class="sd"> use of a single '?' or '.' character as valid input.</span> |
452 | | |
453 | | <span class="sd"> :param dict OnLeaveArgs: a dict with keyword args that are passed to</span> |
454 | | <span class="sd"> the :attr:`OnLeave` function. Defaults to ``{}``</span> |
455 | | |
456 | | <span class="sd"> :param (other): other optional keyword parameters for the</span> |
457 | | <span class="sd"> wx.TextCtrl widget such as size or style may be specified.</span> |
458 | | |
459 | | <span class="sd"> '''</span> |
460 | | <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">loc</span><span class="p">,</span><span class="n">key</span><span class="p">,</span><span class="n">nDig</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">notBlank</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span><span class="nb">min</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="nb">max</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> |
461 | | <span class="n">OKcontrol</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">OnLeave</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">typeHint</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> |
462 | | <span class="n">CIFinput</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">OnLeaveArgs</span><span class="o">=</span><span class="p">{},</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span> |
463 | | <span class="c"># save passed values needed outside __init__</span> |
464 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span> <span class="o">=</span> <span class="n">loc</span> |
465 | | <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span> |
466 | | <span class="bp">self</span><span class="o">.</span><span class="n">nDig</span> <span class="o">=</span> <span class="n">nDig</span> |
467 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="o">=</span><span class="n">OKcontrol</span> |
468 | | <span class="bp">self</span><span class="o">.</span><span class="n">OnLeave</span> <span class="o">=</span> <span class="n">OnLeave</span> |
469 | | <span class="bp">self</span><span class="o">.</span><span class="n">OnLeaveArgs</span> <span class="o">=</span> <span class="n">OnLeaveArgs</span> |
470 | | <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span> <span class="o">=</span> <span class="n">CIFinput</span> |
471 | | <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">str</span> |
472 | | <span class="c"># initialization</span> |
473 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># indicates if the control has invalid contents</span> |
474 | | <span class="bp">self</span><span class="o">.</span><span class="n">evaluated</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># set to True when the validator recognizes an expression</span> |
475 | | <span class="n">val</span> <span class="o">=</span> <span class="n">loc</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> |
476 | | <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span><span class="nb">int</span><span class="p">)</span> <span class="ow">or</span> <span class="n">typeHint</span> <span class="ow">is</span> <span class="nb">int</span><span class="p">:</span> |
477 | | <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">int</span> |
478 | | <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span> |
479 | | <span class="bp">self</span><span class="p">,</span><span class="n">parent</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> |
480 | | <span class="n">validator</span><span class="o">=</span><span class="n">NumberValidator</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span><span class="n">result</span><span class="o">=</span><span class="n">loc</span><span class="p">,</span><span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> |
481 | | <span class="nb">min</span><span class="o">=</span><span class="nb">min</span><span class="p">,</span><span class="nb">max</span><span class="o">=</span><span class="nb">max</span><span class="p">,</span> |
482 | | <span class="n">OKcontrol</span><span class="o">=</span><span class="n">OKcontrol</span><span class="p">,</span> |
483 | | <span class="n">CIFinput</span><span class="o">=</span><span class="n">CIFinput</span><span class="p">),</span> |
484 | | <span class="o">**</span><span class="n">kw</span><span class="p">)</span> |
485 | | <span class="k">if</span> <span class="n">val</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
486 | | <span class="bp">self</span><span class="o">.</span><span class="n">_setValue</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> |
487 | | <span class="k">else</span><span class="p">:</span> <span class="c"># no default is invalid for a number</span> |
488 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> |
489 | | <span class="bp">self</span><span class="o">.</span><span class="n">_IndicateValidity</span><span class="p">()</span> |
490 | | |
491 | | <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span><span class="nb">float</span><span class="p">)</span> <span class="ow">or</span> <span class="n">typeHint</span> <span class="ow">is</span> <span class="nb">float</span><span class="p">:</span> |
492 | | <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">float</span> |
493 | | <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span> |
494 | | <span class="bp">self</span><span class="p">,</span><span class="n">parent</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> |
495 | | <span class="n">validator</span><span class="o">=</span><span class="n">NumberValidator</span><span class="p">(</span><span class="nb">float</span><span class="p">,</span><span class="n">result</span><span class="o">=</span><span class="n">loc</span><span class="p">,</span><span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> |
496 | | <span class="nb">min</span><span class="o">=</span><span class="nb">min</span><span class="p">,</span><span class="nb">max</span><span class="o">=</span><span class="nb">max</span><span class="p">,</span> |
497 | | <span class="n">OKcontrol</span><span class="o">=</span><span class="n">OKcontrol</span><span class="p">,</span> |
498 | | <span class="n">CIFinput</span><span class="o">=</span><span class="n">CIFinput</span><span class="p">),</span> |
499 | | <span class="o">**</span><span class="n">kw</span><span class="p">)</span> |
500 | | <span class="k">if</span> <span class="n">val</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
501 | | <span class="bp">self</span><span class="o">.</span><span class="n">_setValue</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> |
502 | | <span class="k">else</span><span class="p">:</span> |
503 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> |
504 | | <span class="bp">self</span><span class="o">.</span><span class="n">_IndicateValidity</span><span class="p">()</span> |
505 | | |
506 | | <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span><span class="nb">str</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span><span class="nb">unicode</span><span class="p">):</span> |
507 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span><span class="p">:</span> |
508 | | <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span> |
509 | | <span class="bp">self</span><span class="p">,</span><span class="n">parent</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="n">val</span><span class="p">,</span> |
510 | | <span class="n">validator</span><span class="o">=</span><span class="n">ASCIIValidator</span><span class="p">(</span><span class="n">result</span><span class="o">=</span><span class="n">loc</span><span class="p">,</span><span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">),</span> |
511 | | <span class="o">**</span><span class="n">kw</span><span class="p">)</span> |
512 | | <span class="k">else</span><span class="p">:</span> |
513 | | <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</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="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="n">val</span><span class="p">,</span><span class="o">**</span><span class="n">kw</span><span class="p">)</span> |
514 | | <span class="k">if</span> <span class="n">notBlank</span><span class="p">:</span> |
515 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_CHAR</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">_onStringKey</span><span class="p">)</span> |
516 | | <span class="bp">self</span><span class="o">.</span><span class="n">ShowStringValidity</span><span class="p">()</span> <span class="c"># test if valid input</span> |
517 | | <span class="k">else</span><span class="p">:</span> |
518 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">False</span> |
519 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_CHAR</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">_GetStringValue</span><span class="p">)</span> |
520 | | <span class="k">elif</span> <span class="n">val</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
521 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,(</span><span class="s">"ValidatedTxtCtrl error: value of "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">key</span><span class="p">)</span><span class="o">+</span> |
522 | | <span class="s">" element is None and typeHint not defined as int or float"</span><span class="p">)</span> |
523 | | <span class="k">else</span><span class="p">:</span> |
524 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,(</span><span class="s">"ValidatedTxtCtrl error: Unknown element ("</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">key</span><span class="p">)</span><span class="o">+</span> |
525 | | <span class="s">") type: "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">val</span><span class="p">)))</span> |
526 | | <span class="c"># When the mouse is moved away or the widget loses focus,</span> |
527 | | <span class="c"># display the last saved value, if an expression</span> |
528 | | <span class="c">#self.Bind(wx.EVT_LEAVE_WINDOW, self._onLeaveWindow)</span> |
529 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_TEXT_ENTER</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onLoseFocus</span><span class="p">)</span> |
530 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_KILL_FOCUS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onLoseFocus</span><span class="p">)</span> |
531 | | <span class="c"># patch for wx 2.9 on Mac</span> |
532 | | <span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">__version__</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'.'</span><span class="p">)[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> |
533 | | <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">+</span><span class="nb">int</span><span class="p">(</span><span class="n">j</span><span class="p">)</span><span class="o">/</span><span class="mf">10.</span> <span class="o">></span> <span class="mf">2.8</span> <span class="ow">and</span> <span class="s">'wxOSX'</span> <span class="ow">in</span> <span class="n">wx</span><span class="o">.</span><span class="n">PlatformInfo</span><span class="p">:</span> |
534 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_KEY_DOWN</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnKeyDown</span><span class="p">)</span> |
535 | | |
536 | | <span class="k">def</span> <span class="nf">SetValue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">val</span><span class="p">):</span> |
537 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># note that this bypasses formatting</span> |
538 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> |
539 | | <span class="n">log</span><span class="o">.</span><span class="n">LogVarChange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span> |
540 | | <span class="bp">self</span><span class="o">.</span><span class="n">_setValue</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> |
541 | | |
542 | | <span class="k">def</span> <span class="nf">_setValue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">val</span><span class="p">):</span> |
543 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">False</span> |
544 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="nb">int</span><span class="p">:</span> |
545 | | <span class="k">try</span><span class="p">:</span> |
546 | | <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="o">!=</span> <span class="n">val</span><span class="p">:</span> |
547 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> |
548 | | <span class="k">else</span><span class="p">:</span> |
549 | | <span class="n">val</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> |
550 | | <span class="k">except</span><span class="p">:</span> |
551 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span> <span class="ow">and</span> <span class="p">(</span><span class="n">val</span> <span class="o">==</span> <span class="s">'?'</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s">'.'</span><span class="p">):</span> |
552 | | <span class="k">pass</span> |
553 | | <span class="k">else</span><span class="p">:</span> |
554 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> |
555 | | <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> |
556 | | <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="nb">float</span><span class="p">:</span> |
557 | | <span class="k">try</span><span class="p">:</span> |
558 | | <span class="n">val</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="c"># convert strings, if needed</span> |
559 | | <span class="k">except</span><span class="p">:</span> |
560 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span> <span class="ow">and</span> <span class="p">(</span><span class="n">val</span> <span class="o">==</span> <span class="s">'?'</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s">'.'</span><span class="p">):</span> |
561 | | <span class="k">pass</span> |
562 | | <span class="k">else</span><span class="p">:</span> |
563 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> |
564 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">nDig</span><span class="p">:</span> |
565 | | <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">G2py3</span><span class="o">.</span><span class="n">FormatValue</span><span class="p">(</span><span class="n">val</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">nDig</span><span class="p">)))</span> |
566 | | <span class="k">else</span><span class="p">:</span> |
567 | | <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">G2py3</span><span class="o">.</span><span class="n">FormatSigFigs</span><span class="p">(</span><span class="n">val</span><span class="p">))</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="s">'0'</span><span class="p">))</span> |
568 | | <span class="k">else</span><span class="p">:</span> |
569 | | <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> |
570 | | <span class="bp">self</span><span class="o">.</span><span class="n">ShowStringValidity</span><span class="p">()</span> <span class="c"># test if valid input</span> |
571 | | <span class="k">return</span> |
572 | | |
573 | | <span class="bp">self</span><span class="o">.</span><span class="n">_IndicateValidity</span><span class="p">()</span> |
574 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">:</span> |
575 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span><span class="p">)</span> |
576 | | |
577 | | <div class="viewcode-block" id="ValidatedTxtCtrl.OnKeyDown"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ValidatedTxtCtrl.OnKeyDown">[docs]</a> <span class="k">def</span> <span class="nf">OnKeyDown</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
578 | | <span class="s">'Special callback for wx 2.9+ on Mac where backspace is not processed by validator'</span> |
579 | | <span class="n">key</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetKeyCode</span><span class="p">()</span> |
580 | | <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">WXK_BACK</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_DELETE</span><span class="p">]:</span> |
581 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">Validator</span><span class="p">:</span> <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">Validator</span><span class="o">.</span><span class="n">TestValid</span><span class="p">,</span><span class="bp">self</span><span class="p">)</span> |
582 | | <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_RETURN</span><span class="p">:</span> |
583 | | <span class="bp">self</span><span class="o">.</span><span class="n">_onLoseFocus</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> |
584 | | <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> |
585 | | </div> |
586 | | <span class="k">def</span> <span class="nf">_onStringKey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
587 | | <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> |
588 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> <span class="c"># check for validity after processing the keystroke</span> |
589 | | <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">ShowStringValidity</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span> <span class="c"># was invalid</span> |
590 | | <span class="k">else</span><span class="p">:</span> |
591 | | <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">ShowStringValidity</span><span class="p">,</span><span class="bp">False</span><span class="p">)</span> <span class="c"># was valid</span> |
592 | | |
593 | | <span class="k">def</span> <span class="nf">_IndicateValidity</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
594 | | <span class="s">'Set the control colors to show invalid input'</span> |
595 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> |
596 | | <span class="bp">self</span><span class="o">.</span><span class="n">SetForegroundColour</span><span class="p">(</span><span class="s">"red"</span><span class="p">)</span> |
597 | | <span class="bp">self</span><span class="o">.</span><span class="n">SetBackgroundColour</span><span class="p">(</span><span class="s">"yellow"</span><span class="p">)</span> |
598 | | <span class="bp">self</span><span class="o">.</span><span class="n">SetFocus</span><span class="p">()</span> |
599 | | <span class="bp">self</span><span class="o">.</span><span class="n">Refresh</span><span class="p">()</span> |
600 | | <span class="k">else</span><span class="p">:</span> <span class="c"># valid input</span> |
601 | | <span class="bp">self</span><span class="o">.</span><span class="n">SetBackgroundColour</span><span class="p">(</span> |
602 | | <span class="n">wx</span><span class="o">.</span><span class="n">SystemSettings_GetColour</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">SYS_COLOUR_WINDOW</span><span class="p">))</span> |
603 | | <span class="bp">self</span><span class="o">.</span><span class="n">SetForegroundColour</span><span class="p">(</span><span class="s">"black"</span><span class="p">)</span> |
604 | | <span class="bp">self</span><span class="o">.</span><span class="n">Refresh</span><span class="p">()</span> |
605 | | |
606 | | <div class="viewcode-block" id="ValidatedTxtCtrl.ShowStringValidity"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ValidatedTxtCtrl.ShowStringValidity">[docs]</a> <span class="k">def</span> <span class="nf">ShowStringValidity</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">previousInvalid</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span> |
607 | | <span class="sd">'''Check if input is valid. Anytime the input is</span> |
608 | | <span class="sd"> invalid, call self.OKcontrol (if defined) because it is fast.</span> |
609 | | <span class="sd"> If valid, check for any other invalid entries only when</span> |
610 | | <span class="sd"> changing from invalid to valid, since that is slower.</span> |
611 | | <span class="sd"> </span> |
612 | | <span class="sd"> :param bool previousInvalid: True if the TextCtrl contents were</span> |
613 | | <span class="sd"> invalid prior to the current change.</span> |
614 | | <span class="sd"> </span> |
615 | | <span class="sd"> '''</span> |
616 | | <span class="n">val</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> |
617 | | <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">val</span> |
618 | | <span class="bp">self</span><span class="o">.</span><span class="n">_IndicateValidity</span><span class="p">()</span> |
619 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> |
620 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">:</span> |
621 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> |
622 | | <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span> <span class="ow">and</span> <span class="n">previousInvalid</span><span class="p">:</span> |
623 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span> |
624 | | <span class="c"># always store the result</span> |
625 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span><span class="p">:</span> <span class="c"># for CIF make results ASCII</span> |
626 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'ascii'</span><span class="p">,</span><span class="s">'replace'</span><span class="p">)</span> |
627 | | <span class="k">else</span><span class="p">:</span> |
628 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> |
629 | | <span class="n">log</span><span class="o">.</span><span class="n">LogVarChange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span> |
630 | | </div> |
631 | | <span class="k">def</span> <span class="nf">_GetStringValue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
632 | | <span class="sd">'''Get string input and store.</span> |
633 | | <span class="sd"> '''</span> |
634 | | <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> <span class="c"># process keystroke</span> |
635 | | <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">_SaveStringValue</span><span class="p">)</span> |
636 | | |
637 | | <span class="k">def</span> <span class="nf">_SaveStringValue</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
638 | | <span class="n">val</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> |
639 | | <span class="c"># always store the result</span> |
640 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span><span class="p">:</span> <span class="c"># for CIF make results ASCII</span> |
641 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'ascii'</span><span class="p">,</span><span class="s">'replace'</span><span class="p">)</span> |
642 | | <span class="k">else</span><span class="p">:</span> |
643 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> |
644 | | <span class="n">log</span><span class="o">.</span><span class="n">LogVarChange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span> |
645 | | |
646 | | <span class="k">def</span> <span class="nf">_onLoseFocus</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
647 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluated</span><span class="p">:</span> |
648 | | <span class="bp">self</span><span class="o">.</span><span class="n">EvaluateExpression</span><span class="p">()</span> |
649 | | <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># show formatted result, as Bob wants</span> |
650 | | <span class="bp">self</span><span class="o">.</span><span class="n">_setValue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">])</span> |
651 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnLeave</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnLeave</span><span class="p">(</span><span class="n">invalid</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">invalid</span><span class="p">,</span> |
652 | | <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">],</span> |
653 | | <span class="n">tc</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> |
654 | | <span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">OnLeaveArgs</span><span class="p">)</span> |
655 | | <span class="k">if</span> <span class="n">event</span><span class="p">:</span> <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> |
656 | | |
657 | | <div class="viewcode-block" id="ValidatedTxtCtrl.EvaluateExpression"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ValidatedTxtCtrl.EvaluateExpression">[docs]</a> <span class="k">def</span> <span class="nf">EvaluateExpression</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
658 | | <span class="sd">'''Show the computed value when an expression is entered to the TextCtrl</span> |
659 | | <span class="sd"> Make sure that the number fits by truncating decimal places and switching</span> |
660 | | <span class="sd"> to scientific notation, as needed. </span> |
661 | | <span class="sd"> Called on loss of focus, enter, etc..</span> |
662 | | <span class="sd"> '''</span> |
663 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> <span class="k">return</span> <span class="c"># don't substitute for an invalid expression</span> |
664 | | <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluated</span><span class="p">:</span> <span class="k">return</span> <span class="c"># true when an expression is evaluated</span> |
665 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># retrieve the stored result</span> |
666 | | <span class="bp">self</span><span class="o">.</span><span class="n">_setValue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">])</span> |
667 | | <span class="bp">self</span><span class="o">.</span><span class="n">evaluated</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># expression has been recast as value, reset flag</span> |
668 | | </div></div> |
669 | | <div class="viewcode-block" id="NumberValidator"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.NumberValidator">[docs]</a><span class="k">class</span> <span class="nc">NumberValidator</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">PyValidator</span><span class="p">):</span> |
670 | | <span class="sd">'''A validator to be used with a TextCtrl to prevent</span> |
671 | | <span class="sd"> entering characters other than digits, signs, and for float</span> |
672 | | <span class="sd"> input, a period and exponents.</span> |
673 | | <span class="sd"> </span> |
674 | | <span class="sd"> The value is checked for validity after every keystroke</span> |
675 | | <span class="sd"> If an invalid number is entered, the box is highlighted.</span> |
676 | | <span class="sd"> If the number is valid, it is saved in result[key]</span> |
677 | | |
678 | | <span class="sd"> :param type typ: the base data type. Must be int or float.</span> |
679 | | |
680 | | <span class="sd"> :param bool positiveonly: If True, negative integers are not allowed</span> |
681 | | <span class="sd"> (default False). This prevents the + or - keys from being pressed.</span> |
682 | | <span class="sd"> Used with typ=int; ignored for typ=float.</span> |
683 | | |
684 | | <span class="sd"> :param number min: Minimum allowed value. If None (default) the</span> |
685 | | <span class="sd"> lower limit is unbounded</span> |
686 | | |
687 | | <span class="sd"> :param number max: Maximum allowed value. If None (default) the</span> |
688 | | <span class="sd"> upper limit is unbounded</span> |
689 | | <span class="sd"> </span> |
690 | | <span class="sd"> :param dict/list result: List or dict where value should be placed when valid</span> |
691 | | |
692 | | <span class="sd"> :param any key: key to use for result (int for list)</span> |
693 | | |
694 | | <span class="sd"> :param function OKcontrol: function or class method to control</span> |
695 | | <span class="sd"> an OK button for a window. </span> |
696 | | <span class="sd"> Ignored if None (default)</span> |
697 | | |
698 | | <span class="sd"> :param bool CIFinput: allows use of a single '?' or '.' character</span> |
699 | | <span class="sd"> as valid input.</span> |
700 | | <span class="sd"> </span> |
701 | | <span class="sd"> '''</span> |
702 | | <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">typ</span><span class="p">,</span> <span class="n">positiveonly</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> |
703 | | <span class="n">result</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">OKcontrol</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">CIFinput</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> |
704 | | <span class="s">'Create the validator'</span> |
705 | | <span class="n">wx</span><span class="o">.</span><span class="n">PyValidator</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> |
706 | | <span class="c"># save passed parameters</span> |
707 | | <span class="bp">self</span><span class="o">.</span><span class="n">typ</span> <span class="o">=</span> <span class="n">typ</span> |
708 | | <span class="bp">self</span><span class="o">.</span><span class="n">positiveonly</span> <span class="o">=</span> <span class="n">positiveonly</span> |
709 | | <span class="bp">self</span><span class="o">.</span><span class="n">min</span> <span class="o">=</span> <span class="nb">min</span> |
710 | | <span class="bp">self</span><span class="o">.</span><span class="n">max</span> <span class="o">=</span> <span class="nb">max</span> |
711 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span> <span class="o">=</span> <span class="n">result</span> |
712 | | <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span> |
713 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span> <span class="o">=</span> <span class="n">OKcontrol</span> |
714 | | <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span> <span class="o">=</span> <span class="n">CIFinput</span> |
715 | | <span class="c"># set allowed keys by data type</span> |
716 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_CHAR</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnChar</span><span class="p">)</span> |
717 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">typ</span> <span class="o">==</span> <span class="nb">int</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">positiveonly</span><span class="p">:</span> |
718 | | <span class="bp">self</span><span class="o">.</span><span class="n">validchars</span> <span class="o">=</span> <span class="s">'0123456789'</span> |
719 | | <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">typ</span> <span class="o">==</span> <span class="nb">int</span><span class="p">:</span> |
720 | | <span class="bp">self</span><span class="o">.</span><span class="n">validchars</span> <span class="o">=</span> <span class="s">'0123456789+-'</span> |
721 | | <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">typ</span> <span class="o">==</span> <span class="nb">float</span><span class="p">:</span> |
722 | | <span class="c"># allow for above and sind, cosd, sqrt, tand, pi, and abbreviations</span> |
723 | | <span class="c"># also addition, subtraction, division, multiplication, exponentiation</span> |
724 | | <span class="bp">self</span><span class="o">.</span><span class="n">validchars</span> <span class="o">=</span> <span class="s">'0123456789.-+eE/cosindcqrtap()*'</span> |
725 | | <span class="k">else</span><span class="p">:</span> |
726 | | <span class="bp">self</span><span class="o">.</span><span class="n">validchars</span> <span class="o">=</span> <span class="bp">None</span> |
727 | | <span class="k">return</span> |
728 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span><span class="p">:</span> |
729 | | <span class="bp">self</span><span class="o">.</span><span class="n">validchars</span> <span class="o">+=</span> <span class="s">'?.'</span> |
730 | | <div class="viewcode-block" id="NumberValidator.Clone"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.NumberValidator.Clone">[docs]</a> <span class="k">def</span> <span class="nf">Clone</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
731 | | <span class="s">'Create a copy of the validator, a strange, but required component'</span> |
732 | | <span class="k">return</span> <span class="n">NumberValidator</span><span class="p">(</span><span class="n">typ</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">typ</span><span class="p">,</span> |
733 | | <span class="n">positiveonly</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">positiveonly</span><span class="p">,</span> |
734 | | <span class="nb">min</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">min</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">max</span><span class="p">,</span> |
735 | | <span class="n">result</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> |
736 | | <span class="n">OKcontrol</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">,</span> |
737 | | <span class="n">CIFinput</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span><span class="p">)</span></div> |
738 | | <div class="viewcode-block" id="NumberValidator.TransferToWindow"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.NumberValidator.TransferToWindow">[docs]</a> <span class="k">def</span> <span class="nf">TransferToWindow</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
739 | | <span class="s">'Needed by validator, strange, but required component'</span> |
740 | | <span class="k">return</span> <span class="bp">True</span> <span class="c"># Prevent wxDialog from complaining.</span></div> |
741 | | <div class="viewcode-block" id="NumberValidator.TransferFromWindow"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.NumberValidator.TransferFromWindow">[docs]</a> <span class="k">def</span> <span class="nf">TransferFromWindow</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
742 | | <span class="s">'Needed by validator, strange, but required component'</span> |
743 | | <span class="k">return</span> <span class="bp">True</span> <span class="c"># Prevent wxDialog from complaining.</span></div> |
744 | | <div class="viewcode-block" id="NumberValidator.TestValid"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.NumberValidator.TestValid">[docs]</a> <span class="k">def</span> <span class="nf">TestValid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">tc</span><span class="p">):</span> |
745 | | <span class="sd">'''Check if the value is valid by casting the input string</span> |
746 | | <span class="sd"> into the current type.</span> |
747 | | |
748 | | <span class="sd"> Set the invalid variable in the TextCtrl object accordingly.</span> |
749 | | |
750 | | <span class="sd"> If the value is valid, save it in the dict/list where</span> |
751 | | <span class="sd"> the initial value was stored, if appropriate. </span> |
752 | | |
753 | | <span class="sd"> :param wx.TextCtrl tc: A reference to the TextCtrl that the validator</span> |
754 | | <span class="sd"> is associated with.</span> |
755 | | <span class="sd"> '''</span> |
756 | | <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># assume valid</span> |
757 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CIFinput</span><span class="p">:</span> |
758 | | <span class="n">val</span> <span class="o">=</span> <span class="n">tc</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> |
759 | | <span class="k">if</span> <span class="n">val</span> <span class="o">==</span> <span class="s">'?'</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s">'.'</span><span class="p">:</span> |
760 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> |
761 | | <span class="n">log</span><span class="o">.</span><span class="n">LogVarChange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span> |
762 | | <span class="k">return</span> |
763 | | <span class="k">try</span><span class="p">:</span> |
764 | | <span class="n">val</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">typ</span><span class="p">(</span><span class="n">tc</span><span class="o">.</span><span class="n">GetValue</span><span class="p">())</span> |
765 | | <span class="k">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">SyntaxError</span><span class="p">)</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> |
766 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">typ</span> <span class="ow">is</span> <span class="nb">float</span><span class="p">:</span> <span class="c"># for float values, see if an expression can be evaluated</span> |
767 | | <span class="n">val</span> <span class="o">=</span> <span class="n">G2py3</span><span class="o">.</span><span class="n">FormulaEval</span><span class="p">(</span><span class="n">tc</span><span class="o">.</span><span class="n">GetValue</span><span class="p">())</span> |
768 | | <span class="k">if</span> <span class="n">val</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
769 | | <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> |
770 | | <span class="k">return</span> |
771 | | <span class="k">else</span><span class="p">:</span> |
772 | | <span class="n">tc</span><span class="o">.</span><span class="n">evaluated</span> <span class="o">=</span> <span class="bp">True</span> |
773 | | <span class="k">else</span><span class="p">:</span> |
774 | | <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> |
775 | | <span class="k">return</span> |
776 | | <span class="c"># if self.max != None and self.typ == int:</span> |
777 | | <span class="c"># if val > self.max:</span> |
778 | | <span class="c"># tc.invalid = True</span> |
779 | | <span class="c"># if self.min != None and self.typ == int:</span> |
780 | | <span class="c"># if val < self.min:</span> |
781 | | <span class="c"># tc.invalid = True # invalid</span> |
782 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span> |
783 | | <span class="k">if</span> <span class="n">val</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">max</span><span class="p">:</span> |
784 | | <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> |
785 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">min</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span> |
786 | | <span class="k">if</span> <span class="n">val</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">min</span><span class="p">:</span> |
787 | | <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># invalid</span> |
788 | | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> |
789 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> |
790 | | <span class="n">log</span><span class="o">.</span><span class="n">LogVarChange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span> |
791 | | </div> |
792 | | <div class="viewcode-block" id="NumberValidator.ShowValidity"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.NumberValidator.ShowValidity">[docs]</a> <span class="k">def</span> <span class="nf">ShowValidity</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">tc</span><span class="p">):</span> |
793 | | <span class="sd">'''Set the control colors to show invalid input</span> |
794 | | |
795 | | <span class="sd"> :param wx.TextCtrl tc: A reference to the TextCtrl that the validator</span> |
796 | | <span class="sd"> is associated with.</span> |
797 | | |
798 | | <span class="sd"> '''</span> |
799 | | <span class="k">if</span> <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> |
800 | | <span class="n">tc</span><span class="o">.</span><span class="n">SetForegroundColour</span><span class="p">(</span><span class="s">"red"</span><span class="p">)</span> |
801 | | <span class="n">tc</span><span class="o">.</span><span class="n">SetBackgroundColour</span><span class="p">(</span><span class="s">"yellow"</span><span class="p">)</span> |
802 | | <span class="n">tc</span><span class="o">.</span><span class="n">SetFocus</span><span class="p">()</span> |
803 | | <span class="n">tc</span><span class="o">.</span><span class="n">Refresh</span><span class="p">()</span> |
804 | | <span class="k">return</span> <span class="bp">False</span> |
805 | | <span class="k">else</span><span class="p">:</span> <span class="c"># valid input</span> |
806 | | <span class="n">tc</span><span class="o">.</span><span class="n">SetBackgroundColour</span><span class="p">(</span> |
807 | | <span class="n">wx</span><span class="o">.</span><span class="n">SystemSettings_GetColour</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">SYS_COLOUR_WINDOW</span><span class="p">))</span> |
808 | | <span class="n">tc</span><span class="o">.</span><span class="n">SetForegroundColour</span><span class="p">(</span><span class="s">"black"</span><span class="p">)</span> |
809 | | <span class="n">tc</span><span class="o">.</span><span class="n">Refresh</span><span class="p">()</span> |
810 | | <span class="k">return</span> <span class="bp">True</span> |
811 | | </div> |
812 | | <div class="viewcode-block" id="NumberValidator.CheckInput"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.NumberValidator.CheckInput">[docs]</a> <span class="k">def</span> <span class="nf">CheckInput</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">previousInvalid</span><span class="p">):</span> |
813 | | <span class="sd">'''called to test every change to the TextCtrl for validity and</span> |
814 | | <span class="sd"> to change the appearance of the TextCtrl</span> |
815 | | |
816 | | <span class="sd"> Anytime the input is invalid, call self.OKcontrol</span> |
817 | | <span class="sd"> (if defined) because it is fast. </span> |
818 | | <span class="sd"> If valid, check for any other invalid entries only when</span> |
819 | | <span class="sd"> changing from invalid to valid, since that is slower.</span> |
820 | | |
821 | | <span class="sd"> :param bool previousInvalid: True if the TextCtrl contents were</span> |
822 | | <span class="sd"> invalid prior to the current change.</span> |
823 | | <span class="sd"> '''</span> |
824 | | <span class="n">tc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetWindow</span><span class="p">()</span> |
825 | | <span class="bp">self</span><span class="o">.</span><span class="n">TestValid</span><span class="p">(</span><span class="n">tc</span><span class="p">)</span> |
826 | | <span class="bp">self</span><span class="o">.</span><span class="n">ShowValidity</span><span class="p">(</span><span class="n">tc</span><span class="p">)</span> |
827 | | <span class="c"># if invalid</span> |
828 | | <span class="k">if</span> <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">:</span> |
829 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> |
830 | | <span class="k">if</span> <span class="ow">not</span> <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span> <span class="ow">and</span> <span class="n">previousInvalid</span><span class="p">:</span> |
831 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKcontrol</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span> |
832 | | </div> |
833 | | <div class="viewcode-block" id="NumberValidator.OnChar"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.NumberValidator.OnChar">[docs]</a> <span class="k">def</span> <span class="nf">OnChar</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> |
834 | | <span class="sd">'''Called each type a key is pressed</span> |
835 | | <span class="sd"> ignores keys that are not allowed for int and float types</span> |
836 | | <span class="sd"> '''</span> |
837 | | <span class="n">key</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetKeyCode</span><span class="p">()</span> |
838 | | <span class="n">tc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetWindow</span><span class="p">()</span> |
839 | | <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_RETURN</span><span class="p">:</span> |
840 | | <span class="k">if</span> <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> |
841 | | <span class="bp">self</span><span class="o">.</span><span class="n">CheckInput</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span> |
842 | | <span class="k">else</span><span class="p">:</span> |
843 | | <span class="bp">self</span><span class="o">.</span><span class="n">CheckInput</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> |
844 | | <span class="k">return</span> |
845 | | <span class="k">if</span> <span class="n">key</span> <span class="o"><</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_SPACE</span> <span class="ow">or</span> <span class="n">key</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_DELETE</span> <span class="ow">or</span> <span class="n">key</span> <span class="o">></span> <span class="mi">255</span><span class="p">:</span> <span class="c"># control characters get processed</span> |
846 | | <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> |
847 | | <span class="k">if</span> <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> |
848 | | <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">CheckInput</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span> |
849 | | <span class="k">else</span><span class="p">:</span> |
850 | | <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">CheckInput</span><span class="p">,</span><span class="bp">False</span><span class="p">)</span> |
851 | | <span class="k">return</span> |
852 | | <span class="k">elif</span> <span class="nb">chr</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">validchars</span><span class="p">:</span> <span class="c"># valid char pressed?</span> |
853 | | <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> |
854 | | <span class="k">if</span> <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> |
855 | | <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">CheckInput</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span> |
856 | | <span class="k">else</span><span class="p">:</span> |
857 | | <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">CheckInput</span><span class="p">,</span><span class="bp">False</span><span class="p">)</span> |
858 | | <span class="k">return</span> |
859 | | <span class="k">if</span> <span class="ow">not</span> <span class="n">wx</span><span class="o">.</span><span class="n">Validator_IsSilent</span><span class="p">():</span> <span class="n">wx</span><span class="o">.</span><span class="n">Bell</span><span class="p">()</span> |
860 | | <span class="k">return</span> <span class="c"># Returning without calling event.Skip, which eats the keystroke</span> |
861 | | |
862 | | <span class="c">################################################################################</span></div></div> |
863 | | <div class="viewcode-block" id="ASCIIValidator"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ASCIIValidator">[docs]</a><span class="k">class</span> <span class="nc">ASCIIValidator</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">PyValidator</span><span class="p">):</span> |
864 | | <span class="sd">'''A validator to be used with a TextCtrl to prevent</span> |
865 | | <span class="sd"> entering characters other than ASCII characters.</span> |
866 | | <span class="sd"> </span> |
867 | | <span class="sd"> The value is checked for validity after every keystroke</span> |
868 | | <span class="sd"> If an invalid number is entered, the box is highlighted.</span> |
869 | | <span class="sd"> If the number is valid, it is saved in result[key]</span> |
870 | | |
871 | | <span class="sd"> :param dict/list result: List or dict where value should be placed when valid</span> |
872 | | |
873 | | <span class="sd"> :param any key: key to use for result (int for list)</span> |
874 | | |
875 | | <span class="sd"> '''</span> |
876 | | <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">result</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> |
877 | | <span class="s">'Create the validator'</span> |
878 | | <span class="kn">import</span> <span class="nn">string</span> |
879 | | <span class="n">wx</span><span class="o">.</span><span class="n">PyValidator</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> |
880 | | <span class="c"># save passed parameters</span> |
881 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span> <span class="o">=</span> <span class="n">result</span> |
882 | | <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span> |
883 | | <span class="bp">self</span><span class="o">.</span><span class="n">validchars</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">ascii_letters</span> <span class="o">+</span> <span class="n">string</span><span class="o">.</span><span class="n">digits</span> <span class="o">+</span> <span class="n">string</span><span class="o">.</span><span class="n">punctuation</span> <span class="o">+</span> <span class="n">string</span><span class="o">.</span><span class="n">whitespace</span> |
884 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_CHAR</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnChar</span><span class="p">)</span> |
885 | | <div class="viewcode-block" id="ASCIIValidator.Clone"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ASCIIValidator.Clone">[docs]</a> <span class="k">def</span> <span class="nf">Clone</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
886 | | <span class="s">'Create a copy of the validator, a strange, but required component'</span> |
887 | | <span class="k">return</span> <span class="n">ASCIIValidator</span><span class="p">(</span><span class="n">result</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span> |
888 | | <span class="n">tc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetWindow</span><span class="p">()</span> |
889 | | <span class="n">tc</span><span class="o">.</span><span class="n">invalid</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># make sure the validity flag is defined in parent</span></div> |
890 | | <div class="viewcode-block" id="ASCIIValidator.TransferToWindow"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ASCIIValidator.TransferToWindow">[docs]</a> <span class="k">def</span> <span class="nf">TransferToWindow</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
891 | | <span class="s">'Needed by validator, strange, but required component'</span> |
892 | | <span class="k">return</span> <span class="bp">True</span> <span class="c"># Prevent wxDialog from complaining.</span></div> |
893 | | <div class="viewcode-block" id="ASCIIValidator.TransferFromWindow"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ASCIIValidator.TransferFromWindow">[docs]</a> <span class="k">def</span> <span class="nf">TransferFromWindow</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
894 | | <span class="s">'Needed by validator, strange, but required component'</span> |
895 | | <span class="k">return</span> <span class="bp">True</span> <span class="c"># Prevent wxDialog from complaining.</span></div> |
896 | | <div class="viewcode-block" id="ASCIIValidator.TestValid"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ASCIIValidator.TestValid">[docs]</a> <span class="k">def</span> <span class="nf">TestValid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">tc</span><span class="p">):</span> |
897 | | <span class="sd">'''Check if the value is valid by casting the input string</span> |
898 | | <span class="sd"> into ASCII. </span> |
899 | | |
900 | | <span class="sd"> Save it in the dict/list where the initial value was stored</span> |
901 | | |
902 | | <span class="sd"> :param wx.TextCtrl tc: A reference to the TextCtrl that the validator</span> |
903 | | <span class="sd"> is associated with.</span> |
904 | | <span class="sd"> '''</span> |
905 | | <span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">tc</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'ascii'</span><span class="p">,</span><span class="s">'replace'</span><span class="p">)</span> |
906 | | <span class="n">log</span><span class="o">.</span><span class="n">LogVarChange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span> |
907 | | </div> |
908 | | <div class="viewcode-block" id="ASCIIValidator.OnChar"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ASCIIValidator.OnChar">[docs]</a> <span class="k">def</span> <span class="nf">OnChar</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> |
909 | | <span class="sd">'''Called each type a key is pressed</span> |
910 | | <span class="sd"> ignores keys that are not allowed for int and float types</span> |
911 | | <span class="sd"> '''</span> |
912 | | <span class="n">key</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetKeyCode</span><span class="p">()</span> |
913 | | <span class="n">tc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetWindow</span><span class="p">()</span> |
914 | | <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_RETURN</span><span class="p">:</span> |
915 | | <span class="bp">self</span><span class="o">.</span><span class="n">TestValid</span><span class="p">(</span><span class="n">tc</span><span class="p">)</span> |
916 | | <span class="k">return</span> |
917 | | <span class="k">if</span> <span class="n">key</span> <span class="o"><</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_SPACE</span> <span class="ow">or</span> <span class="n">key</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_DELETE</span> <span class="ow">or</span> <span class="n">key</span> <span class="o">></span> <span class="mi">255</span><span class="p">:</span> <span class="c"># control characters get processed</span> |
918 | | <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> |
919 | | <span class="bp">self</span><span class="o">.</span><span class="n">TestValid</span><span class="p">(</span><span class="n">tc</span><span class="p">)</span> |
920 | | <span class="k">return</span> |
921 | | <span class="k">elif</span> <span class="nb">chr</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">validchars</span><span class="p">:</span> <span class="c"># valid char pressed?</span> |
922 | | <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> |
923 | | <span class="bp">self</span><span class="o">.</span><span class="n">TestValid</span><span class="p">(</span><span class="n">tc</span><span class="p">)</span> |
924 | | <span class="k">return</span> |
925 | | <span class="k">if</span> <span class="ow">not</span> <span class="n">wx</span><span class="o">.</span><span class="n">Validator_IsSilent</span><span class="p">():</span> |
926 | | <span class="n">wx</span><span class="o">.</span><span class="n">Bell</span><span class="p">()</span> |
927 | | <span class="k">return</span> <span class="c"># Returning without calling event.Skip, which eats the keystroke</span> |
| 283 | |
| 284 | <span class="c">################################################################################</span> |
1076 | | <span class="c">################################################################################ </span></div> |
1077 | | <div class="viewcode-block" id="CallScrolledMultiEditor"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.CallScrolledMultiEditor">[docs]</a><span class="k">def</span> <span class="nf">CallScrolledMultiEditor</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span><span class="n">dictlst</span><span class="p">,</span><span class="n">elemlst</span><span class="p">,</span><span class="n">prelbl</span><span class="o">=</span><span class="p">[],</span><span class="n">postlbl</span><span class="o">=</span><span class="p">[],</span> |
1078 | | <span class="n">title</span><span class="o">=</span><span class="s">'Edit items'</span><span class="p">,</span><span class="n">header</span><span class="o">=</span><span class="s">''</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">250</span><span class="p">),</span> |
1079 | | <span class="n">CopyButton</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span> |
1080 | | <span class="sd">'''Shell routine to call a ScrolledMultiEditor dialog. See</span> |
1081 | | <span class="sd"> :class:`ScrolledMultiEditor` for parameter definitions.</span> |
1082 | | |
1083 | | <span class="sd"> :returns: True if the OK button is pressed; False if the window is closed</span> |
1084 | | <span class="sd"> with the system menu or the Cancel button.</span> |
1085 | | |
1086 | | <span class="sd"> '''</span> |
1087 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">ScrolledMultiEditor</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span><span class="n">dictlst</span><span class="p">,</span><span class="n">elemlst</span><span class="p">,</span><span class="n">prelbl</span><span class="p">,</span><span class="n">postlbl</span><span class="p">,</span> |
1088 | | <span class="n">title</span><span class="p">,</span><span class="n">header</span><span class="p">,</span><span class="n">size</span><span class="p">,</span> |
1089 | | <span class="n">CopyButton</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span> |
1090 | | <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> |
1091 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
1092 | | <span class="k">return</span> <span class="bp">True</span> |
1093 | | <span class="k">else</span><span class="p">:</span> |
1094 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
1095 | | <span class="k">return</span> <span class="bp">False</span> |
1096 | | </div> |
1097 | | <div class="viewcode-block" id="ScrolledMultiEditor"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ScrolledMultiEditor">[docs]</a><span class="k">class</span> <span class="nc">ScrolledMultiEditor</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">):</span> |
1098 | | <span class="sd">'''Define a window for editing a potentially large number of dict- or</span> |
1099 | | <span class="sd"> list-contained values with validation for each item. Edited values are</span> |
1100 | | <span class="sd"> automatically placed in their source location. If invalid entries</span> |
1101 | | <span class="sd"> are provided, the TextCtrl is turned yellow and the OK button is disabled.</span> |
1102 | | |
1103 | | <span class="sd"> The type for each TextCtrl validation is determined by the</span> |
1104 | | <span class="sd"> initial value of the entry (int, float or string). </span> |
1105 | | <span class="sd"> Float values can be entered in the TextCtrl as numbers or also</span> |
1106 | | <span class="sd"> as algebraic expressions using operators + - / \* () and \*\*,</span> |
1107 | | <span class="sd"> in addition pi, sind(), cosd(), tand(), and sqrt() can be used,</span> |
1108 | | <span class="sd"> as well as appreviations s(), sin(), c(), cos(), t(), tan() and sq(). </span> |
1109 | | |
1110 | | <span class="sd"> :param wx.Frame parent: name of parent window, or may be None</span> |
1111 | | |
1112 | | <span class="sd"> :param tuple dictlst: a list of dicts or lists containing values to edit</span> |
1113 | | |
1114 | | <span class="sd"> :param tuple elemlst: a list of keys for each item in a dictlst. Must have the</span> |
1115 | | <span class="sd"> same length as dictlst.</span> |
1116 | | |
1117 | | <span class="sd"> :param wx.Frame parent: name of parent window, or may be None</span> |
1118 | | <span class="sd"> </span> |
1119 | | <span class="sd"> :param tuple prelbl: a list of labels placed before the TextCtrl for each</span> |
1120 | | <span class="sd"> item (optional)</span> |
1121 | | <span class="sd"> </span> |
1122 | | <span class="sd"> :param tuple postlbl: a list of labels placed after the TextCtrl for each</span> |
1123 | | <span class="sd"> item (optional)</span> |
1124 | | |
1125 | | <span class="sd"> :param str title: a title to place in the frame of the dialog</span> |
1126 | | |
1127 | | <span class="sd"> :param str header: text to place at the top of the window. May contain</span> |
1128 | | <span class="sd"> new line characters. </span> |
1129 | | |
1130 | | <span class="sd"> :param wx.Size size: a size parameter that dictates the</span> |
1131 | | <span class="sd"> size for the scrolled region of the dialog. The default is</span> |
1132 | | <span class="sd"> (300,250). </span> |
1133 | | |
1134 | | <span class="sd"> :param bool CopyButton: if True adds a small button that copies the</span> |
1135 | | <span class="sd"> value for the current row to all fields below (default is False)</span> |
1136 | | <span class="sd"> </span> |
1137 | | <span class="sd"> :param list minvals: optional list of minimum values for validation</span> |
1138 | | <span class="sd"> of float or int values. Ignored if value is None.</span> |
1139 | | <span class="sd"> :param list maxvals: optional list of maximum values for validation</span> |
1140 | | <span class="sd"> of float or int values. Ignored if value is None.</span> |
1141 | | <span class="sd"> :param list sizevals: optional list of wx.Size values for each input</span> |
1142 | | <span class="sd"> widget. Ignored if value is None.</span> |
1143 | | <span class="sd"> </span> |
1144 | | <span class="sd"> :param tuple checkdictlst: an optional list of dicts or lists containing bool</span> |
1145 | | <span class="sd"> values (similar to dictlst). </span> |
1146 | | <span class="sd"> :param tuple checkelemlst: an optional list of dicts or lists containing bool</span> |
1147 | | <span class="sd"> key values (similar to elemlst). Must be used with checkdictlst.</span> |
1148 | | <span class="sd"> :param string checklabel: a string to use for each checkbutton</span> |
1149 | | <span class="sd"> </span> |
1150 | | <span class="sd"> :returns: the wx.Dialog created here. Use method .ShowModal() to display it.</span> |
1151 | | <span class="sd"> </span> |
1152 | | <span class="sd"> *Example for use of ScrolledMultiEditor:*</span> |
1153 | | |
1154 | | <span class="sd"> ::</span> |
1155 | | |
1156 | | <span class="sd"> dlg = <pkg>.ScrolledMultiEditor(frame,dictlst,elemlst,prelbl,postlbl,</span> |
1157 | | <span class="sd"> header=header)</span> |
1158 | | <span class="sd"> if dlg.ShowModal() == wx.ID_OK:</span> |
1159 | | <span class="sd"> for d,k in zip(dictlst,elemlst):</span> |
1160 | | <span class="sd"> print d[k]</span> |
1161 | | |
1162 | | <span class="sd"> *Example definitions for dictlst and elemlst:*</span> |
1163 | | |
1164 | | <span class="sd"> ::</span> |
1165 | | <span class="sd"> </span> |
1166 | | <span class="sd"> dictlst = (dict1,list1,dict1,list1)</span> |
1167 | | <span class="sd"> elemlst = ('a', 1, 2, 3)</span> |
1168 | | |
1169 | | <span class="sd"> This causes items dict1['a'], list1[1], dict1[2] and list1[3] to be edited.</span> |
1170 | | <span class="sd"> </span> |
1171 | | <span class="sd"> Note that these items must have int, float or str values assigned to</span> |
1172 | | <span class="sd"> them. The dialog will force these types to be retained. String values</span> |
1173 | | <span class="sd"> that are blank are marked as invalid. </span> |
1174 | | <span class="sd"> '''</span> |
1175 | | |
1176 | | <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">dictlst</span><span class="p">,</span><span class="n">elemlst</span><span class="p">,</span><span class="n">prelbl</span><span class="o">=</span><span class="p">[],</span><span class="n">postlbl</span><span class="o">=</span><span class="p">[],</span> |
1177 | | <span class="n">title</span><span class="o">=</span><span class="s">'Edit items'</span><span class="p">,</span><span class="n">header</span><span class="o">=</span><span class="s">''</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">250</span><span class="p">),</span> |
1178 | | <span class="n">CopyButton</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> |
1179 | | <span class="n">minvals</span><span class="o">=</span><span class="p">[],</span><span class="n">maxvals</span><span class="o">=</span><span class="p">[],</span><span class="n">sizevals</span><span class="o">=</span><span class="p">[],</span> |
1180 | | <span class="n">checkdictlst</span><span class="o">=</span><span class="p">[],</span> <span class="n">checkelemlst</span><span class="o">=</span><span class="p">[],</span> <span class="n">checklabel</span><span class="o">=</span><span class="s">""</span><span class="p">):</span> |
1181 | | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">dictlst</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">elemlst</span><span class="p">):</span> |
1182 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">"ScrolledMultiEditor error: len(dictlst) != len(elemlst) "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">dictlst</span><span class="p">))</span><span class="o">+</span><span class="s">" != "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">elemlst</span><span class="p">))</span> |
1183 | | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">checkdictlst</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">checkelemlst</span><span class="p">):</span> |
1184 | | <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">"ScrolledMultiEditor error: len(checkdictlst) != len(checkelemlst) "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">checkdictlst</span><span class="p">))</span><span class="o">+</span><span class="s">" != "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">checkelemlst</span><span class="p">))</span> |
1185 | | <span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span> <span class="c"># create dialog & sizer</span> |
1186 | | <span class="bp">self</span><span class="p">,</span><span class="n">parent</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="n">title</span><span class="p">,</span> |
1187 | | <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">DEFAULT_DIALOG_STYLE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">RESIZE_BORDER</span><span class="p">)</span> |
1188 | | <span class="n">mainSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span> |
1189 | | <span class="bp">self</span><span class="o">.</span><span class="n">orig</span> <span class="o">=</span> <span class="p">[]</span> |
1190 | | <span class="bp">self</span><span class="o">.</span><span class="n">dictlst</span> <span class="o">=</span> <span class="n">dictlst</span> |
1191 | | <span class="bp">self</span><span class="o">.</span><span class="n">elemlst</span> <span class="o">=</span> <span class="n">elemlst</span> |
1192 | | <span class="bp">self</span><span class="o">.</span><span class="n">checkdictlst</span> <span class="o">=</span> <span class="n">checkdictlst</span> |
1193 | | <span class="bp">self</span><span class="o">.</span><span class="n">checkelemlst</span> <span class="o">=</span> <span class="n">checkelemlst</span> |
1194 | | <span class="bp">self</span><span class="o">.</span><span class="n">StartCheckValues</span> <span class="o">=</span> <span class="p">[</span><span class="n">checkdictlst</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">checkelemlst</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">checkdictlst</span><span class="p">))]</span> |
1195 | | <span class="bp">self</span><span class="o">.</span><span class="n">ButtonIndex</span> <span class="o">=</span> <span class="p">{}</span> |
1196 | | <span class="k">for</span> <span class="n">d</span><span class="p">,</span><span class="n">i</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">dictlst</span><span class="p">,</span><span class="n">elemlst</span><span class="p">):</span> |
1197 | | <span class="bp">self</span><span class="o">.</span><span class="n">orig</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> |
1198 | | <span class="c"># add a header if supplied</span> |
1199 | | <span class="k">if</span> <span class="n">header</span><span class="p">:</span> |
1200 | | <span class="n">subSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span> |
1201 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">)</span> |
1202 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="n">header</span><span class="p">))</span> |
1203 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">)</span> |
1204 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">subSizer</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span> |
1205 | | <span class="c"># make OK button now, because we will need it for validation</span> |
1206 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">)</span> |
1207 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span><span class="o">.</span><span class="n">SetDefault</span><span class="p">()</span> |
1208 | | <span class="c"># create scrolled panel and sizer</span> |
1209 | | <span class="n">panel</span> <span class="o">=</span> <span class="n">wxscroll</span><span class="o">.</span><span class="n">ScrolledPanel</span><span class="p">(</span> |
1210 | | <span class="bp">self</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> |
1211 | | <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> |
1212 | | <span class="n">style</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">TAB_TRAVERSAL</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">SUNKEN_BORDER</span><span class="p">)</span> |
1213 | | <span class="n">cols</span> <span class="o">=</span> <span class="mi">4</span> |
1214 | | <span class="k">if</span> <span class="n">CopyButton</span><span class="p">:</span> <span class="n">cols</span> <span class="o">+=</span> <span class="mi">1</span> |
1215 | | <span class="n">subSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">FlexGridSizer</span><span class="p">(</span><span class="n">cols</span><span class="o">=</span><span class="n">cols</span><span class="p">,</span><span class="n">hgap</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">vgap</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> |
1216 | | <span class="bp">self</span><span class="o">.</span><span class="n">ValidatedControlsList</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># make list of TextCtrls</span> |
1217 | | <span class="bp">self</span><span class="o">.</span><span class="n">CheckControlsList</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># make list of CheckBoxes</span> |
1218 | | <span class="k">for</span> <span class="n">i</span><span class="p">,(</span><span class="n">d</span><span class="p">,</span><span class="n">k</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">dictlst</span><span class="p">,</span><span class="n">elemlst</span><span class="p">)):</span> |
1219 | | <span class="k">if</span> <span class="n">i</span> <span class="o">>=</span> <span class="nb">len</span><span class="p">(</span><span class="n">prelbl</span><span class="p">):</span> <span class="c"># label before TextCtrl, or put in a blank</span> |
1220 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> |
1221 | | <span class="k">else</span><span class="p">:</span> |
1222 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">prelbl</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span> |
1223 | | <span class="n">kargs</span> <span class="o">=</span> <span class="p">{}</span> |
1224 | | <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">minvals</span><span class="p">):</span> |
1225 | | <span class="k">if</span> <span class="n">minvals</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="n">kargs</span><span class="p">[</span><span class="s">'min'</span><span class="p">]</span><span class="o">=</span><span class="n">minvals</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> |
1226 | | <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">maxvals</span><span class="p">):</span> |
1227 | | <span class="k">if</span> <span class="n">maxvals</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="n">kargs</span><span class="p">[</span><span class="s">'max'</span><span class="p">]</span><span class="o">=</span><span class="n">maxvals</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> |
1228 | | <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">sizevals</span><span class="p">):</span> |
1229 | | <span class="k">if</span> <span class="n">sizevals</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span> <span class="n">kargs</span><span class="p">[</span><span class="s">'size'</span><span class="p">]</span><span class="o">=</span><span class="n">sizevals</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> |
1230 | | <span class="k">if</span> <span class="n">CopyButton</span><span class="p">:</span> |
1231 | | <span class="kn">import</span> <span class="nn">wx.lib.colourselect</span> <span class="kn">as</span> <span class="nn">wscs</span> |
1232 | | <span class="n">but</span> <span class="o">=</span> <span class="n">wscs</span><span class="o">.</span><span class="n">ColourSelect</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s">'v'</span><span class="p">,</span> <span class="c"># would like to use u'\u2193' or u'\u25BC' but not in WinXP</span> |
1233 | | <span class="c"># is there a way to test? </span> |
1234 | | <span class="n">parent</span><span class="o">=</span><span class="n">panel</span><span class="p">,</span> |
1235 | | <span class="n">colour</span><span class="o">=</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span><span class="mi">255</span><span class="p">,</span><span class="mi">200</span><span class="p">),</span> |
1236 | | <span class="n">size</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">Size</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span><span class="mi">23</span><span class="p">),</span> |
1237 | | <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">RAISED_BORDER</span><span class="p">)</span> |
1238 | | <span class="n">but</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_OnCopyButton</span><span class="p">)</span> |
1239 | | <span class="n">but</span><span class="o">.</span><span class="n">SetToolTipString</span><span class="p">(</span><span class="s">'Press to copy adjacent value to all rows below'</span><span class="p">)</span> |
1240 | | <span class="bp">self</span><span class="o">.</span><span class="n">ButtonIndex</span><span class="p">[</span><span class="n">but</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span> |
1241 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">but</span><span class="p">)</span> |
1242 | | <span class="c"># create the validated TextCrtl, store it and add it to the sizer</span> |
1243 | | <span class="n">ctrl</span> <span class="o">=</span> <span class="n">ValidatedTxtCtrl</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">d</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">OKcontrol</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ControlOKButton</span><span class="p">,</span> |
1244 | | <span class="o">**</span><span class="n">kargs</span><span class="p">)</span> |
1245 | | <span class="bp">self</span><span class="o">.</span><span class="n">ValidatedControlsList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ctrl</span><span class="p">)</span> |
1246 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">ctrl</span><span class="p">)</span> |
1247 | | <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">postlbl</span><span class="p">):</span> <span class="c"># label after TextCtrl, or put in a blank</span> |
1248 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">postlbl</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span> |
1249 | | <span class="k">else</span><span class="p">:</span> |
1250 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> |
1251 | | <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">checkdictlst</span><span class="p">):</span> |
1252 | | <span class="n">ch</span> <span class="o">=</span> <span class="n">G2CheckBox</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">checklabel</span><span class="p">,</span><span class="n">checkdictlst</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="n">checkelemlst</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> |
1253 | | <span class="bp">self</span><span class="o">.</span><span class="n">CheckControlsList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span> |
1254 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span> |
1255 | | <span class="k">else</span><span class="p">:</span> |
1256 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> |
1257 | | <span class="c"># finish up ScrolledPanel</span> |
1258 | | <span class="n">panel</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">subSizer</span><span class="p">)</span> |
1259 | | <span class="n">panel</span><span class="o">.</span><span class="n">SetAutoLayout</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> |
1260 | | <span class="n">panel</span><span class="o">.</span><span class="n">SetupScrolling</span><span class="p">()</span> |
1261 | | <span class="c"># patch for wx 2.9 on Mac</span> |
1262 | | <span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">__version__</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'.'</span><span class="p">)[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> |
1263 | | <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">+</span><span class="nb">int</span><span class="p">(</span><span class="n">j</span><span class="p">)</span><span class="o">/</span><span class="mf">10.</span> <span class="o">></span> <span class="mf">2.8</span> <span class="ow">and</span> <span class="s">'wxOSX'</span> <span class="ow">in</span> <span class="n">wx</span><span class="o">.</span><span class="n">PlatformInfo</span><span class="p">:</span> |
1264 | | <span class="n">panel</span><span class="o">.</span><span class="n">SetMinSize</span><span class="p">((</span><span class="n">subSizer</span><span class="o">.</span><span class="n">GetSize</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">30</span><span class="p">,</span><span class="n">panel</span><span class="o">.</span><span class="n">GetSize</span><span class="p">()[</span><span class="mi">1</span><span class="p">]))</span> |
1265 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> |
1266 | | |
1267 | | <span class="c"># Sizer for OK/Close buttons. N.B. on Close changes are discarded</span> |
1268 | | <span class="c"># by restoring the initial values</span> |
1269 | | <span class="n">btnsizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span> |
1270 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span><span class="p">)</span> |
1271 | | <span class="n">btn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_CLOSE</span><span class="p">,</span><span class="s">"Cancel"</span><span class="p">)</span> |
1272 | | <span class="n">btn</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">_onClose</span><span class="p">)</span> |
1273 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">btn</span><span class="p">)</span> |
1274 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">btnsizer</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTER</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> |
1275 | | <span class="c"># size out the window. Set it to be enlarged but not made smaller</span> |
1276 | | <span class="bp">self</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">mainSizer</span><span class="p">)</span> |
1277 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Fit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> |
1278 | | <span class="bp">self</span><span class="o">.</span><span class="n">SetMinSize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetSize</span><span class="p">())</span> |
1279 | | |
1280 | | <span class="k">def</span> <span class="nf">_OnCopyButton</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
1281 | | <span class="s">'Implements the copy down functionality'</span> |
1282 | | <span class="n">but</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetEventObject</span><span class="p">()</span> |
1283 | | <span class="n">n</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ButtonIndex</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">but</span><span class="p">)</span> |
1284 | | <span class="k">if</span> <span class="n">n</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">return</span> |
1285 | | <span class="k">for</span> <span class="n">i</span><span class="p">,(</span><span class="n">d</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">ctrl</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dictlst</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">elemlst</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">ValidatedControlsList</span><span class="p">)):</span> |
1286 | | <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">n</span><span class="p">:</span> <span class="k">continue</span> |
1287 | | <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="n">n</span><span class="p">:</span> |
1288 | | <span class="n">val</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> |
1289 | | <span class="k">continue</span> |
1290 | | <span class="n">d</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> |
1291 | | <span class="n">ctrl</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> |
1292 | | <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">checkdictlst</span><span class="p">)):</span> |
1293 | | <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">n</span><span class="p">:</span> <span class="k">continue</span> |
1294 | | <span class="bp">self</span><span class="o">.</span><span class="n">checkdictlst</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">checkelemlst</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">checkdictlst</span><span class="p">[</span><span class="n">n</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">checkelemlst</span><span class="p">[</span><span class="n">n</span><span class="p">]]</span> |
1295 | | <span class="bp">self</span><span class="o">.</span><span class="n">CheckControlsList</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">checkdictlst</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">checkelemlst</span><span class="p">[</span><span class="n">i</span><span class="p">]])</span> |
1296 | | <span class="k">def</span> <span class="nf">_onClose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
1297 | | <span class="s">'Used on Cancel: Restore original values & close the window'</span> |
1298 | | <span class="k">for</span> <span class="n">d</span><span class="p">,</span><span class="n">i</span><span class="p">,</span><span class="n">v</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dictlst</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">elemlst</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">orig</span><span class="p">):</span> |
1299 | | <span class="n">d</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> |
1300 | | <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">checkdictlst</span><span class="p">)):</span> |
1301 | | <span class="bp">self</span><span class="o">.</span><span class="n">checkdictlst</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">checkelemlst</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">StartCheckValues</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> |
1302 | | <span class="bp">self</span><span class="o">.</span><span class="n">EndModal</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_CANCEL</span><span class="p">)</span> |
1303 | | |
1304 | | <div class="viewcode-block" id="ScrolledMultiEditor.ControlOKButton"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ScrolledMultiEditor.ControlOKButton">[docs]</a> <span class="k">def</span> <span class="nf">ControlOKButton</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">setvalue</span><span class="p">):</span> |
1305 | | <span class="sd">'''Enable or Disable the OK button for the dialog. Note that this is</span> |
1306 | | <span class="sd"> passed into the ValidatedTxtCtrl for use by validators.</span> |
1307 | | |
1308 | | <span class="sd"> :param bool setvalue: if True, all entries in the dialog are</span> |
1309 | | <span class="sd"> checked for validity. if False then the OK button is disabled.</span> |
1310 | | |
1311 | | <span class="sd"> '''</span> |
1312 | | <span class="k">if</span> <span class="n">setvalue</span><span class="p">:</span> <span class="c"># turn button on, do only if all controls show as valid</span> |
1313 | | <span class="k">for</span> <span class="n">ctrl</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ValidatedControlsList</span><span class="p">:</span> |
1314 | | <span class="k">if</span> <span class="n">ctrl</span><span class="o">.</span><span class="n">invalid</span><span class="p">:</span> |
1315 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span><span class="o">.</span><span class="n">Disable</span><span class="p">()</span> |
1316 | | <span class="k">return</span> |
1317 | | <span class="k">else</span><span class="p">:</span> |
1318 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span><span class="o">.</span><span class="n">Enable</span><span class="p">()</span> |
1319 | | <span class="k">else</span><span class="p">:</span> |
1320 | | <span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span><span class="o">.</span><span class="n">Disable</span><span class="p">()</span> |
1321 | | |
1322 | | <span class="c">################################################################################</span></div></div> |
| 408 | |
| 409 | <span class="c">################################################################################</span></div> |
| 1098 | <div class="viewcode-block" id="G2ColumnIDDialog"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2ColumnIDDialog">[docs]</a><span class="k">class</span> <span class="nc">G2ColumnIDDialog</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">):</span> |
| 1099 | <span class="sd">'''A dialog for matching column data to desired items; some columns may be ignored.</span> |
| 1100 | <span class="sd"> </span> |
| 1101 | <span class="sd"> :param wx.Frame ParentFrame: reference to parent frame</span> |
| 1102 | <span class="sd"> :param str title: heading above list of choices</span> |
| 1103 | <span class="sd"> :param str header: Title to place on window frame </span> |
| 1104 | <span class="sd"> :param list ChoiceList: a list of possible choices for the columns</span> |
| 1105 | <span class="sd"> :param list ColumnData: lists of column data to be matched with ChoiceList</span> |
| 1106 | <span class="sd"> :param bool monoFont: If False (default), use a variable-spaced font;</span> |
| 1107 | <span class="sd"> if True use a equally-spaced font.</span> |
| 1108 | <span class="sd"> :param kw: optional keyword parameters for the wx.Dialog may</span> |
| 1109 | <span class="sd"> be included such as size [which defaults to `(320,310)`] and</span> |
| 1110 | <span class="sd"> style (which defaults to ``wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER | wx.CENTRE | wx.OK | wx.CANCEL``);</span> |
| 1111 | <span class="sd"> note that ``wx.OK`` and ``wx.CANCEL`` controls</span> |
| 1112 | <span class="sd"> the presence of the eponymous buttons in the dialog.</span> |
| 1113 | <span class="sd"> :returns: the name of the created dialog</span> |
| 1114 | <span class="sd"> </span> |
| 1115 | <span class="sd"> '''</span> |
| 1116 | |
| 1117 | <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">title</span><span class="p">,</span> <span class="n">header</span><span class="p">,</span><span class="n">Comments</span><span class="p">,</span><span class="n">ChoiceList</span><span class="p">,</span> <span class="n">ColumnData</span><span class="p">,</span> |
| 1118 | <span class="n">monoFont</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span> |
| 1119 | |
| 1120 | <span class="k">def</span> <span class="nf">OnOk</span><span class="p">(</span><span class="n">sevent</span><span class="p">):</span> |
| 1121 | <span class="n">OK</span> <span class="o">=</span> <span class="bp">True</span> |
| 1122 | <span class="n">selCols</span> <span class="o">=</span> <span class="p">[]</span> |
| 1123 | <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sel</span><span class="p">:</span> |
| 1124 | <span class="n">item</span> <span class="o">=</span> <span class="n">col</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span> |
| 1125 | <span class="k">if</span> <span class="n">item</span> <span class="o">!=</span> <span class="s">' '</span> <span class="ow">and</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">selCols</span><span class="p">:</span> |
| 1126 | <span class="n">OK</span> <span class="o">=</span> <span class="bp">False</span> |
| 1127 | <span class="k">break</span> |
| 1128 | <span class="k">else</span><span class="p">:</span> |
| 1129 | <span class="n">selCols</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> |
| 1130 | <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetParent</span><span class="p">()</span> |
| 1131 | <span class="k">if</span> <span class="ow">not</span> <span class="n">OK</span><span class="p">:</span> |
| 1132 | <span class="n">parent</span><span class="o">.</span><span class="n">ErrorDialog</span><span class="p">(</span><span class="s">'Duplicate'</span><span class="p">,</span><span class="n">item</span><span class="o">+</span><span class="s">' selected more than once'</span><span class="p">)</span> |
| 1133 | <span class="k">return</span> |
| 1134 | <span class="n">parent</span><span class="o">.</span><span class="n">Raise</span><span class="p">()</span> |
| 1135 | <span class="bp">self</span><span class="o">.</span><span class="n">EndModal</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">)</span> |
| 1136 | |
| 1137 | <span class="k">def</span> <span class="nf">OnModify</span><span class="p">(</span><span class="n">event</span><span class="p">):</span> |
| 1138 | <span class="n">Obj</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetEventObject</span><span class="p">()</span> |
| 1139 | <span class="n">icol</span><span class="p">,</span><span class="n">colData</span> <span class="o">=</span> <span class="n">Indx</span><span class="p">[</span><span class="n">Obj</span><span class="o">.</span><span class="n">GetId</span><span class="p">()]</span> |
| 1140 | <span class="n">modify</span> <span class="o">=</span> <span class="n">Obj</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span> |
| 1141 | <span class="k">if</span> <span class="ow">not</span> <span class="n">modify</span><span class="p">:</span> |
| 1142 | <span class="k">return</span> |
| 1143 | <span class="k">print</span> <span class="s">'Modify column'</span><span class="p">,</span><span class="n">icol</span><span class="p">,</span><span class="s">' by'</span><span class="p">,</span> <span class="n">modify</span> |
| 1144 | <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">item</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ColumnData</span><span class="p">[</span><span class="n">icol</span><span class="p">]):</span> |
| 1145 | <span class="bp">self</span><span class="o">.</span><span class="n">ColumnData</span><span class="p">[</span><span class="n">icol</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="nb">eval</span><span class="p">(</span><span class="n">item</span><span class="o">+</span><span class="n">modify</span><span class="p">))</span> |
| 1146 | <span class="n">colData</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ColumnData</span><span class="p">[</span><span class="n">icol</span><span class="p">]))</span> |
| 1147 | <span class="n">Obj</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="s">''</span><span class="p">)</span> |
| 1148 | |
| 1149 | <span class="c"># process keyword parameters, notably style</span> |
| 1150 | <span class="n">options</span> <span class="o">=</span> <span class="p">{</span><span class="s">'size'</span><span class="p">:(</span><span class="mi">600</span><span class="p">,</span><span class="mi">310</span><span class="p">),</span> <span class="c"># default Frame keywords</span> |
| 1151 | <span class="s">'style'</span><span class="p">:</span><span class="n">wx</span><span class="o">.</span><span class="n">DEFAULT_DIALOG_STYLE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">RESIZE_BORDER</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">CENTRE</span><span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">OK</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">CANCEL</span><span class="p">,</span> |
| 1152 | <span class="p">}</span> |
| 1153 | <span class="n">options</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">kw</span><span class="p">)</span> |
| 1154 | <span class="bp">self</span><span class="o">.</span><span class="n">Comments</span> <span class="o">=</span> <span class="s">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">Comments</span><span class="p">)</span> |
| 1155 | <span class="bp">self</span><span class="o">.</span><span class="n">ChoiceList</span> <span class="o">=</span> <span class="n">ChoiceList</span> |
| 1156 | <span class="bp">self</span><span class="o">.</span><span class="n">ColumnData</span> <span class="o">=</span> <span class="n">ColumnData</span> |
| 1157 | <span class="n">nCol</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">ColumnData</span><span class="p">)</span> |
| 1158 | <span class="k">if</span> <span class="n">options</span><span class="p">[</span><span class="s">'style'</span><span class="p">]</span> <span class="o">&</span> <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="p">:</span> |
| 1159 | <span class="n">useOK</span> <span class="o">=</span> <span class="bp">True</span> |
| 1160 | <span class="n">options</span><span class="p">[</span><span class="s">'style'</span><span class="p">]</span> <span class="o">^=</span> <span class="n">wx</span><span class="o">.</span><span class="n">OK</span> |
| 1161 | <span class="k">else</span><span class="p">:</span> |
| 1162 | <span class="n">useOK</span> <span class="o">=</span> <span class="bp">False</span> |
| 1163 | <span class="k">if</span> <span class="n">options</span><span class="p">[</span><span class="s">'style'</span><span class="p">]</span> <span class="o">&</span> <span class="n">wx</span><span class="o">.</span><span class="n">CANCEL</span><span class="p">:</span> |
| 1164 | <span class="n">useCANCEL</span> <span class="o">=</span> <span class="bp">True</span> |
| 1165 | <span class="n">options</span><span class="p">[</span><span class="s">'style'</span><span class="p">]</span> <span class="o">^=</span> <span class="n">wx</span><span class="o">.</span><span class="n">CANCEL</span> |
| 1166 | <span class="k">else</span><span class="p">:</span> |
| 1167 | <span class="n">useCANCEL</span> <span class="o">=</span> <span class="bp">False</span> |
| 1168 | <span class="c"># create the dialog frame</span> |
| 1169 | <span class="n">wx</span><span class="o">.</span><span class="n">Dialog</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="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="n">header</span><span class="p">,</span><span class="o">**</span><span class="n">options</span><span class="p">)</span> |
| 1170 | <span class="n">panel</span> <span class="o">=</span> <span class="n">wxscroll</span><span class="o">.</span><span class="n">ScrolledPanel</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> |
| 1171 | <span class="c"># fill the dialog</span> |
| 1172 | <span class="n">Sizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span> |
| 1173 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span> |
| 1174 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="n">title</span><span class="p">),</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="p">)</span> |
| 1175 | <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">Comments</span><span class="p">:</span> |
| 1176 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s">' Header lines:'</span><span class="p">),</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="p">)</span> |
| 1177 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">Comments</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> |
| 1178 | <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">TE_MULTILINE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">TE_READONLY</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">TE_DONTWRAP</span><span class="p">),</span><span class="mi">0</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="o">|</span><span class="n">WACV</span><span class="p">,</span><span class="mi">8</span><span class="p">)</span> |
| 1179 | <span class="n">columnsSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">FlexGridSizer</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">nCol</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span> |
| 1180 | <span class="bp">self</span><span class="o">.</span><span class="n">sel</span> <span class="o">=</span> <span class="p">[]</span> |
| 1181 | <span class="bp">self</span><span class="o">.</span><span class="n">mod</span> <span class="o">=</span> <span class="p">[]</span> |
| 1182 | <span class="n">Indx</span> <span class="o">=</span> <span class="p">{}</span> |
| 1183 | <span class="k">for</span> <span class="n">icol</span><span class="p">,</span><span class="n">col</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ColumnData</span><span class="p">):</span> |
| 1184 | <span class="n">colSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span> |
| 1185 | <span class="n">colSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s">' Column #</span><span class="si">%d</span><span class="s"> Select:'</span><span class="o">%</span><span class="p">(</span><span class="n">icol</span><span class="p">)),</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="p">)</span> |
| 1186 | <span class="bp">self</span><span class="o">.</span><span class="n">sel</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">ComboBox</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">value</span><span class="o">=</span><span class="s">' '</span><span class="p">,</span><span class="n">choices</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ChoiceList</span><span class="p">,</span><span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">CB_READONLY</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">CB_DROPDOWN</span><span class="p">))</span> |
| 1187 | <span class="n">colSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sel</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> |
| 1188 | <span class="n">colData</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">value</span><span class="o">=</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ColumnData</span><span class="p">[</span><span class="n">icol</span><span class="p">]),</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">120</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> |
| 1189 | <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">TE_MULTILINE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">TE_READONLY</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">TE_DONTWRAP</span><span class="p">)</span> |
| 1190 | <span class="n">colSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">colData</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="p">)</span> |
| 1191 | <span class="n">colSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s">' Modify by:'</span><span class="p">),</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="p">)</span> |
| 1192 | <span class="n">mod</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">120</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">value</span><span class="o">=</span><span class="s">''</span><span class="p">,</span><span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">TE_PROCESS_ENTER</span><span class="p">)</span> |
| 1193 | <span class="n">mod</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_TEXT_ENTER</span><span class="p">,</span><span class="n">OnModify</span><span class="p">)</span> |
| 1194 | <span class="n">mod</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_KILL_FOCUS</span><span class="p">,</span><span class="n">OnModify</span><span class="p">)</span> |
| 1195 | <span class="n">Indx</span><span class="p">[</span><span class="n">mod</span><span class="o">.</span><span class="n">GetId</span><span class="p">()]</span> <span class="o">=</span> <span class="p">[</span><span class="n">icol</span><span class="p">,</span><span class="n">colData</span><span class="p">]</span> |
| 1196 | <span class="n">colSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="p">)</span> |
| 1197 | <span class="n">columnsSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">colSizer</span><span class="p">)</span> |
| 1198 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">columnsSizer</span><span class="p">)</span> |
| 1199 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s">' For modify by, enter arithmetic string eg. "-12345.67". "+","-","*","/","**" all allowed'</span><span class="p">),</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="p">)</span> |
| 1200 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">10</span><span class="p">))</span> |
| 1201 | <span class="c"># OK/Cancel buttons</span> |
| 1202 | <span class="n">btnsizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StdDialogButtonSizer</span><span class="p">()</span> |
| 1203 | <span class="k">if</span> <span class="n">useOK</span><span class="p">:</span> |
| 1204 | <span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">)</span> |
| 1205 | <span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span><span class="o">.</span><span class="n">SetDefault</span><span class="p">()</span> |
| 1206 | <span class="n">btnsizer</span><span class="o">.</span><span class="n">AddButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span><span class="p">)</span> |
| 1207 | <span class="bp">self</span><span class="o">.</span><span class="n">OKbtn</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="n">OnOk</span><span class="p">)</span> |
| 1208 | <span class="k">if</span> <span class="n">useCANCEL</span><span class="p">:</span> |
| 1209 | <span class="n">btn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_CANCEL</span><span class="p">)</span> |
| 1210 | <span class="n">btnsizer</span><span class="o">.</span><span class="n">AddButton</span><span class="p">(</span><span class="n">btn</span><span class="p">)</span> |
| 1211 | <span class="n">btnsizer</span><span class="o">.</span><span class="n">Realize</span><span class="p">()</span> |
| 1212 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span> |
| 1213 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">btnsizer</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_LEFT</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span> |
| 1214 | <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span> |
| 1215 | <span class="c"># OK done, let's get outa here</span> |
| 1216 | <span class="n">panel</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">Sizer</span><span class="p">)</span> |
| 1217 | <span class="n">panel</span><span class="o">.</span><span class="n">SetAutoLayout</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> |
| 1218 | <span class="n">panel</span><span class="o">.</span><span class="n">SetupScrolling</span><span class="p">()</span> |
| 1219 | <span class="n">Size</span> <span class="o">=</span> <span class="p">[</span><span class="mi">450</span><span class="p">,</span><span class="mi">375</span><span class="p">]</span> |
| 1220 | <span class="n">panel</span><span class="o">.</span><span class="n">SetSize</span><span class="p">(</span><span class="n">Size</span><span class="p">)</span> |
| 1221 | <span class="n">Size</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">Size</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+=</span> <span class="mi">25</span> |
| 1222 | <span class="bp">self</span><span class="o">.</span><span class="n">SetSize</span><span class="p">(</span><span class="n">Size</span><span class="p">)</span> |
| 1223 | |
| 1224 | <div class="viewcode-block" id="G2ColumnIDDialog.GetSelection"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2ColumnIDDialog.GetSelection">[docs]</a> <span class="k">def</span> <span class="nf">GetSelection</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| 1225 | <span class="s">'Returns the selected sample parm for each column'</span> |
| 1226 | <span class="n">selCols</span> <span class="o">=</span> <span class="p">[]</span> |
| 1227 | <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sel</span><span class="p">:</span> |
| 1228 | <span class="n">selCols</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">GetValue</span><span class="p">())</span> |
| 1229 | <span class="k">return</span> <span class="n">selCols</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">ColumnData</span> |
| 1230 | |
| 1231 | <span class="c">################################################################################</span> |
| 1232 | </div></div> |
2179 | | |
2180 | | <span class="c">################################################################################</span></div> |
2181 | | <div class="viewcode-block" id="SelectEdit1Var"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.SelectEdit1Var">[docs]</a><span class="k">def</span> <span class="nf">SelectEdit1Var</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">array</span><span class="p">,</span><span class="n">labelLst</span><span class="p">,</span><span class="n">elemKeysLst</span><span class="p">,</span><span class="n">dspLst</span><span class="p">,</span><span class="n">refFlgElem</span><span class="p">):</span> |
2182 | | <span class="sd">'''Select a variable from a list, then edit it and select histograms</span> |
2183 | | <span class="sd"> to copy it to.</span> |
2184 | | |
2185 | | <span class="sd"> :param wx.Frame G2frame: main GSAS-II frame</span> |
2186 | | <span class="sd"> :param dict array: the array (dict or list) where values to be edited are kept</span> |
2187 | | <span class="sd"> :param list labelLst: labels for each data item</span> |
2188 | | <span class="sd"> :param list elemKeysLst: a list of lists of keys needed to be applied (see below)</span> |
2189 | | <span class="sd"> to obtain the value of each parameter</span> |
2190 | | <span class="sd"> :param list dspLst: list list of digits to be displayed (10,4) is 10 digits</span> |
2191 | | <span class="sd"> with 4 decimal places. Can be None.</span> |
2192 | | <span class="sd"> :param list refFlgElem: a list of lists of keys needed to be applied (see below)</span> |
2193 | | <span class="sd"> to obtain the refine flag for each parameter or None if the parameter</span> |
2194 | | <span class="sd"> does not have refine flag.</span> |
2195 | | |
2196 | | <span class="sd"> Example::</span> |
2197 | | <span class="sd"> array = data </span> |
2198 | | <span class="sd"> labelLst = ['v1','v2']</span> |
2199 | | <span class="sd"> elemKeysLst = [['v1'], ['v2',0]]</span> |
2200 | | <span class="sd"> refFlgElem = [None, ['v2',1]]</span> |
2201 | | |
2202 | | <span class="sd"> * The value for v1 will be in data['v1'] and this cannot be refined while,</span> |
2203 | | <span class="sd"> * The value for v2 will be in data['v2'][0] and its refinement flag is data['v2'][1]</span> |
2204 | | <span class="sd"> '''</span> |
2205 | | <span class="k">def</span> <span class="nf">unkey</span><span class="p">(</span><span class="n">dct</span><span class="p">,</span><span class="n">keylist</span><span class="p">):</span> |
2206 | | <span class="sd">'''dive into a nested set of dicts/lists applying keys in keylist</span> |
2207 | | <span class="sd"> consecutively</span> |
2208 | | <span class="sd"> '''</span> |
2209 | | <span class="n">d</span> <span class="o">=</span> <span class="n">dct</span> |
2210 | | <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">keylist</span><span class="p">:</span> |
2211 | | <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> |
2212 | | <span class="k">return</span> <span class="n">d</span> |
2213 | | |
2214 | | <span class="k">def</span> <span class="nf">OnChoice</span><span class="p">(</span><span class="n">event</span><span class="p">):</span> |
2215 | | <span class="s">'Respond when a parameter is selected in the Choice box'</span> |
2216 | | <span class="n">valSizer</span><span class="o">.</span><span class="n">DeleteWindows</span><span class="p">()</span> |
2217 | | <span class="n">lbl</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetString</span><span class="p">()</span> |
2218 | | <span class="n">copyopts</span><span class="p">[</span><span class="s">'currentsel'</span><span class="p">]</span> <span class="o">=</span> <span class="n">lbl</span> |
2219 | | <span class="n">i</span> <span class="o">=</span> <span class="n">labelLst</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span> |
2220 | | <span class="n">OKbtn</span><span class="o">.</span><span class="n">Enable</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span> |
2221 | | <span class="n">ch</span><span class="o">.</span><span class="n">SetLabel</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span> |
2222 | | <span class="n">args</span> <span class="o">=</span> <span class="p">{}</span> |
2223 | | <span class="k">if</span> <span class="n">dspLst</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span> |
2224 | | <span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="s">'nDig'</span><span class="p">:</span><span class="n">dspLst</span><span class="p">[</span><span class="n">i</span><span class="p">]}</span> |
2225 | | <span class="n">Val</span> <span class="o">=</span> <span class="n">ValidatedTxtCtrl</span><span class="p">(</span> |
2226 | | <span class="n">dlg</span><span class="p">,</span> |
2227 | | <span class="n">unkey</span><span class="p">(</span><span class="n">array</span><span class="p">,</span><span class="n">elemKeysLst</span><span class="p">[</span><span class="n">i</span><span class="p">][:</span><span class="o">-</span><span class="mi">1</span><span class="p">]),</span> |
2228 | | <span class="n">elemKeysLst</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> |
2229 | | <span class="o">**</span><span class="n">args</span><span class="p">)</span> |
2230 | | <span class="n">copyopts</span><span class="p">[</span><span class="s">'startvalue'</span><span class="p">]</span> <span class="o">=</span> <span class="n">unkey</span><span class="p">(</span><span class="n">array</span><span class="p">,</span><span class="n">elemKeysLst</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> |
2231 | | <span class="c">#unkey(array,elemKeysLst[i][:-1])[elemKeysLst[i][-1]] = </span> |
2232 | | <span class="n">valSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">Val</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span> |
2233 | | <span class="n">dlg</span><span class="o">.</span><span class="n">SendSizeEvent</span><span class="p">()</span> |
2234 | | |
2235 | | <span class="c"># SelectEdit1Var execution begins here</span> |
2236 | | <span class="n">saveArray</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">array</span><span class="p">)</span> <span class="c"># keep original values</span> |
2237 | | <span class="n">TreeItemType</span> <span class="o">=</span> <span class="n">G2frame</span><span class="o">.</span><span class="n">PatternTree</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">G2frame</span><span class="o">.</span><span class="n">PickId</span><span class="p">)</span> |
2238 | | <span class="n">copyopts</span> <span class="o">=</span> <span class="p">{</span><span class="s">'InTable'</span><span class="p">:</span><span class="bp">False</span><span class="p">,</span><span class="s">"startvalue"</span><span class="p">:</span><span class="bp">None</span><span class="p">,</span><span class="s">'currentsel'</span><span class="p">:</span><span class="bp">None</span><span class="p">}</span> |
2239 | | <span class="n">hst</span> <span class="o">=</span> <span class="n">G2frame</span><span class="o">.</span><span class="n">PatternTree</span><span class="o">.</span><span class="n">GetItemText</span><span class="p">(</span><span class="n">G2frame</span><span class="o">.</span><span class="n">PatternId</span><span class="p">)</span> |
2240 | | <span class="n">histList</span> <span class="o">=</span> <span class="n">G2pdG</span><span class="o">.</span><span class="n">GetHistsLikeSelected</span><span class="p">(</span><span class="n">G2frame</span><span class="p">)</span> |
2241 | | <span class="k">if</span> <span class="ow">not</span> <span class="n">histList</span><span class="p">:</span> |
2242 | | <span class="n">G2frame</span><span class="o">.</span><span class="n">ErrorDialog</span><span class="p">(</span><span class="s">'No match'</span><span class="p">,</span><span class="s">'No histograms match '</span><span class="o">+</span><span class="n">hst</span><span class="p">,</span><span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</span><span class="p">)</span> |
2243 | | <span class="k">return</span> |
2244 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">(</span><span class="n">G2frame</span><span class="o">.</span><span class="n">dataDisplay</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="s">'Set a parameter value'</span><span class="p">,</span> |
2245 | | <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">DEFAULT_DIALOG_STYLE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">RESIZE_BORDER</span><span class="p">)</span> |
2246 | | <span class="n">mainSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span> |
2247 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span> |
2248 | | <span class="n">subSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span> |
2249 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">)</span> |
2250 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">dlg</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="s">'Select a parameter and set a new value'</span><span class="p">))</span> |
2251 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">)</span> |
2252 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">subSizer</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span> |
2253 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span><span class="mi">10</span><span class="p">))</span> |
2254 | | |
2255 | | <span class="n">subSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">FlexGridSizer</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span> |
2256 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">dlg</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="s">'Parameter: '</span><span class="p">))</span> |
2257 | | <span class="n">ch</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Choice</span><span class="p">(</span><span class="n">dlg</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> <span class="n">choices</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">labelLst</span><span class="p">))</span> |
2258 | | <span class="n">ch</span><span class="o">.</span><span class="n">SetSelection</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> |
2259 | | <span class="n">ch</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_CHOICE</span><span class="p">,</span> <span class="n">OnChoice</span><span class="p">)</span> |
2260 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span> |
2261 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">dlg</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="s">'Value: '</span><span class="p">))</span> |
2262 | | <span class="n">valSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span> |
2263 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">valSizer</span><span class="p">)</span> |
2264 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">subSizer</span><span class="p">)</span> |
2265 | | |
2266 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">20</span><span class="p">))</span> |
2267 | | <span class="n">subSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span> |
2268 | | <span class="n">subSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">G2CheckBox</span><span class="p">(</span><span class="n">dlg</span><span class="p">,</span> <span class="s">'Edit in table '</span><span class="p">,</span> <span class="n">copyopts</span><span class="p">,</span> <span class="s">'InTable'</span><span class="p">))</span> |
2269 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">subSizer</span><span class="p">)</span> |
2270 | | |
2271 | | <span class="n">btnsizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StdDialogButtonSizer</span><span class="p">()</span> |
2272 | | <span class="n">OKbtn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">dlg</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">,</span><span class="s">'Continue'</span><span class="p">)</span> |
2273 | | <span class="n">OKbtn</span><span class="o">.</span><span class="n">Enable</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> |
2274 | | <span class="n">OKbtn</span><span class="o">.</span><span class="n">SetDefault</span><span class="p">()</span> |
2275 | | <span class="n">OKbtn</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span><span class="k">lambda</span> <span class="n">event</span><span class="p">:</span> <span class="n">dlg</span><span class="o">.</span><span class="n">EndModal</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">))</span> |
2276 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">AddButton</span><span class="p">(</span><span class="n">OKbtn</span><span class="p">)</span> |
2277 | | <span class="n">btn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">dlg</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_CANCEL</span><span class="p">)</span> |
2278 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">AddButton</span><span class="p">(</span><span class="n">btn</span><span class="p">)</span> |
2279 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">Realize</span><span class="p">()</span> |
2280 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> |
2281 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">btnsizer</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTER</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span> |
2282 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">10</span><span class="p">))</span> |
2283 | | |
2284 | | <span class="n">dlg</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">mainSizer</span><span class="p">)</span> |
2285 | | <span class="n">dlg</span><span class="o">.</span><span class="n">CenterOnParent</span><span class="p">()</span> |
2286 | | <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> |
2287 | | <span class="n">array</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">saveArray</span><span class="p">)</span> |
2288 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2289 | | <span class="k">return</span> |
2290 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2291 | | |
2292 | | <span class="n">copyList</span> <span class="o">=</span> <span class="p">[]</span> |
2293 | | <span class="n">lbl</span> <span class="o">=</span> <span class="n">copyopts</span><span class="p">[</span><span class="s">'currentsel'</span><span class="p">]</span> |
2294 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">G2MultiChoiceDialog</span><span class="p">(</span> |
2295 | | <span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</span><span class="p">,</span> |
2296 | | <span class="s">'Copy parameter '</span><span class="o">+</span><span class="n">lbl</span><span class="o">+</span><span class="s">' from</span><span class="se">\n</span><span class="s">'</span><span class="o">+</span><span class="n">hst</span><span class="p">,</span> |
2297 | | <span class="s">'Copy parameters'</span><span class="p">,</span> <span class="n">histList</span><span class="p">)</span> |
2298 | | <span class="n">dlg</span><span class="o">.</span><span class="n">CenterOnParent</span><span class="p">()</span> |
2299 | | <span class="k">try</span><span class="p">:</span> |
2300 | | <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> |
2301 | | <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">dlg</span><span class="o">.</span><span class="n">GetSelections</span><span class="p">():</span> |
2302 | | <span class="n">copyList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">histList</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> |
2303 | | <span class="k">else</span><span class="p">:</span> |
2304 | | <span class="c"># reset the parameter since cancel was pressed</span> |
2305 | | <span class="n">array</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">saveArray</span><span class="p">)</span> |
2306 | | <span class="k">return</span> |
2307 | | <span class="k">finally</span><span class="p">:</span> |
2308 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2309 | | |
2310 | | <span class="n">prelbl</span> <span class="o">=</span> <span class="p">[</span><span class="n">hst</span><span class="p">]</span> |
2311 | | <span class="n">i</span> <span class="o">=</span> <span class="n">labelLst</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">lbl</span><span class="p">)</span> |
2312 | | <span class="n">keyLst</span> <span class="o">=</span> <span class="n">elemKeysLst</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> |
2313 | | <span class="n">refkeys</span> <span class="o">=</span> <span class="n">refFlgElem</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> |
2314 | | <span class="n">dictlst</span> <span class="o">=</span> <span class="p">[</span><span class="n">unkey</span><span class="p">(</span><span class="n">array</span><span class="p">,</span><span class="n">keyLst</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])]</span> |
2315 | | <span class="k">if</span> <span class="n">refkeys</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
2316 | | <span class="n">refdictlst</span> <span class="o">=</span> <span class="p">[</span><span class="n">unkey</span><span class="p">(</span><span class="n">array</span><span class="p">,</span><span class="n">refkeys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])]</span> |
2317 | | <span class="k">else</span><span class="p">:</span> |
2318 | | <span class="n">refdictlst</span> <span class="o">=</span> <span class="bp">None</span> |
2319 | | <span class="n">Id</span> <span class="o">=</span> <span class="n">GetPatternTreeItemId</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">G2frame</span><span class="o">.</span><span class="n">root</span><span class="p">,</span><span class="n">hst</span><span class="p">)</span> |
2320 | | <span class="n">hstData</span> <span class="o">=</span> <span class="n">G2frame</span><span class="o">.</span><span class="n">PatternTree</span><span class="o">.</span><span class="n">GetItemPyData</span><span class="p">(</span><span class="n">GetPatternTreeItemId</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">Id</span><span class="p">,</span><span class="s">'Instrument Parameters'</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> |
2321 | | <span class="k">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">copyList</span><span class="p">:</span> |
2322 | | <span class="n">Id</span> <span class="o">=</span> <span class="n">GetPatternTreeItemId</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">G2frame</span><span class="o">.</span><span class="n">root</span><span class="p">,</span><span class="n">h</span><span class="p">)</span> |
2323 | | <span class="n">instData</span> <span class="o">=</span> <span class="n">G2frame</span><span class="o">.</span><span class="n">PatternTree</span><span class="o">.</span><span class="n">GetItemPyData</span><span class="p">(</span><span class="n">GetPatternTreeItemId</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">Id</span><span class="p">,</span><span class="s">'Instrument Parameters'</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> |
2324 | | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">hstData</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">instData</span><span class="p">)</span> <span class="ow">or</span> <span class="n">hstData</span><span class="p">[</span><span class="s">'Type'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">instData</span><span class="p">[</span><span class="s">'Type'</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span> <span class="c">#don't mix data types or lam & lam1/lam2 parms!</span> |
2325 | | <span class="k">print</span> <span class="n">h</span><span class="o">+</span><span class="s">' not copied - instrument parameters not commensurate'</span> |
2326 | | <span class="k">continue</span> |
2327 | | <span class="n">hData</span> <span class="o">=</span> <span class="n">G2frame</span><span class="o">.</span><span class="n">PatternTree</span><span class="o">.</span><span class="n">GetItemPyData</span><span class="p">(</span><span class="n">GetPatternTreeItemId</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">Id</span><span class="p">,</span><span class="n">TreeItemType</span><span class="p">))</span> |
2328 | | <span class="k">if</span> <span class="n">TreeItemType</span> <span class="o">==</span> <span class="s">'Instrument Parameters'</span><span class="p">:</span> |
2329 | | <span class="n">hData</span> <span class="o">=</span> <span class="n">hData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> |
2330 | | <span class="c">#copy the value if it is changed or we will not edit in a table</span> |
2331 | | <span class="n">valNow</span> <span class="o">=</span> <span class="n">unkey</span><span class="p">(</span><span class="n">array</span><span class="p">,</span><span class="n">keyLst</span><span class="p">)</span> |
2332 | | <span class="k">if</span> <span class="n">copyopts</span><span class="p">[</span><span class="s">'startvalue'</span><span class="p">]</span> <span class="o">!=</span> <span class="n">valNow</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">copyopts</span><span class="p">[</span><span class="s">'InTable'</span><span class="p">]:</span> |
2333 | | <span class="n">unkey</span><span class="p">(</span><span class="n">hData</span><span class="p">,</span><span class="n">keyLst</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])[</span><span class="n">keyLst</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">valNow</span> |
2334 | | <span class="n">prelbl</span> <span class="o">+=</span> <span class="p">[</span><span class="n">h</span><span class="p">]</span> |
2335 | | <span class="n">dictlst</span> <span class="o">+=</span> <span class="p">[</span><span class="n">unkey</span><span class="p">(</span><span class="n">hData</span><span class="p">,</span><span class="n">keyLst</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])]</span> |
2336 | | <span class="k">if</span> <span class="n">refdictlst</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
2337 | | <span class="n">refdictlst</span> <span class="o">+=</span> <span class="p">[</span><span class="n">unkey</span><span class="p">(</span><span class="n">hData</span><span class="p">,</span><span class="n">refkeys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])]</span> |
2338 | | <span class="k">if</span> <span class="n">refdictlst</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
2339 | | <span class="n">args</span> <span class="o">=</span> <span class="p">{}</span> |
2340 | | <span class="k">else</span><span class="p">:</span> |
2341 | | <span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="s">'checkdictlst'</span><span class="p">:</span><span class="n">refdictlst</span><span class="p">,</span> |
2342 | | <span class="s">'checkelemlst'</span><span class="p">:</span><span class="nb">len</span><span class="p">(</span><span class="n">dictlst</span><span class="p">)</span><span class="o">*</span><span class="p">[</span><span class="n">refkeys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]],</span> |
2343 | | <span class="s">'checklabel'</span><span class="p">:</span><span class="s">'Refine?'</span><span class="p">}</span> |
2344 | | <span class="k">if</span> <span class="n">copyopts</span><span class="p">[</span><span class="s">'InTable'</span><span class="p">]:</span> |
2345 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">ScrolledMultiEditor</span><span class="p">(</span> |
2346 | | <span class="n">G2frame</span><span class="o">.</span><span class="n">dataDisplay</span><span class="p">,</span><span class="n">dictlst</span><span class="p">,</span> |
2347 | | <span class="nb">len</span><span class="p">(</span><span class="n">dictlst</span><span class="p">)</span><span class="o">*</span><span class="p">[</span><span class="n">keyLst</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]],</span><span class="n">prelbl</span><span class="p">,</span> |
2348 | | <span class="n">header</span><span class="o">=</span><span class="s">'Editing parameter '</span><span class="o">+</span><span class="n">lbl</span><span class="p">,</span> |
2349 | | <span class="n">CopyButton</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> |
2350 | | <span class="n">dlg</span><span class="o">.</span><span class="n">CenterOnParent</span><span class="p">()</span> |
2351 | | <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> |
2352 | | <span class="n">array</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">saveArray</span><span class="p">)</span> |
2353 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2432 | | <span class="c">################################################################################</span></div> |
2433 | | <div class="viewcode-block" id="downdate"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.downdate">[docs]</a><span class="k">class</span> <span class="nc">downdate</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">):</span> |
2434 | | <span class="sd">'''Dialog to allow a user to select a version of GSAS-II to install</span> |
2435 | | <span class="sd"> '''</span> |
2436 | | <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="o">=</span><span class="bp">None</span><span class="p">):</span> |
2437 | | <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">DEFAULT_DIALOG_STYLE</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">RESIZE_BORDER</span> |
2438 | | <span class="n">wx</span><span class="o">.</span><span class="n">Dialog</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="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> <span class="s">'Select Version'</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="n">style</span><span class="p">)</span> |
2439 | | <span class="n">pnl</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Panel</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> |
2440 | | <span class="n">sizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span> |
2441 | | <span class="n">insver</span> <span class="o">=</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnGetRev</span><span class="p">(</span><span class="n">local</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
2442 | | <span class="n">curver</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnGetRev</span><span class="p">(</span><span class="n">local</span><span class="o">=</span><span class="bp">False</span><span class="p">))</span> |
2443 | | <span class="n">label</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span> |
2444 | | <span class="n">pnl</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> |
2445 | | <span class="s">'Select a specific GSAS-II version to install'</span> |
2446 | | <span class="p">)</span> |
2447 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">label</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTRE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> |
2448 | | <span class="n">sizer1</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span> |
2449 | | <span class="n">sizer1</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span> |
2450 | | <span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">pnl</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> |
2451 | | <span class="s">'Currently installed version: '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">insver</span><span class="p">)),</span> |
2452 | | <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTRE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> |
2453 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">sizer1</span><span class="p">)</span> |
2454 | | <span class="n">sizer1</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span> |
2455 | | <span class="n">sizer1</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span> |
2456 | | <span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">pnl</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> |
2457 | | <span class="s">'Select GSAS-II version to install: '</span><span class="p">),</span> |
2458 | | <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTRE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> |
2459 | | <span class="bp">self</span><span class="o">.</span><span class="n">spin</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">SpinCtrl</span><span class="p">(</span><span class="n">pnl</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> |
2460 | | <span class="bp">self</span><span class="o">.</span><span class="n">spin</span><span class="o">.</span><span class="n">SetRange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">curver</span><span class="p">)</span> |
2461 | | <span class="bp">self</span><span class="o">.</span><span class="n">spin</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="n">curver</span><span class="p">)</span> |
2462 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_SPINCTRL</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onSpin</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">spin</span><span class="p">)</span> |
2463 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_KILL_FOCUS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_onSpin</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">spin</span><span class="p">)</span> |
2464 | | <span class="n">sizer1</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">spin</span><span class="p">)</span> |
2465 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">sizer1</span><span class="p">)</span> |
2466 | | |
2467 | | <span class="n">line</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticLine</span><span class="p">(</span><span class="n">pnl</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">LI_HORIZONTAL</span><span class="p">)</span> |
2468 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTER</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span> |
2469 | | |
2470 | | <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="n">pnl</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> <span class="s">""</span><span class="p">)</span> |
2471 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_LEFT</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> |
2472 | | |
2473 | | <span class="n">line</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticLine</span><span class="p">(</span><span class="n">pnl</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">LI_HORIZONTAL</span><span class="p">)</span> |
2474 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTER</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span> |
2475 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span> |
2476 | | <span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span> |
2477 | | <span class="n">pnl</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> |
2478 | | <span class="s">'If "Install" is pressed, your project will be saved;</span><span class="se">\n</span><span class="s">'</span> |
2479 | | <span class="s">'GSAS-II will exit; The specified version will be loaded</span><span class="se">\n</span><span class="s">'</span> |
2480 | | <span class="s">'and GSAS-II will restart. Press "Cancel" to abort.'</span><span class="p">),</span> |
2481 | | <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span> |
2482 | | <span class="n">btnsizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StdDialogButtonSizer</span><span class="p">()</span> |
2483 | | <span class="n">btn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">pnl</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">,</span> <span class="s">"Install"</span><span class="p">)</span> |
2484 | | <span class="n">btn</span><span class="o">.</span><span class="n">SetDefault</span><span class="p">()</span> |
2485 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">AddButton</span><span class="p">(</span><span class="n">btn</span><span class="p">)</span> |
2486 | | <span class="n">btn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">pnl</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_CANCEL</span><span class="p">)</span> |
2487 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">AddButton</span><span class="p">(</span><span class="n">btn</span><span class="p">)</span> |
2488 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">Realize</span><span class="p">()</span> |
2489 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">btnsizer</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTER</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> |
2490 | | <span class="n">pnl</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">sizer</span><span class="p">)</span> |
2491 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Fit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> |
2492 | | <span class="bp">self</span><span class="o">.</span><span class="n">topsizer</span><span class="o">=</span><span class="n">sizer</span> |
2493 | | <span class="bp">self</span><span class="o">.</span><span class="n">CenterOnParent</span><span class="p">()</span> |
2494 | | <span class="bp">self</span><span class="o">.</span><span class="n">_onSpin</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> |
2495 | | |
2496 | | <span class="k">def</span> <span class="nf">_onSpin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
2497 | | <span class="s">'Called to load info about the selected version in the dialog'</span> |
2498 | | <span class="n">ver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">spin</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span> |
2499 | | <span class="n">d</span> <span class="o">=</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnGetLog</span><span class="p">(</span><span class="n">version</span><span class="o">=</span><span class="n">ver</span><span class="p">)</span> |
2500 | | <span class="n">date</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'date'</span><span class="p">,</span><span class="s">'?'</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'T'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> |
2501 | | <span class="n">s</span> <span class="o">=</span> <span class="s">'(Version '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">ver</span><span class="p">)</span><span class="o">+</span><span class="s">' created '</span><span class="o">+</span><span class="n">date</span> |
2502 | | <span class="n">s</span> <span class="o">+=</span> <span class="s">' by '</span><span class="o">+</span><span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'author'</span><span class="p">,</span><span class="s">'?'</span><span class="p">)</span><span class="o">+</span><span class="s">')'</span> |
2503 | | <span class="n">msg</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'msg'</span><span class="p">)</span> |
2504 | | <span class="k">if</span> <span class="n">msg</span><span class="p">:</span> <span class="n">s</span> <span class="o">+=</span> <span class="s">'</span><span class="se">\n\n</span><span class="s">Comment: '</span><span class="o">+</span><span class="n">msg</span> |
2505 | | <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">SetLabel</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
2506 | | <span class="bp">self</span><span class="o">.</span><span class="n">topsizer</span><span class="o">.</span><span class="n">Fit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> |
2507 | | |
2508 | | <div class="viewcode-block" id="downdate.getVersion"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.downdate.getVersion">[docs]</a> <span class="k">def</span> <span class="nf">getVersion</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2509 | | <span class="s">'Get the version number in the dialog'</span> |
2510 | | <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">spin</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span> |
2511 | | |
2512 | | <span class="c">################################################################################</span></div></div> |
2513 | | <div class="viewcode-block" id="MyHelp"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.MyHelp">[docs]</a><span class="k">class</span> <span class="nc">MyHelp</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">):</span> |
2514 | | <span class="sd">'''</span> |
2515 | | <span class="sd"> A class that creates the contents of a help menu.</span> |
2516 | | <span class="sd"> The menu will start with two entries:</span> |
2517 | | |
2518 | | <span class="sd"> * 'Help on <helpType>': where helpType is a reference to an HTML page to</span> |
2519 | | <span class="sd"> be opened</span> |
2520 | | <span class="sd"> * About: opens an About dialog using OnHelpAbout. N.B. on the Mac this</span> |
2521 | | <span class="sd"> gets moved to the App menu to be consistent with Apple style.</span> |
2522 | | |
2523 | | <span class="sd"> NOTE: for this to work properly with respect to system menus, the title</span> |
2524 | | <span class="sd"> for the menu must be &Help, or it will not be processed properly:</span> |
2525 | | |
2526 | | <span class="sd"> ::</span> |
2527 | | |
2528 | | <span class="sd"> menu.Append(menu=MyHelp(self,...),title="&Help")</span> |
2529 | | |
2530 | | <span class="sd"> '''</span> |
2531 | | <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">frame</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">helpLbl</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">morehelpitems</span><span class="o">=</span><span class="p">[],</span><span class="n">title</span><span class="o">=</span><span class="s">''</span><span class="p">):</span> |
2532 | | <span class="n">wx</span><span class="o">.</span><span class="n">Menu</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">title</span><span class="p">)</span> |
2533 | | <span class="bp">self</span><span class="o">.</span><span class="n">HelpById</span> <span class="o">=</span> <span class="p">{}</span> |
2534 | | <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">frame</span> |
2535 | | <span class="bp">self</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">help</span><span class="o">=</span><span class="s">''</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ABOUT</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ITEM_NORMAL</span><span class="p">,</span> |
2536 | | <span class="n">text</span><span class="o">=</span><span class="s">'&About GSAS-II'</span><span class="p">)</span> |
2537 | | <span class="n">frame</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_MENU</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnHelpAbout</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ABOUT</span><span class="p">)</span> |
2538 | | <span class="k">if</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">whichsvn</span><span class="p">():</span> |
2539 | | <span class="n">helpobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span> |
2540 | | <span class="n">help</span><span class="o">=</span><span class="s">''</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ITEM_NORMAL</span><span class="p">,</span> |
2541 | | <span class="n">text</span><span class="o">=</span><span class="s">'&Check for updates'</span><span class="p">)</span> |
2542 | | <span class="n">frame</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_MENU</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnCheckUpdates</span><span class="p">,</span> <span class="n">helpobj</span><span class="p">)</span> |
2543 | | <span class="n">helpobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span> |
2544 | | <span class="n">help</span><span class="o">=</span><span class="s">''</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ITEM_NORMAL</span><span class="p">,</span> |
2545 | | <span class="n">text</span><span class="o">=</span><span class="s">'&Regress to an old GSAS-II version'</span><span class="p">)</span> |
2546 | | <span class="n">frame</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_MENU</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnSelectVersion</span><span class="p">,</span> <span class="n">helpobj</span><span class="p">)</span> |
2547 | | <span class="k">for</span> <span class="n">lbl</span><span class="p">,</span><span class="n">indx</span> <span class="ow">in</span> <span class="n">morehelpitems</span><span class="p">:</span> |
2548 | | <span class="n">helpobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">lbl</span><span class="p">,</span> |
2549 | | <span class="nb">id</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ITEM_NORMAL</span><span class="p">)</span> |
2550 | | <span class="n">frame</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_MENU</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnHelpById</span><span class="p">,</span> <span class="n">helpobj</span><span class="p">)</span> |
2551 | | <span class="bp">self</span><span class="o">.</span><span class="n">HelpById</span><span class="p">[</span><span class="n">helpobj</span><span class="o">.</span><span class="n">GetId</span><span class="p">()]</span> <span class="o">=</span> <span class="n">indx</span> |
2552 | | <span class="c"># add a help item only when helpType is specified</span> |
2553 | | <span class="k">if</span> <span class="n">helpType</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
2554 | | <span class="bp">self</span><span class="o">.</span><span class="n">AppendSeparator</span><span class="p">()</span> |
2555 | | <span class="k">if</span> <span class="n">helpLbl</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">helpLbl</span> <span class="o">=</span> <span class="n">helpType</span> |
2556 | | <span class="n">helpobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s">'Help on '</span><span class="o">+</span><span class="n">helpLbl</span><span class="p">,</span> |
2557 | | <span class="nb">id</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ITEM_NORMAL</span><span class="p">)</span> |
2558 | | <span class="n">frame</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_MENU</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnHelpById</span><span class="p">,</span> <span class="n">helpobj</span><span class="p">)</span> |
2559 | | <span class="bp">self</span><span class="o">.</span><span class="n">HelpById</span><span class="p">[</span><span class="n">helpobj</span><span class="o">.</span><span class="n">GetId</span><span class="p">()]</span> <span class="o">=</span> <span class="n">helpType</span> |
2560 | | |
2561 | | <div class="viewcode-block" id="MyHelp.OnHelpById"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.MyHelp.OnHelpById">[docs]</a> <span class="k">def</span> <span class="nf">OnHelpById</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
2562 | | <span class="sd">'''Called when Help on... is pressed in a menu. Brings up</span> |
2563 | | <span class="sd"> a web page for documentation.</span> |
2564 | | <span class="sd"> '''</span> |
2565 | | <span class="n">helpType</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">HelpById</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">GetId</span><span class="p">())</span> |
2566 | | <span class="k">if</span> <span class="n">helpType</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
2567 | | <span class="k">print</span> <span class="s">'Error: help lookup failed!'</span><span class="p">,</span><span class="n">event</span><span class="o">.</span><span class="n">GetEventObject</span><span class="p">()</span> |
2568 | | <span class="k">print</span> <span class="s">'id='</span><span class="p">,</span><span class="n">event</span><span class="o">.</span><span class="n">GetId</span><span class="p">()</span> |
2569 | | <span class="k">else</span><span class="p">:</span> |
2570 | | <span class="k">if</span> <span class="n">helpType</span> <span class="o">==</span> <span class="s">'Tutorials'</span><span class="p">:</span> |
2571 | | <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">Tutorials</span> <span class="o">=</span> <span class="bp">True</span> |
2572 | | <span class="n">ShowHelp</span><span class="p">(</span><span class="n">helpType</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span> |
2573 | | </div> |
2574 | | <div class="viewcode-block" id="MyHelp.OnHelpAbout"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.MyHelp.OnHelpAbout">[docs]</a> <span class="k">def</span> <span class="nf">OnHelpAbout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> |
2575 | | <span class="s">"Display an 'About GSAS-II' box"</span> |
2576 | | <span class="k">global</span> <span class="n">__version__</span> |
2577 | | <span class="n">info</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">AboutDialogInfo</span><span class="p">()</span> |
2578 | | <span class="n">info</span><span class="o">.</span><span class="n">Name</span> <span class="o">=</span> <span class="s">'GSAS-II'</span> |
2579 | | <span class="n">ver</span> <span class="o">=</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnGetRev</span><span class="p">()</span> |
2580 | | <span class="k">if</span> <span class="n">ver</span><span class="p">:</span> |
2581 | | <span class="n">info</span><span class="o">.</span><span class="n">Version</span> <span class="o">=</span> <span class="s">'Revision '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">ver</span><span class="p">)</span><span class="o">+</span><span class="s">' (svn), version '</span><span class="o">+</span><span class="n">__version__</span> |
2582 | | <span class="k">else</span><span class="p">:</span> |
2583 | | <span class="n">info</span><span class="o">.</span><span class="n">Version</span> <span class="o">=</span> <span class="s">'Revision '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">GSASIIpath</span><span class="o">.</span><span class="n">GetVersionNumber</span><span class="p">())</span><span class="o">+</span><span class="s">' (.py files), version '</span><span class="o">+</span><span class="n">__version__</span> |
2584 | | <span class="c">#info.Developers = ['Robert B. Von Dreele','Brian H. Toby']</span> |
2585 | | <span class="n">info</span><span class="o">.</span><span class="n">Copyright</span> <span class="o">=</span> <span class="p">(</span><span class="s">'(c) '</span> <span class="o">+</span> <span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">'%Y'</span><span class="p">)</span> <span class="o">+</span> |
2586 | | <span class="sd">''' Argonne National Laboratory</span> |
2587 | | <span class="sd">This product includes software developed</span> |
2588 | | <span class="sd">by the UChicago Argonne, LLC, as </span> |
2589 | | <span class="sd">Operator of Argonne National Laboratory.'''</span><span class="p">)</span> |
2590 | | <span class="n">info</span><span class="o">.</span><span class="n">Description</span> <span class="o">=</span> <span class="s">'''General Structure Analysis System-II (GSAS-II)</span> |
2591 | | <span class="s">Robert B. Von Dreele and Brian H. Toby</span> |
2592 | | |
2593 | | <span class="s">Please cite as:</span> |
2594 | | <span class="s">B.H. Toby & R.B. Von Dreele, J. Appl. Cryst. 46, 544-549 (2013) '''</span> |
2595 | | |
2596 | | <span class="n">info</span><span class="o">.</span><span class="n">WebSite</span> <span class="o">=</span> <span class="p">(</span><span class="s">"https://subversion.xray.aps.anl.gov/trac/pyGSAS"</span><span class="p">,</span><span class="s">"GSAS-II home page"</span><span class="p">)</span> |
2597 | | <span class="n">wx</span><span class="o">.</span><span class="n">AboutBox</span><span class="p">(</span><span class="n">info</span><span class="p">)</span> |
2598 | | </div> |
2599 | | <div class="viewcode-block" id="MyHelp.OnCheckUpdates"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.MyHelp.OnCheckUpdates">[docs]</a> <span class="k">def</span> <span class="nf">OnCheckUpdates</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
2600 | | <span class="sd">'''Check if the GSAS-II repository has an update for the current source files</span> |
2601 | | <span class="sd"> and perform that update if requested.</span> |
2602 | | <span class="sd"> '''</span> |
2603 | | <span class="k">if</span> <span class="ow">not</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">whichsvn</span><span class="p">():</span> |
2604 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2605 | | <span class="s">'No Subversion'</span><span class="p">,</span><span class="s">'Cannot update GSAS-II because subversion (svn) was not found.'</span><span class="p">,</span> |
2606 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="p">)</span> |
2607 | | <span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> |
2608 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2609 | | <span class="k">return</span> |
2610 | | <span class="n">wx</span><span class="o">.</span><span class="n">BeginBusyCursor</span><span class="p">()</span> |
2611 | | <span class="n">local</span> <span class="o">=</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnGetRev</span><span class="p">()</span> |
2612 | | <span class="k">if</span> <span class="n">local</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
2613 | | <span class="n">wx</span><span class="o">.</span><span class="n">EndBusyCursor</span><span class="p">()</span> |
2614 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2615 | | <span class="s">'Unable to run subversion on the GSAS-II current directory. Is GSAS-II installed correctly?'</span><span class="p">,</span> |
2616 | | <span class="s">'Subversion error'</span><span class="p">,</span> |
2617 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="p">)</span> |
2618 | | <span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> |
2619 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2620 | | <span class="k">return</span> |
2621 | | <span class="k">print</span> <span class="s">'Installed GSAS-II version: '</span><span class="o">+</span><span class="n">local</span> |
2622 | | <span class="n">repos</span> <span class="o">=</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnGetRev</span><span class="p">(</span><span class="n">local</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> |
2623 | | <span class="n">wx</span><span class="o">.</span><span class="n">EndBusyCursor</span><span class="p">()</span> |
2624 | | <span class="k">if</span> <span class="n">repos</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
2625 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2626 | | <span class="s">'Unable to access the GSAS-II server. Is this computer on the internet?'</span><span class="p">,</span> |
2627 | | <span class="s">'Server unavailable'</span><span class="p">,</span> |
2628 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="p">)</span> |
2629 | | <span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> |
2630 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2631 | | <span class="k">return</span> |
2632 | | <span class="k">print</span> <span class="s">'GSAS-II version on server: '</span><span class="o">+</span><span class="n">repos</span> |
2633 | | <span class="k">if</span> <span class="n">local</span> <span class="o">==</span> <span class="n">repos</span><span class="p">:</span> |
2634 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2635 | | <span class="s">'GSAS-II is up-to-date. Version '</span><span class="o">+</span><span class="n">local</span><span class="o">+</span><span class="s">' is already loaded.'</span><span class="p">,</span> |
2636 | | <span class="s">'GSAS-II Up-to-date'</span><span class="p">,</span> |
2637 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="p">)</span> |
2638 | | <span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> |
2639 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2640 | | <span class="k">return</span> |
2641 | | <span class="n">mods</span> <span class="o">=</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnFindLocalChanges</span><span class="p">()</span> |
2642 | | <span class="k">if</span> <span class="n">mods</span><span class="p">:</span> |
2643 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2644 | | <span class="s">'You have version '</span><span class="o">+</span><span class="n">local</span><span class="o">+</span> |
2645 | | <span class="s">' of GSAS-II installed, but the current version is '</span><span class="o">+</span><span class="n">repos</span><span class="o">+</span> |
2646 | | <span class="s">'. However, '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">mods</span><span class="p">))</span><span class="o">+</span> |
2647 | | <span class="s">' file(s) on your local computer have been modified.'</span> |
2648 | | <span class="s">' Updating will attempt to merge your local changes with '</span> |
2649 | | <span class="s">'the latest GSAS-II version, but if '</span> |
2650 | | <span class="s">'conflicts arise, local changes will be '</span> |
2651 | | <span class="s">'discarded. It is also possible that the '</span> |
2652 | | <span class="s">'local changes my prevent GSAS-II from running. '</span> |
2653 | | <span class="s">'Press OK to start an update if this is acceptable:'</span><span class="p">,</span> |
2654 | | <span class="s">'Local GSAS-II Mods'</span><span class="p">,</span> |
2655 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">CANCEL</span><span class="p">)</span> |
2656 | | <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> |
2657 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2658 | | <span class="k">return</span> |
2659 | | <span class="k">else</span><span class="p">:</span> |
2660 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2661 | | <span class="k">else</span><span class="p">:</span> |
2662 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2663 | | <span class="s">'You have version '</span><span class="o">+</span><span class="n">local</span><span class="o">+</span> |
2664 | | <span class="s">' of GSAS-II installed, but the current version is '</span><span class="o">+</span><span class="n">repos</span><span class="o">+</span> |
2665 | | <span class="s">'. Press OK to start an update:'</span><span class="p">,</span> |
2666 | | <span class="s">'GSAS-II Updates'</span><span class="p">,</span> |
2667 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">CANCEL</span><span class="p">)</span> |
2668 | | <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> |
2669 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2670 | | <span class="k">return</span> |
2671 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2672 | | <span class="k">print</span> <span class="s">'start updates'</span> |
2673 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2674 | | <span class="s">'Your project will now be saved, GSAS-II will exit and an update '</span> |
2675 | | <span class="s">'will be performed and GSAS-II will restart. Press Cancel to '</span> |
2676 | | <span class="s">'abort the update'</span><span class="p">,</span> |
2677 | | <span class="s">'Start update?'</span><span class="p">,</span> |
2678 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">CANCEL</span><span class="p">)</span> |
2679 | | <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> |
2680 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2681 | | <span class="k">return</span> |
2682 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2683 | | <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">OnFileSave</span><span class="p">(</span><span class="n">event</span><span class="p">)</span> |
2684 | | <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnUpdateProcess</span><span class="p">(</span><span class="n">projectfile</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">GSASprojectfile</span><span class="p">)</span> |
2685 | | <span class="k">return</span> |
2686 | | </div> |
2687 | | <div class="viewcode-block" id="MyHelp.OnSelectVersion"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.MyHelp.OnSelectVersion">[docs]</a> <span class="k">def</span> <span class="nf">OnSelectVersion</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
2688 | | <span class="sd">'''Allow the user to select a specific version of GSAS-II</span> |
2689 | | <span class="sd"> '''</span> |
2690 | | <span class="k">if</span> <span class="ow">not</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">whichsvn</span><span class="p">():</span> |
2691 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="s">'No Subversion'</span><span class="p">,</span><span class="s">'Cannot update GSAS-II because subversion (svn) '</span><span class="o">+</span> |
2692 | | <span class="s">'was not found.'</span> |
2693 | | <span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="p">)</span> |
2694 | | <span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> |
2695 | | <span class="k">return</span> |
2696 | | <span class="n">local</span> <span class="o">=</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnGetRev</span><span class="p">()</span> |
2697 | | <span class="k">if</span> <span class="n">local</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
2698 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2699 | | <span class="s">'Unable to run subversion on the GSAS-II current directory. Is GSAS-II installed correctly?'</span><span class="p">,</span> |
2700 | | <span class="s">'Subversion error'</span><span class="p">,</span> |
2701 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="p">)</span> |
2702 | | <span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> |
2703 | | <span class="k">return</span> |
2704 | | <span class="n">mods</span> <span class="o">=</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnFindLocalChanges</span><span class="p">()</span> |
2705 | | <span class="k">if</span> <span class="n">mods</span><span class="p">:</span> |
2706 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MessageDialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span> |
2707 | | <span class="s">'You have version '</span><span class="o">+</span><span class="n">local</span><span class="o">+</span> |
2708 | | <span class="s">' of GSAS-II installed'</span> |
2709 | | <span class="s">'. However, '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">mods</span><span class="p">))</span><span class="o">+</span> |
2710 | | <span class="s">' file(s) on your local computer have been modified.'</span> |
2711 | | <span class="s">' Downdating will attempt to merge your local changes with '</span> |
2712 | | <span class="s">'the selected GSAS-II version. '</span> |
2713 | | <span class="s">'Downdating is not encouraged because '</span> |
2714 | | <span class="s">'if merging is not possible, your local changes will be '</span> |
2715 | | <span class="s">'discarded. It is also possible that the '</span> |
2716 | | <span class="s">'local changes my prevent GSAS-II from running. '</span> |
2717 | | <span class="s">'Press OK to continue anyway.'</span><span class="p">,</span> |
2718 | | <span class="s">'Local GSAS-II Mods'</span><span class="p">,</span> |
2719 | | <span class="n">wx</span><span class="o">.</span><span class="n">OK</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">CANCEL</span><span class="p">)</span> |
2720 | | <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> |
2721 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2722 | | <span class="k">return</span> |
2723 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2724 | | <span class="n">dlg</span> <span class="o">=</span> <span class="n">downdate</span><span class="p">(</span><span class="n">parent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span> |
2725 | | <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> |
2726 | | <span class="n">ver</span> <span class="o">=</span> <span class="n">dlg</span><span class="o">.</span><span class="n">getVersion</span><span class="p">()</span> |
2727 | | <span class="k">else</span><span class="p">:</span> |
2728 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2729 | | <span class="k">return</span> |
2730 | | <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2731 | | <span class="k">print</span><span class="p">(</span><span class="s">'start regress to '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">ver</span><span class="p">))</span> |
2732 | | <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">svnUpdateProcess</span><span class="p">(</span> |
2733 | | <span class="n">projectfile</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">GSASprojectfile</span><span class="p">,</span> |
2734 | | <span class="n">version</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">ver</span><span class="p">)</span> |
2735 | | <span class="p">)</span> |
2736 | | <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">OnFileSave</span><span class="p">(</span><span class="n">event</span><span class="p">)</span> |
2737 | | <span class="k">return</span> |
2738 | | |
2739 | | <span class="c">################################################################################</span></div></div> |
2740 | | <div class="viewcode-block" id="AddHelp"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.AddHelp">[docs]</a><span class="k">class</span> <span class="nc">AddHelp</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">):</span> |
2741 | | <span class="sd">'''For the Mac: creates an entry to the help menu of type </span> |
2742 | | <span class="sd"> 'Help on <helpType>': where helpType is a reference to an HTML page to</span> |
2743 | | <span class="sd"> be opened.</span> |
2744 | | |
2745 | | <span class="sd"> NOTE: when appending this menu (menu.Append) be sure to set the title to</span> |
2746 | | <span class="sd"> '&Help' so that wx handles it correctly.</span> |
2747 | | <span class="sd"> '''</span> |
2748 | | <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">frame</span><span class="p">,</span><span class="n">helpType</span><span class="p">,</span><span class="n">helpLbl</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">title</span><span class="o">=</span><span class="s">''</span><span class="p">):</span> |
2749 | | <span class="n">wx</span><span class="o">.</span><span class="n">Menu</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">title</span><span class="p">)</span> |
2750 | | <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">frame</span> |
2751 | | <span class="k">if</span> <span class="n">helpLbl</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">helpLbl</span> <span class="o">=</span> <span class="n">helpType</span> |
2752 | | <span class="c"># add a help item only when helpType is specified</span> |
2753 | | <span class="n">helpobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s">'Help on '</span><span class="o">+</span><span class="n">helpLbl</span><span class="p">,</span> |
2754 | | <span class="nb">id</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">ITEM_NORMAL</span><span class="p">)</span> |
2755 | | <span class="n">frame</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_MENU</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnHelpById</span><span class="p">,</span> <span class="n">helpobj</span><span class="p">)</span> |
2756 | | <span class="bp">self</span><span class="o">.</span><span class="n">HelpById</span> <span class="o">=</span> <span class="n">helpType</span> |
2757 | | |
2758 | | <div class="viewcode-block" id="AddHelp.OnHelpById"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.AddHelp.OnHelpById">[docs]</a> <span class="k">def</span> <span class="nf">OnHelpById</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
2759 | | <span class="sd">'''Called when Help on... is pressed in a menu. Brings up</span> |
2760 | | <span class="sd"> a web page for documentation.</span> |
2761 | | <span class="sd"> '''</span> |
2762 | | <span class="n">ShowHelp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">HelpById</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span> |
2763 | | |
2764 | | <span class="c">################################################################################</span></div></div> |
2765 | | <div class="viewcode-block" id="HelpButton"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.HelpButton">[docs]</a><span class="k">class</span> <span class="nc">HelpButton</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">):</span> |
2766 | | <span class="sd">'''Create a help button that displays help information.</span> |
2767 | | <span class="sd"> The text is displayed in a modal message window.</span> |
2768 | | |
2769 | | <span class="sd"> TODO: it might be nice if it were non-modal: e.g. it stays around until</span> |
2770 | | <span class="sd"> the parent is deleted or the user closes it, but this did not work for</span> |
2771 | | <span class="sd"> me. </span> |
2772 | | |
2773 | | <span class="sd"> :param parent: the panel which will be the parent of the button</span> |
2774 | | <span class="sd"> :param str msg: the help text to be displayed</span> |
2775 | | <span class="sd"> '''</span> |
2776 | | <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">msg</span><span class="p">):</span> |
2777 | | <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">"darwin"</span><span class="p">:</span> |
2778 | | <span class="n">wx</span><span class="o">.</span><span class="n">Button</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="n">wx</span><span class="o">.</span><span class="n">ID_HELP</span><span class="p">)</span> |
2779 | | <span class="k">else</span><span class="p">:</span> |
2780 | | <span class="n">wx</span><span class="o">.</span><span class="n">Button</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="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="s">'?'</span><span class="p">,</span><span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">BU_EXACTFIT</span><span class="p">)</span> |
2781 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">_onPress</span><span class="p">)</span> |
2782 | | <span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="o">=</span><span class="n">msg</span> |
2783 | | <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> |
2784 | | <span class="k">def</span> <span class="nf">_onClose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
2785 | | <span class="bp">self</span><span class="o">.</span><span class="n">dlg</span><span class="o">.</span><span class="n">EndModal</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_CANCEL</span><span class="p">)</span> |
2786 | | <span class="k">def</span> <span class="nf">_onPress</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
2787 | | <span class="s">'Respond to a button press by displaying the requested text'</span> |
2788 | | <span class="c">#dlg = wx.MessageDialog(self.parent,self.msg,'Help info',wx.OK)</span> |
2789 | | <span class="bp">self</span><span class="o">.</span><span class="n">dlg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="s">'Help information'</span><span class="p">,</span> |
2790 | | <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">DEFAULT_DIALOG_STYLE</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">RESIZE_BORDER</span><span class="p">)</span> |
2791 | | <span class="c">#self.dlg.SetBackgroundColour(wx.WHITE)</span> |
2792 | | <span class="n">mainSizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span> |
2793 | | <span class="n">txt</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dlg</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ID_ANY</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">)</span> |
2794 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">txt</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span> |
2795 | | <span class="n">txt</span><span class="o">.</span><span class="n">SetBackgroundColour</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">WHITE</span><span class="p">)</span> |
2796 | | |
2797 | | <span class="n">btnsizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span> |
2798 | | <span class="n">btn</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dlg</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_CLOSE</span><span class="p">)</span> |
2799 | | <span class="n">btn</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">_onClose</span><span class="p">)</span> |
2800 | | <span class="n">btnsizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">btn</span><span class="p">)</span> |
2801 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">btnsizer</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTER</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> |
2802 | | <span class="bp">self</span><span class="o">.</span><span class="n">dlg</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">mainSizer</span><span class="p">)</span> |
2803 | | <span class="n">mainSizer</span><span class="o">.</span><span class="n">Fit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dlg</span><span class="p">)</span> |
2804 | | <span class="bp">self</span><span class="o">.</span><span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> |
2805 | | <span class="bp">self</span><span class="o">.</span><span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span> |
2806 | | <span class="c">################################################################################</span></div> |
2807 | | <div class="viewcode-block" id="MyHtmlPanel"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.MyHtmlPanel">[docs]</a><span class="k">class</span> <span class="nc">MyHtmlPanel</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Panel</span><span class="p">):</span> |
2808 | | <span class="sd">'''Defines a panel to display HTML help information, as an alternative to</span> |
2809 | | <span class="sd"> displaying help information in a web browser.</span> |
2810 | | <span class="sd"> '''</span> |
2811 | | <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">frame</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span> |
2812 | | <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">frame</span> |
2813 | | <span class="n">wx</span><span class="o">.</span><span class="n">Panel</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">frame</span><span class="p">,</span> <span class="nb">id</span><span class="p">)</span> |
2814 | | <span class="n">sizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span> |
2815 | | <span class="n">back</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">"Back"</span><span class="p">)</span> |
2816 | | <span class="n">back</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnBack</span><span class="p">)</span> |
2817 | | <span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span> <span class="o">=</span> <span class="n">G2HtmlWindow</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">750</span><span class="p">,</span><span class="mi">450</span><span class="p">))</span> |
2818 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">)</span> |
2819 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">back</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_LEFT</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> |
2820 | | <span class="bp">self</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">sizer</span><span class="p">)</span> |
2821 | | <span class="n">sizer</span><span class="o">.</span><span class="n">Fit</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> |
2822 | | <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_SIZE</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">OnHelpSize</span><span class="p">)</span> |
2823 | | <span class="k">def</span> <span class="nf">OnHelpSize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> <span class="c">#does the job but weirdly!!</span> |
2824 | | <span class="n">anchor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span><span class="o">.</span><span class="n">GetOpenedAnchor</span><span class="p">()</span> |
2825 | | <span class="k">if</span> <span class="n">anchor</span><span class="p">:</span> |
2826 | | <span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span><span class="o">.</span><span class="n">ScrollToAnchor</span><span class="p">(</span><span class="n">anchor</span><span class="p">)</span> |
2827 | | <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">htmlwin</span><span class="o">.</span><span class="n">ScrollToAnchor</span><span class="p">,</span><span class="n">anchor</span><span class="p">)</span> |
2828 | | <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span> |
2829 | | <span class="k">def</span> <span class="nf">OnBack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> |
2830 | | <span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span><span class="o">.</span><span class="n">HistoryBack</span><span class="p">()</span> |
2831 | | <span class="k">def</span> <span class="nf">LoadFile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="nb">file</span><span class="p">):</span> |
2832 | | <span class="n">pos</span> <span class="o">=</span> <span class="nb">file</span><span class="o">.</span><span class="n">rfind</span><span class="p">(</span><span class="s">'#'</span><span class="p">)</span> |
2833 | | <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> |
2834 | | <span class="n">helpfile</span> <span class="o">=</span> <span class="nb">file</span><span class="p">[:</span><span class="n">pos</span><span class="p">]</span> |
2835 | | <span class="n">helpanchor</span> <span class="o">=</span> <span class="nb">file</span><span class="p">[</span><span class="n">pos</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span> |
2836 | | <span class="k">else</span><span class="p">:</span> |
2837 | | <span class="n">helpfile</span> <span class="o">=</span> <span class="nb">file</span> |
2838 | | <span class="n">helpanchor</span> <span class="o">=</span> <span class="bp">None</span> |
2839 | | <span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span><span class="o">.</span><span class="n">LoadPage</span><span class="p">(</span><span class="n">helpfile</span><span class="p">)</span> |
2840 | | <span class="k">if</span> <span class="n">helpanchor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
2841 | | <span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span><span class="o">.</span><span class="n">ScrollToAnchor</span><span class="p">(</span><span class="n">helpanchor</span><span class="p">)</span> |
2842 | | <span class="n">xs</span><span class="p">,</span><span class="n">ys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span><span class="o">.</span><span class="n">GetViewStart</span><span class="p">()</span> |
2843 | | <span class="bp">self</span><span class="o">.</span><span class="n">htmlwin</span><span class="o">.</span><span class="n">Scroll</span><span class="p">(</span><span class="n">xs</span><span class="p">,</span><span class="n">ys</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> |
2844 | | </div> |
2845 | | <div class="viewcode-block" id="G2HtmlWindow"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2HtmlWindow">[docs]</a><span class="k">class</span> <span class="nc">G2HtmlWindow</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">HtmlWindow</span><span class="p">):</span> |
2846 | | <span class="sd">'''Displays help information in a primitive HTML browser type window</span> |
2847 | | <span class="sd"> '''</span> |
2848 | | <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="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> |
2849 | | <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> |
2850 | | <span class="n">wx</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">HtmlWindow</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="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> |
2851 | | <span class="k">def</span> <span class="nf">LoadPage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> |
2852 | | <span class="n">wx</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">HtmlWindow</span><span class="o">.</span><span class="n">LoadPage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> |
2853 | | <span class="bp">self</span><span class="o">.</span><span class="n">TitlePage</span><span class="p">()</span> |
2854 | | <span class="k">def</span> <span class="nf">OnLinkClicked</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> |
2855 | | <span class="n">wx</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">HtmlWindow</span><span class="o">.</span><span class="n">OnLinkClicked</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> |
2856 | | <span class="n">xs</span><span class="p">,</span><span class="n">ys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetViewStart</span><span class="p">()</span> |
2857 | | <span class="bp">self</span><span class="o">.</span><span class="n">Scroll</span><span class="p">(</span><span class="n">xs</span><span class="p">,</span><span class="n">ys</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> |
2858 | | <span class="bp">self</span><span class="o">.</span><span class="n">TitlePage</span><span class="p">()</span> |
2859 | | <span class="k">def</span> <span class="nf">HistoryBack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> |
2860 | | <span class="n">wx</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">HtmlWindow</span><span class="o">.</span><span class="n">HistoryBack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> |
2861 | | <span class="bp">self</span><span class="o">.</span><span class="n">TitlePage</span><span class="p">()</span> |
2862 | | <span class="k">def</span> <span class="nf">TitlePage</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2863 | | <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">SetTitle</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetOpenedPage</span><span class="p">()</span> <span class="o">+</span> <span class="s">' -- '</span> <span class="o">+</span> |
2864 | | <span class="bp">self</span><span class="o">.</span><span class="n">GetOpenedPageTitle</span><span class="p">())</span> |
2865 | | |