Ignore:
Timestamp:
Mar 14, 2015 5:35:03 PM (8 years ago)
Author:
toby
Message:

change sphinx docs links; rebuild & fixing minor formatting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sphinxdocs/build/html/_modules/GSASIIgrid.html

    r1513 r1709  
    5252<span class="c">#GSASIIgrid - data display routines</span>
    5353<span class="c">########### SVN repository information ###################</span>
    54 <span class="c"># $Date: 2014-10-01 22:35:23 -0500 (Wed, 01 Oct 2014) $</span>
    55 <span class="c"># $Author: toby $</span>
    56 <span class="c"># $Revision: 1512 $</span>
     54<span class="c"># $Date: 2015-03-13 15:46:05 -0500 (Fri, 13 Mar 2015) $</span>
     55<span class="c"># $Author: vondreele $</span>
     56<span class="c"># $Revision: 1699 $</span>
    5757<span class="c"># $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/GSASIIgrid.py $</span>
    58 <span class="c"># $Id: GSASIIgrid.py 1512 2014-10-02 03:35:23Z toby $</span>
     58<span class="c"># $Id: GSASIIgrid.py 1699 2015-03-13 20:46:05Z vondreele $</span>
    5959<span class="c">########### SVN repository information ###################</span>
    6060<span class="sd">&#39;&#39;&#39;</span>
    6161<span class="sd">*GSASIIgrid: Basic GUI routines*</span>
    6262<span class="sd">--------------------------------</span>
     63
     64<span class="sd">Note that a number of routines here should be moved to GSASIIctrls eventually, such as</span>
     65<span class="sd">G2LoggedButton, EnumSelector, G2ChoiceButton, SingleFloatDialog, SingleStringDialog,</span>
     66<span class="sd">MultiStringDialog, G2MultiChoiceDialog, G2SingleChoiceDialog, G2ColumnIDDialog, ItemSelector, GridFractionEditor</span>
     67
     68<span class="sd">Probably SGMessageBox, SymOpDialog, DisAglDialog, too. </span>
    6369
    6470<span class="sd">&#39;&#39;&#39;</span>
     
    7682<span class="kn">import</span> <span class="nn">numpy.ma</span> <span class="kn">as</span> <span class="nn">ma</span>
    7783<span class="kn">import</span> <span class="nn">scipy.optimize</span> <span class="kn">as</span> <span class="nn">so</span>
    78 <span class="kn">import</span> <span class="nn">wx.html</span>        <span class="c"># could postpone this for quicker startup</span>
    79 <span class="kn">import</span> <span class="nn">webbrowser</span>     <span class="c"># could postpone this for quicker startup</span>
    8084<span class="kn">import</span> <span class="nn">GSASIIpath</span>
    81 <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">&quot;$Revision: 1512 $&quot;</span><span class="p">)</span>
     85<span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">&quot;$Revision: 1699 $&quot;</span><span class="p">)</span>
    8286<span class="kn">import</span> <span class="nn">GSASIImath</span> <span class="kn">as</span> <span class="nn">G2mth</span>
    8387<span class="kn">import</span> <span class="nn">GSASIIIO</span> <span class="kn">as</span> <span class="nn">G2IO</span>
     
    96100<span class="kn">import</span> <span class="nn">GSASIIexprGUI</span> <span class="kn">as</span> <span class="nn">G2exG</span>
    97101<span class="kn">import</span> <span class="nn">GSASIIlog</span> <span class="kn">as</span> <span class="nn">log</span>
     102<span class="kn">import</span> <span class="nn">GSASIIctrls</span> <span class="kn">as</span> <span class="nn">G2G</span>
    98103
    99104<span class="c"># trig functions in degrees</span>
     
    102107<span class="n">cosd</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mf">180.</span><span class="p">)</span>
    103108
    104 <span class="c"># globals we will use later</span>
    105 <span class="n">__version__</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># gets overridden in GSASII.py</span>
    106 <span class="n">path2GSAS2</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">realpath</span><span class="p">(</span><span class="n">__file__</span><span class="p">))</span> <span class="c"># save location of this file</span>
    107 <span class="n">helpLocDict</span> <span class="o">=</span> <span class="p">{}</span>
    108 <span class="n">htmlPanel</span> <span class="o">=</span> <span class="bp">None</span>
    109 <span class="n">htmlFrame</span> <span class="o">=</span> <span class="bp">None</span>
    110 <span class="n">helpMode</span> <span class="o">=</span> <span class="s">&#39;browser&#39;</span>
    111 <span class="c">#if sys.platform.lower().startswith(&#39;win&#39;): helpMode = &#39;internal&#39; # need a global control to set this</span>
    112    
    113 <span class="n">htmlFirstUse</span> <span class="o">=</span> <span class="bp">True</span>
     109<span class="c"># Define a short name for convenience</span>
    114110<span class="n">WACV</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTER_VERTICAL</span>
    115111
     
    117113    <span class="n">wxID_CHARGEFLIP</span><span class="p">,</span> <span class="n">wxID_PEAKSUNIQUE</span><span class="p">,</span> <span class="n">wxID_PEAKSDELETE</span><span class="p">,</span> <span class="n">wxID_PEAKSDA</span><span class="p">,</span>
    118114    <span class="n">wxID_PEAKSDISTVP</span><span class="p">,</span> <span class="n">wxID_PEAKSVIEWPT</span><span class="p">,</span> <span class="n">wxID_FINDEQVPEAKS</span><span class="p">,</span><span class="n">wxID_SHOWBONDS</span><span class="p">,</span><span class="n">wxID_MULTIMCSA</span><span class="p">,</span>
    119     <span class="n">wxID_SINGLEMCSA</span>
    120 <span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">15</span><span class="p">)]</span>
    121 
    122 <span class="p">[</span> <span class="n">wxID_PWDRADD</span><span class="p">,</span> <span class="n">wxID_HKLFADD</span><span class="p">,</span> <span class="n">wxID_PWDANALYSIS</span><span class="p">,</span> <span class="n">wxID_PWDCOPY</span><span class="p">,</span> <span class="n">wxID_DATADELETE</span><span class="p">,</span>
    123 <span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">)]</span>
     115    <span class="n">wxID_SINGLEMCSA</span><span class="p">,</span> <span class="n">wxID_4DMAPCOMPUTE</span><span class="p">,</span><span class="n">wxID_4DCHARGEFLIP</span><span class="p">,</span>
     116<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">17</span><span class="p">)]</span>
     117
     118<span class="p">[</span> <span class="n">wxID_PWDRADD</span><span class="p">,</span> <span class="n">wxID_HKLFADD</span><span class="p">,</span> <span class="n">wxID_PWDANALYSIS</span><span class="p">,</span> <span class="n">wxID_PWDCOPY</span><span class="p">,</span> <span class="n">wxID_PLOTCTRLCOPY</span><span class="p">,</span>
     119    <span class="n">wxID_DATADELETE</span><span class="p">,</span>
     120<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">)]</span>
    124121
    125122<span class="p">[</span> <span class="n">wxID_ATOMSEDITADD</span><span class="p">,</span> <span class="n">wxID_ATOMSEDITINSERT</span><span class="p">,</span> <span class="n">wxID_ATOMSEDITDELETE</span><span class="p">,</span> <span class="n">wxID_ATOMSREFINE</span><span class="p">,</span>
    126123    <span class="n">wxID_ATOMSMODIFY</span><span class="p">,</span> <span class="n">wxID_ATOMSTRANSFORM</span><span class="p">,</span> <span class="n">wxID_ATOMSVIEWADD</span><span class="p">,</span> <span class="n">wxID_ATOMVIEWINSERT</span><span class="p">,</span>
    127     <span class="n">wxID_RELOADDRAWATOMS</span><span class="p">,</span><span class="n">wxID_ATOMSDISAGL</span><span class="p">,</span><span class="n">wxID_ATOMMOVE</span><span class="p">,</span>
     124    <span class="n">wxID_RELOADDRAWATOMS</span><span class="p">,</span><span class="n">wxID_ATOMSDISAGL</span><span class="p">,</span><span class="n">wxID_ATOMMOVE</span><span class="p">,</span><span class="n">wxID_MAKEMOLECULE</span><span class="p">,</span>
    128125    <span class="n">wxID_ASSIGNATMS2RB</span><span class="p">,</span><span class="n">wxID_ATOMSPDISAGL</span><span class="p">,</span> <span class="n">wxID_ISODISP</span><span class="p">,</span>
    129 <span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">14</span><span class="p">)]</span>
     126<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">15</span><span class="p">)]</span>
    130127
    131128<span class="p">[</span> <span class="n">wxID_DRAWATOMSTYLE</span><span class="p">,</span> <span class="n">wxID_DRAWATOMLABEL</span><span class="p">,</span> <span class="n">wxID_DRAWATOMCOLOR</span><span class="p">,</span> <span class="n">wxID_DRAWATOMRESETCOLOR</span><span class="p">,</span>
     
    151148<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">8</span><span class="p">)]</span>
    152149
    153 <span class="p">[</span> <span class="n">wxID_MASKCOPY</span><span class="p">,</span> <span class="n">wxID_MASKSAVE</span><span class="p">,</span> <span class="n">wxID_MASKLOAD</span><span class="p">,</span><span class="n">wxID_NEWMASKSPOT</span><span class="p">,</span><span class="n">wxID_NEWMASKARC</span><span class="p">,</span><span class="n">wxID_NEWMASKRING</span><span class="p">,</span>
    154     <span class="n">wxID_NEWMASKFRAME</span><span class="p">,</span> <span class="n">wxID_NEWMASKPOLY</span><span class="p">,</span>
     150<span class="p">[</span> <span class="n">wxID_MASKCOPY</span><span class="p">,</span> <span class="n">wxID_MASKSAVE</span><span class="p">,</span> <span class="n">wxID_MASKLOAD</span><span class="p">,</span> <span class="n">wxID_NEWMASKSPOT</span><span class="p">,</span><span class="n">wxID_NEWMASKARC</span><span class="p">,</span><span class="n">wxID_NEWMASKRING</span><span class="p">,</span>
     151    <span class="n">wxID_NEWMASKFRAME</span><span class="p">,</span> <span class="n">wxID_NEWMASKPOLY</span><span class="p">,</span>  <span class="n">wxID_MASKLOADNOT</span><span class="p">,</span>
     152<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">9</span><span class="p">)]</span>
     153
     154<span class="p">[</span> <span class="n">wxID_STRSTACOPY</span><span class="p">,</span> <span class="n">wxID_STRSTAFIT</span><span class="p">,</span> <span class="n">wxID_STRSTASAVE</span><span class="p">,</span> <span class="n">wxID_STRSTALOAD</span><span class="p">,</span><span class="n">wxID_STRSTSAMPLE</span><span class="p">,</span>
     155    <span class="n">wxID_APPENDDZERO</span><span class="p">,</span><span class="n">wxID_STRSTAALLFIT</span><span class="p">,</span><span class="n">wxID_UPDATEDZERO</span><span class="p">,</span>
    155156<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">8</span><span class="p">)]</span>
    156157
    157 <span class="p">[</span> <span class="n">wxID_STRSTACOPY</span><span class="p">,</span> <span class="n">wxID_STRSTAFIT</span><span class="p">,</span> <span class="n">wxID_STRSTASAVE</span><span class="p">,</span> <span class="n">wxID_STRSTALOAD</span><span class="p">,</span><span class="n">wxID_APPENDDZERO</span><span class="p">,</span>
    158     <span class="n">wxID_STRSTAALLFIT</span><span class="p">,</span><span class="n">wxID_UPDATEDZERO</span><span class="p">,</span>
    159 <span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">7</span><span class="p">)]</span>
    160 
    161158<span class="p">[</span> <span class="n">wxID_BACKCOPY</span><span class="p">,</span><span class="n">wxID_LIMITCOPY</span><span class="p">,</span> <span class="n">wxID_SAMPLECOPY</span><span class="p">,</span> <span class="n">wxID_SAMPLECOPYSOME</span><span class="p">,</span> <span class="n">wxID_BACKFLAGCOPY</span><span class="p">,</span> <span class="n">wxID_SAMPLEFLAGCOPY</span><span class="p">,</span>
    162     <span class="n">wxID_SAMPLESAVE</span><span class="p">,</span> <span class="n">wxID_SAMPLELOAD</span><span class="p">,</span><span class="n">wxID_ADDEXCLREGION</span><span class="p">,</span><span class="n">wxID_SETSCALE</span><span class="p">,</span><span class="n">wxID_SAMPLE1VAL</span>
    163 <span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">11</span><span class="p">)]</span>
     159    <span class="n">wxID_SAMPLESAVE</span><span class="p">,</span> <span class="n">wxID_SAMPLELOAD</span><span class="p">,</span><span class="n">wxID_ADDEXCLREGION</span><span class="p">,</span><span class="n">wxID_SETSCALE</span><span class="p">,</span><span class="n">wxID_SAMPLE1VAL</span><span class="p">,</span><span class="n">wxID_ALLSAMPLELOAD</span><span class="p">,</span>
     160<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">12</span><span class="p">)]</span>
    164161
    165162<span class="p">[</span> <span class="n">wxID_INSTPRMRESET</span><span class="p">,</span><span class="n">wxID_CHANGEWAVETYPE</span><span class="p">,</span><span class="n">wxID_INSTCOPY</span><span class="p">,</span> <span class="n">wxID_INSTFLAGCOPY</span><span class="p">,</span> <span class="n">wxID_INSTLOAD</span><span class="p">,</span>
     
    184181<span class="p">[</span> <span class="n">wxID_RIGIDBODYADD</span><span class="p">,</span><span class="n">wxID_DRAWDEFINERB</span><span class="p">,</span><span class="n">wxID_RIGIDBODYIMPORT</span><span class="p">,</span><span class="n">wxID_RESIDUETORSSEQ</span><span class="p">,</span>
    185182    <span class="n">wxID_AUTOFINDRESRB</span><span class="p">,</span><span class="n">wxID_GLOBALRESREFINE</span><span class="p">,</span><span class="n">wxID_RBREMOVEALL</span><span class="p">,</span><span class="n">wxID_COPYRBPARMS</span><span class="p">,</span>
    186     <span class="n">wxID_GLOBALTHERM</span><span class="p">,</span>
    187 <span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">9</span><span class="p">)]</span>
    188 
    189 <span class="p">[</span> <span class="n">wxID_RENAMESEQSEL</span><span class="p">,</span><span class="n">wxID_SAVESEQSEL</span><span class="p">,</span><span class="n">wxID_SAVESEQSELCSV</span><span class="p">,</span><span class="n">wxID_PLOTSEQSEL</span><span class="p">,</span>
    190   <span class="n">wxADDSEQVAR</span><span class="p">,</span><span class="n">wxDELSEQVAR</span><span class="p">,</span><span class="n">wxEDITSEQVAR</span><span class="p">,</span><span class="n">wxCOPYPARFIT</span><span class="p">,</span>
     183    <span class="n">wxID_GLOBALTHERM</span><span class="p">,</span><span class="n">wxID_VECTORBODYADD</span>
     184<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)]</span>
     185
     186<span class="p">[</span> <span class="n">wxID_RENAMESEQSEL</span><span class="p">,</span><span class="n">wxID_SAVESEQSEL</span><span class="p">,</span><span class="n">wxID_SAVESEQSELCSV</span><span class="p">,</span><span class="n">wxID_SAVESEQCSV</span><span class="p">,</span><span class="n">wxID_PLOTSEQSEL</span><span class="p">,</span>
     187  <span class="n">wxID_ORGSEQSEL</span><span class="p">,</span><span class="n">wxADDSEQVAR</span><span class="p">,</span><span class="n">wxDELSEQVAR</span><span class="p">,</span><span class="n">wxEDITSEQVAR</span><span class="p">,</span><span class="n">wxCOPYPARFIT</span><span class="p">,</span>
    191188  <span class="n">wxADDPARFIT</span><span class="p">,</span><span class="n">wxDELPARFIT</span><span class="p">,</span><span class="n">wxEDITPARFIT</span><span class="p">,</span><span class="n">wxDOPARFIT</span><span class="p">,</span>
    192 <span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">12</span><span class="p">)]</span>
     189<span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">wx</span><span class="o">.</span><span class="n">NewId</span><span class="p">()</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">14</span><span class="p">)]</span>
    193190
    194191<span class="p">[</span> <span class="n">wxID_MODELCOPY</span><span class="p">,</span><span class="n">wxID_MODELFIT</span><span class="p">,</span><span class="n">wxID_MODELADD</span><span class="p">,</span><span class="n">wxID_ELEMENTADD</span><span class="p">,</span><span class="n">wxID_ELEMENTDELETE</span><span class="p">,</span>
     
    212209<span class="c">################################################################################</span>
    213210
    214 <div class="viewcode-block" id="G2TreeCtrl"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2TreeCtrl">[docs]</a><span class="k">class</span> <span class="nc">G2TreeCtrl</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">TreeCtrl</span><span class="p">):</span>
    215     <span class="sd">&#39;&#39;&#39;Create a wrapper around the standard TreeCtrl so we can &quot;wrap&quot;</span>
    216 <span class="sd">    various events.</span>
    217 <span class="sd">    </span>
    218 <span class="sd">    This logs when a tree item is selected (in :meth:`onSelectionChanged`)</span>
    219 
    220 <span class="sd">    This also wraps lists and dicts pulled out of the tree to track where</span>
    221 <span class="sd">    they were retrieved from.</span>
     211<div class="viewcode-block" id="SGMessageBox"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.SGMessageBox">[docs]</a><span class="k">class</span> <span class="nc">SGMessageBox</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">):</span>
     212    <span class="sd">&#39;&#39;&#39; Special version of MessageBox that displays space group &amp; super space group text</span>
     213<span class="sd">    in two blocks</span>
    222214<span class="sd">    &#39;&#39;&#39;</span>
    223     <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><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>
    224         <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">__init__</span><span class="p">(</span><span class="n">parent</span><span class="o">=</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>
    225         <span class="bp">self</span><span class="o">.</span><span class="n">G2frame</span> <span class="o">=</span> <span class="n">parent</span><span class="o">.</span><span class="n">GetParent</span><span class="p">()</span>
    226         <span class="bp">self</span><span class="o">.</span><span class="n">root</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">AddRoot</span><span class="p">(</span><span class="s">&#39;Loaded Data: &#39;</span><span class="p">)</span>
    227         <span class="bp">self</span><span class="o">.</span><span class="n">SelectionChanged</span> <span class="o">=</span> <span class="bp">None</span>
    228         <span class="n">log</span><span class="o">.</span><span class="n">LogInfo</span><span class="p">[</span><span class="s">&#39;Tree&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span>
    229 
    230     <span class="k">def</span> <span class="nf">_getTreeItemsList</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">item</span><span class="p">):</span>
    231         <span class="sd">&#39;&#39;&#39;Get the full tree hierarchy from a reference to a tree item.</span>
    232 <span class="sd">        Note that this effectively hard-codes phase and histogram names in the</span>
    233 <span class="sd">        returned list. We may want to make these names relative in the future.</span>
     215    <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">text</span><span class="p">,</span><span class="n">table</span><span class="p">,):</span>
     216        <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">title</span><span class="p">,</span><span class="n">pos</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">DefaultPosition</span><span class="p">,</span>
     217            <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>
     218        <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="o">=</span><span class="n">text</span>
     219        <span class="bp">self</span><span class="o">.</span><span class="n">table</span> <span class="o">=</span> <span class="n">table</span>
     220        <span class="bp">self</span><span class="o">.</span><span class="n">panel</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>
     221        <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>
     222        <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>
     223        <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span>
     224            <span class="n">mainSizer</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="o">.</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s">&#39;     </span><span class="si">%s</span><span class="s">     &#39;</span><span class="o">%</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">WACV</span><span class="p">)</span>
     225        <span class="n">ncol</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">table</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&#39;,&#39;</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span>
     226        <span class="n">tableSizer</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="o">*</span><span class="n">ncol</span><span class="o">+</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
     227        <span class="k">for</span> <span class="n">j</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">table</span><span class="p">):</span>
     228            <span class="n">num</span><span class="p">,</span><span class="n">flds</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;)&#39;</span><span class="p">)</span>
     229            <span class="n">tableSizer</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="o">.</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s">&#39;     </span><span class="si">%s</span><span class="s">  &#39;</span><span class="o">%</span><span class="p">(</span><span class="n">num</span><span class="o">+</span><span class="s">&#39;)&#39;</span><span class="p">)),</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_LEFT</span><span class="p">)</span>           
     230            <span class="n">flds</span> <span class="o">=</span> <span class="n">flds</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;,&#39;</span><span class="p">)</span>
     231            <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">fld</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">flds</span><span class="p">):</span>
     232                <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ncol</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span>
     233                    <span class="n">tableSizer</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="o">.</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s">&#39;</span><span class="si">%s</span><span class="s">, &#39;</span><span class="o">%</span><span class="p">(</span><span class="n">fld</span><span class="p">)),</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_RIGHT</span><span class="p">)</span>
     234                <span class="k">else</span><span class="p">:</span>
     235                    <span class="n">tableSizer</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="o">.</span><span class="n">panel</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s">&#39;</span><span class="si">%s</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">fld</span><span class="p">)),</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_RIGHT</span><span class="p">)</span>
     236            <span class="k">if</span> <span class="ow">not</span> <span class="n">j</span><span class="o">%</span><span class="mi">2</span><span class="p">:</span>
     237                <span class="n">tableSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="mi">20</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span>
     238        <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">tableSizer</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>
     239        <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>
     240        <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="o">.</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>
     241        <span class="n">OKbtn</span><span class="o">.</span><span class="n">SetDefault</span><span class="p">()</span>
     242        <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>
     243        <span class="n">btnsizer</span><span class="o">.</span><span class="n">Realize</span><span class="p">()</span>
     244        <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>
     245        <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>
     246        <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">mainSizer</span><span class="p">)</span>
     247        <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">Fit</span><span class="p">()</span>
     248        <span class="bp">self</span><span class="o">.</span><span class="n">Fit</span><span class="p">()</span>
     249        <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetSize</span><span class="p">()</span>
     250        <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><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">20</span><span class="p">,</span><span class="n">size</span><span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
     251
     252<div class="viewcode-block" id="SGMessageBox.Show"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.SGMessageBox.Show">[docs]</a>    <span class="k">def</span> <span class="nf">Show</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     253        <span class="sd">&#39;&#39;&#39;Use this method after creating the dialog to post it</span>
    234254<span class="sd">        &#39;&#39;&#39;</span>
    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">&#39;&#39;&#39;Log each press on a tree item here. </span>
    245 <span class="sd">        &#39;&#39;&#39;</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">&#39;Logging&#39;</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">&quot;Phases&quot;</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">&gt;</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">&#39;&#39;&#39;Override the Bind() function so that page change events can be trapped</span>
    257 <span class="sd">        &#39;&#39;&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&quot;Histogram not found: &quot;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&quot;Histogram #&#39;+str(histnum)+&#39; of type &quot;</span><span class="o">+</span><span class="n">histtype</span><span class="o">+</span><span class="s">&#39; not found&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&quot;Phases&quot;</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">&quot;No phases found &quot;</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">&#39;&#39;&#39;Converts relative phase number to a phase name in</span>
    337 <span class="sd">        the current project</span>
    338 <span class="sd">        &#39;&#39;&#39;</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">&quot;Phases&quot;</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">&quot;Phase &quot;</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">&quot; not found&quot;</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">&quot;No phases found &quot;</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>
    357260<div class="viewcode-block" id="G2LoggedButton"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2LoggedButton">[docs]</a><span class="k">class</span> <span class="nc">G2LoggedButton</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">):</span>
    358261    <span class="sd">&#39;&#39;&#39;A version of wx.Button that creates logging events. Bindings are saved</span>
    359262<span class="sd">    in the object, and are looked up rather than directly set with a bind.</span>
    360263<span class="sd">    An index to these buttons is saved as log.ButtonBindingLookup</span>
     264<span class="sd">    :param wx.Panel parent: parent widget</span>
     265<span class="sd">    :param int id: Id for button</span>
     266<span class="sd">    :param str label: label for button</span>
     267<span class="sd">    :param str locationcode: a label used internally to uniquely indentify the button</span>
     268<span class="sd">    :param function handler: a routine to call when the button is pressed</span>
    361269<span class="sd">    &#39;&#39;&#39;</span>
    362     <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="nb">id</span><span class="p">,</span><span class="n">label</span><span class="p">,</span><span class="n">locationcode</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>
     270    <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="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">label</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">locationcode</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">,</span>
     271                 <span class="n">handler</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="o">*</span><span class="n">args</span><span class="p">,</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
    363272        <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">__init__</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span><span class="nb">id</span><span class="p">,</span><span class="n">label</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>
    364273        <span class="bp">self</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="n">label</span>
     
    372281        <span class="n">log</span><span class="o">.</span><span class="n">MakeButtonLog</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">locationcode</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">label</span><span class="p">)</span>
    373282        <span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
    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">&#39;&#39;&#39;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 &amp; 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 &#39;?&#39; or &#39;.&#39; 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">    &#39;&#39;&#39;</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">&quot;ValidatedTxtCtrl error: value of &quot;</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">&quot; element is None and typeHint not defined as int or float&quot;</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">&quot;ValidatedTxtCtrl error: Unknown element (&quot;</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">&quot;) type: &quot;</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">&#39;.&#39;</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">&gt;</span> <span class="mf">2.8</span> <span class="ow">and</span> <span class="s">&#39;wxOSX&#39;</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">&#39;?&#39;</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s">&#39;.&#39;</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">&#39;?&#39;</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s">&#39;.&#39;</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">&#39;0&#39;</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">&#39;Special callback for wx 2.9+ on Mac where backspace is not processed by validator&#39;</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">&#39;Set the control colors to show invalid input&#39;</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">&quot;red&quot;</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">&quot;yellow&quot;</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">&quot;black&quot;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&#39;ascii&#39;</span><span class="p">,</span><span class="s">&#39;replace&#39;</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">&#39;&#39;&#39;Get string input and store.</span>
    633 <span class="sd">        &#39;&#39;&#39;</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">&#39;ascii&#39;</span><span class="p">,</span><span class="s">&#39;replace&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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&#39;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">&#39;&#39;&#39;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 &#39;?&#39; or &#39;.&#39; character</span>
    699 <span class="sd">      as valid input.</span>
    700 <span class="sd">      </span>
    701 <span class="sd">    &#39;&#39;&#39;</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">&#39;Create the validator&#39;</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">&#39;0123456789&#39;</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">&#39;0123456789+-&#39;</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">&#39;0123456789.-+eE/cosindcqrtap()*&#39;</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">&#39;?.&#39;</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">&#39;Create a copy of the validator, a strange, but required component&#39;</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">&#39;Needed by validator, strange, but required component&#39;</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">&#39;Needed by validator, strange, but required component&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&#39;?&#39;</span> <span class="ow">or</span> <span class="n">val</span> <span class="o">==</span> <span class="s">&#39;.&#39;</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 &gt; 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 &lt; 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">&gt;</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">&lt;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&quot;red&quot;</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">&quot;yellow&quot;</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">&quot;black&quot;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&lt;</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">&gt;</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">&#39;&#39;&#39;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">    &#39;&#39;&#39;</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">&#39;Create the validator&#39;</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">&#39;Create a copy of the validator, a strange, but required component&#39;</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">&#39;Needed by validator, strange, but required component&#39;</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">&#39;Needed by validator, strange, but required component&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&#39;ascii&#39;</span><span class="p">,</span><span class="s">&#39;replace&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&lt;</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">&gt;</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>
    928285<span class="c">################################################################################</span></div></div>
    929286<div class="viewcode-block" id="EnumSelector"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.EnumSelector">[docs]</a><span class="k">class</span> <span class="nc">EnumSelector</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">ComboBox</span><span class="p">):</span>
     
    985342            <span class="bp">self</span><span class="o">.</span><span class="n">dct</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">item</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c"># unknown</span>
    986343
    987 <span class="c">################################################################################</span></div>
    988 <div class="viewcode-block" id="G2CheckBox"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2CheckBox">[docs]</a><span class="k">class</span> <span class="nc">G2CheckBox</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">CheckBox</span><span class="p">):</span>
    989     <span class="sd">&#39;&#39;&#39;A customized version of a CheckBox that automatically initializes</span>
    990 <span class="sd">    the control to a supplied list or dict entry and updates that</span>
    991 <span class="sd">    entry as the widget is used.</span>
    992 
    993 <span class="sd">    :param wx.Panel parent: name of panel or frame that will be</span>
    994 <span class="sd">      the parent to the widget. Can be None.</span>
    995 <span class="sd">    :param str label: text to put on check button</span>
    996 <span class="sd">    :param dict/list loc: the dict or list with the initial value to be</span>
    997 <span class="sd">      placed in the CheckBox. </span>
    998 <span class="sd">    :param int/str key: the dict key or the list index for the value to be</span>
    999 <span class="sd">      edited by the CheckBox. The ``loc[key]`` element must exist.</span>
    1000 <span class="sd">      The CheckBox will be initialized from this value.</span>
    1001 <span class="sd">      If the value is anything other that True (or 1), it will be taken as</span>
    1002 <span class="sd">      False. </span>
    1003 <span class="sd">    &#39;&#39;&#39;</span>
    1004     <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">label</span><span class="p">,</span><span class="n">loc</span><span class="p">,</span><span class="n">key</span><span class="p">):</span>
    1005         <span class="n">wx</span><span class="o">.</span><span class="n">CheckBox</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="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">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
    1006         <span class="bp">self</span><span class="o">.</span><span class="n">loc</span> <span class="o">=</span> <span class="n">loc</span>
    1007         <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span>
    1008         <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">loc</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="bp">True</span><span class="p">)</span>
    1009         <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_CHECKBOX</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_OnCheckBox</span><span class="p">)</span>
    1010     <span class="k">def</span> <span class="nf">_OnCheckBox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span>
    1011         <span class="bp">self</span><span class="o">.</span><span class="n">loc</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="bp">self</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span>
    1012         <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">loc</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
     344<span class="c">################################################################################</span>
    1013345<span class="c">################################################################################</span></div>
    1014346<div class="viewcode-block" id="G2ChoiceButton"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2ChoiceButton">[docs]</a><span class="k">class</span> <span class="nc">G2ChoiceButton</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Choice</span><span class="p">):</span>
     
    1074406        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">onChoice</span><span class="p">:</span>
    1075407            <span class="bp">self</span><span class="o">.</span><span class="n">onChoice</span><span class="p">()</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">&#39;Edit items&#39;</span><span class="p">,</span><span class="n">header</span><span class="o">=</span><span class="s">&#39;&#39;</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">&#39;&#39;&#39;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">    &#39;&#39;&#39;</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">&#39;&#39;&#39;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 = &lt;pkg&gt;.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 = (&#39;a&#39;, 1, 2, 3)</span>
    1168 
    1169 <span class="sd">      This causes items dict1[&#39;a&#39;], 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">    &#39;&#39;&#39;</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">&#39;Edit items&#39;</span><span class="p">,</span><span class="n">header</span><span class="o">=</span><span class="s">&#39;&#39;</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">&quot;&quot;</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">&quot;ScrolledMultiEditor error: len(dictlst) != len(elemlst) &quot;</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">&quot; != &quot;</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">&quot;ScrolledMultiEditor error: len(checkdictlst) != len(checkelemlst) &quot;</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">&quot; != &quot;</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 &amp; 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">&gt;=</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">&lt;</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">&#39;min&#39;</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">&lt;</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">&#39;max&#39;</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">&lt;</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">&#39;size&#39;</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">&#39;v&#39;</span><span class="p">,</span> <span class="c"># would like to use u&#39;\u2193&#39; or u&#39;\u25BC&#39; 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">&#39;Press to copy adjacent value to all rows below&#39;</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">&lt;</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">&lt;</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">&#39;.&#39;</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">&gt;</span> <span class="mf">2.8</span> <span class="ow">and</span> <span class="s">&#39;wxOSX&#39;</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">&quot;Cancel&quot;</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">&#39;Implements the copy down functionality&#39;</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">&lt;</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">&lt;</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">&#39;Used on Cancel: Restore original values &amp; close the window&#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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>
    1323410<div class="viewcode-block" id="SymOpDialog"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.SymOpDialog">[docs]</a><span class="k">class</span> <span class="nc">SymOpDialog</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">):</span>
    1324411    <span class="sd">&#39;&#39;&#39;Class to select a symmetry operator</span>
     
    1356443            <span class="n">Ncol</span> <span class="o">=</span> <span class="mi">3</span>
    1357444        <span class="n">OpList</span> <span class="o">=</span> <span class="p">[]</span>
    1358         <span class="k">for</span> <span class="n">M</span><span class="p">,</span><span class="n">T</span> <span class="ow">in</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGOps&#39;</span><span class="p">]:</span>
    1359             <span class="n">OpList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">G2spc</span><span class="o">.</span><span class="n">MT2text</span><span class="p">(</span><span class="n">M</span><span class="p">,</span><span class="n">T</span><span class="p">))</span>
     445        <span class="k">for</span> <span class="n">Opr</span> <span class="ow">in</span> <span class="n">SGData</span><span class="p">[</span><span class="s">&#39;SGOps&#39;</span><span class="p">]:</span>
     446            <span class="n">OpList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">G2spc</span><span class="o">.</span><span class="n">MT2text</span><span class="p">(</span><span class="n">Opr</span><span class="p">))</span>
    1360447        <span class="bp">self</span><span class="o">.</span><span class="n">oprs</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">RadioBox</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="s">&#39;Choose space group operator?&#39;</span><span class="p">,</span><span class="n">choices</span><span class="o">=</span><span class="n">OpList</span><span class="p">,</span>
    1361448            <span class="n">majorDimension</span><span class="o">=</span><span class="n">Ncol</span><span class="p">)</span>
     
    1540627        <span class="bp">self</span><span class="o">.</span><span class="n">_default</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">default</span><span class="p">)</span>
    1541628        <span class="bp">self</span><span class="o">.</span><span class="n">Draw</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
    1542         </div></div>
    1543 <div class="viewcode-block" id="PickTwoDialog"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.PickTwoDialog">[docs]</a><span class="k">class</span> <span class="nc">PickTwoDialog</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">):</span>
    1544     <span class="sd">&#39;&#39;&#39;This does not seem to be in use</span>
    1545 <span class="sd">    &#39;&#39;&#39;</span>
    1546     <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">prompt</span><span class="p">,</span><span class="n">names</span><span class="p">,</span><span class="n">choices</span><span class="p">):</span>
    1547         <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="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">title</span><span class="p">,</span>
    1548             <span class="n">pos</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">DefaultPosition</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">DEFAULT_DIALOG_STYLE</span><span class="p">)</span>
    1549         <span class="bp">self</span><span class="o">.</span><span class="n">panel</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>         <span class="c">#just a dummy - gets destroyed in Draw!</span>
    1550         <span class="bp">self</span><span class="o">.</span><span class="n">prompt</span> <span class="o">=</span> <span class="n">prompt</span>
    1551         <span class="bp">self</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="n">choices</span>
    1552         <span class="bp">self</span><span class="o">.</span><span class="n">names</span> <span class="o">=</span> <span class="n">names</span>
    1553         <span class="bp">self</span><span class="o">.</span><span class="n">Draw</span><span class="p">()</span>
    1554 
    1555     <span class="k">def</span> <span class="nf">Draw</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    1556         <span class="n">Indx</span> <span class="o">=</span> <span class="p">{}</span>
    1557        
    1558         <span class="k">def</span> <span class="nf">OnSelection</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
    1559             <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>
    1560             <span class="nb">id</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>
    1561             <span class="bp">self</span><span class="o">.</span><span class="n">choices</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span> <span class="o">=</span> <span class="n">Obj</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="c">#to avoid Unicode versions</span>
    1562             <span class="bp">self</span><span class="o">.</span><span class="n">Draw</span><span class="p">()</span>
    1563            
    1564         <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">DestroyChildren</span><span class="p">()</span>
    1565         <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span>
    1566         <span class="bp">self</span><span class="o">.</span><span class="n">panel</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>
    1567         <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>
    1568         <span class="n">mainSizer</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="o">.</span><span class="n">panel</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">prompt</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>
    1569         <span class="k">for</span> <span class="n">isel</span><span class="p">,</span><span class="n">name</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">choices</span><span class="p">):</span>
    1570             <span class="n">lineSizer</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>
    1571             <span class="n">lineSizer</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="o">.</span><span class="n">panel</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="s">&#39;Reference atom &#39;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">isel</span><span class="o">+</span><span class="mi">1</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>
    1572             <span class="n">nameList</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">[:]</span>
    1573             <span class="k">if</span> <span class="n">isel</span><span class="p">:</span>
    1574                 <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="n">nameList</span><span class="p">:</span>
    1575                     <span class="n">nameList</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">choices</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
    1576             <span class="n">choice</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ComboBox</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">panel</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="n">name</span><span class="p">,</span><span class="n">choices</span><span class="o">=</span><span class="n">nameList</span><span class="p">,</span>
    1577                 <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>
    1578             <span class="n">Indx</span><span class="p">[</span><span class="n">choice</span><span class="o">.</span><span class="n">GetId</span><span class="p">()]</span> <span class="o">=</span> <span class="n">isel</span>
    1579             <span class="n">choice</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_COMBOBOX</span><span class="p">,</span> <span class="n">OnSelection</span><span class="p">)</span>
    1580             <span class="n">lineSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">choice</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">WACV</span><span class="p">)</span>
    1581             <span class="n">mainSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">lineSizer</span><span class="p">)</span>
    1582         <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="o">.</span><span class="n">panel</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="s">&quot;Ok&quot;</span><span class="p">)</span>
    1583         <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="bp">self</span><span class="o">.</span><span class="n">OnOk</span><span class="p">)</span>
    1584         <span class="n">CancelBtn</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">panel</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="s">&#39;Cancel&#39;</span><span class="p">)</span>
    1585         <span class="n">CancelBtn</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">OnCancel</span><span class="p">)</span>
    1586         <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>
    1587         <span class="n">btnSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="mi">20</span><span class="p">,</span><span class="mi">20</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
    1588         <span class="n">btnSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">OkBtn</span><span class="p">)</span>
    1589         <span class="n">btnSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">CancelBtn</span><span class="p">)</span>
    1590         <span class="n">btnSizer</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="mi">20</span><span class="p">,</span><span class="mi">20</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
    1591         <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">EXPAND</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">BOTTOM</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
    1592         <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">mainSizer</span><span class="p">)</span>
    1593         <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">Fit</span><span class="p">()</span>
    1594         <span class="bp">self</span><span class="o">.</span><span class="n">Fit</span><span class="p">()</span>
    1595        
    1596     <span class="k">def</span> <span class="nf">GetSelection</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    1597         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span>
    1598 
    1599     <span class="k">def</span> <span class="nf">OnOk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span>
    1600         <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>
    1601         <span class="n">parent</span><span class="o">.</span><span class="n">Raise</span><span class="p">()</span>
    1602         <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>             
    1603        
    1604     <span class="k">def</span> <span class="nf">OnCancel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span>
    1605         <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>
    1606         <span class="n">parent</span><span class="o">.</span><span class="n">Raise</span><span class="p">()</span>
    1607         <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>
    1608         </div>
     629                </div></div>
    1609630<div class="viewcode-block" id="SingleFloatDialog"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.SingleFloatDialog">[docs]</a><span class="k">class</span> <span class="nc">SingleFloatDialog</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">):</span>
    1610631    <span class="s">&#39;Dialog to obtain a single float value from user&#39;</span>
     
    1836857            <span class="n">topSizer</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">filterBox</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">WACV</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
    1837858        <span class="n">Sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">topSizer</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="p">,</span><span class="mi">8</span><span class="p">)</span>
     859        <span class="bp">self</span><span class="o">.</span><span class="n">trigger</span> <span class="o">=</span> <span class="bp">False</span>
    1838860        <span class="bp">self</span><span class="o">.</span><span class="n">clb</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">CheckListBox</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="p">(</span><span class="mi">30</span><span class="p">,</span><span class="mi">30</span><span class="p">),</span> <span class="n">wx</span><span class="o">.</span><span class="n">DefaultSize</span><span class="p">,</span> <span class="n">ChoiceList</span><span class="p">)</span>
     861        <span class="bp">self</span><span class="o">.</span><span class="n">clb</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_CHECKLISTBOX</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">OnCheck</span><span class="p">)</span>
    1839862        <span class="k">if</span> <span class="n">monoFont</span><span class="p">:</span>
    1840863            <span class="n">font1</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Font</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">clb</span><span class="o">.</span><span class="n">GetFont</span><span class="p">()</span><span class="o">.</span><span class="n">GetPointSize</span><span class="p">(),</span>
     
    1870893        <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>
    1871894        <span class="bp">self</span><span class="o">.</span><span class="n">CenterOnParent</span><span class="p">()</span>
     895       
    1872896<div class="viewcode-block" id="G2MultiChoiceDialog.GetSelections"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2MultiChoiceDialog.GetSelections">[docs]</a>    <span class="k">def</span> <span class="nf">GetSelections</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    1873897        <span class="s">&#39;Returns a list of the indices for the selected choices&#39;</span>
     
    1876900            <span class="bp">self</span><span class="o">.</span><span class="n">Selections</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">filterlist</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">clb</span><span class="o">.</span><span class="n">IsChecked</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
    1877901        <span class="c"># return all selections, shown or hidden</span>
    1878         <span class="k">return</span> <span class="p">[</span><span class="n">i</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="bp">self</span><span class="o">.</span><span class="n">Selections</span><span class="p">))</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">Selections</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span></div>
     902        <span class="k">return</span> <span class="p">[</span><span class="n">i</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="bp">self</span><span class="o">.</span><span class="n">Selections</span><span class="p">))</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">Selections</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
     903        </div>
    1879904<div class="viewcode-block" id="G2MultiChoiceDialog.SetSelections"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2MultiChoiceDialog.SetSelections">[docs]</a>    <span class="k">def</span> <span class="nf">SetSelections</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">selList</span><span class="p">):</span>
    1880905        <span class="sd">&#39;&#39;&#39;Sets the selection indices in selList as selected. Resets any previous</span>
     
    1895920            <span class="p">[</span><span class="n">i</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="bp">self</span><span class="o">.</span><span class="n">filterlist</span><span class="p">))</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">Selections</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">filterlist</span><span class="p">[</span><span class="n">i</span><span class="p">]]]</span>
    1896921            <span class="p">)</span> <span class="c"># Note anything previously checked will be cleared.</span>
     922           
    1897923    <span class="k">def</span> <span class="nf">_SetAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span>
    1898924        <span class="s">&#39;Set all viewed choices on&#39;</span>
    1899925        <span class="bp">self</span><span class="o">.</span><span class="n">clb</span><span class="o">.</span><span class="n">SetChecked</span><span class="p">(</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">filterlist</span><span class="p">)))</span>
     926       
    1900927    <span class="k">def</span> <span class="nf">_ToggleAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span>
    1901928        <span class="s">&#39;flip the state of all viewed choices&#39;</span>
    1902929        <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">filterlist</span><span class="p">)):</span>
    1903930            <span class="bp">self</span><span class="o">.</span><span class="n">clb</span><span class="o">.</span><span class="n">Check</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">clb</span><span class="o">.</span><span class="n">IsChecked</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
    1904     <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>
     931           
     932<div class="viewcode-block" id="G2MultiChoiceDialog.onChar"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2MultiChoiceDialog.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>
     933        <span class="s">&#39;for keyboard events. self.trigger is used in self.OnCheck below&#39;</span>
    1905934        <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><span class="bp">False</span><span class="p">)</span>
     935        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">GetKeyCode</span><span class="p">()</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">WXK_SHIFT</span><span class="p">:</span>
     936            <span class="bp">self</span><span class="o">.</span><span class="n">trigger</span> <span class="o">=</span> <span class="bp">True</span>
    1906937        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="o">.</span><span class="n">IsRunning</span><span class="p">():</span>
    1907938            <span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="o">.</span><span class="n">Stop</span><span class="p">()</span>
    1908939        <span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="o">.</span><span class="n">Start</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="n">oneShot</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
    1909940        <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span>
     941        </div>
     942<div class="viewcode-block" id="G2MultiChoiceDialog.OnCheck"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.G2MultiChoiceDialog.OnCheck">[docs]</a>    <span class="k">def</span> <span class="nf">OnCheck</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span>
     943        <span class="sd">&#39;&#39;&#39;for CheckListBox events; if Shift key down this sets all unset </span>
     944<span class="sd">            entries below the selected one&#39;&#39;&#39;</span>
     945        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">trigger</span><span class="p">:</span>
     946            <span class="nb">id</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">()</span>
     947            <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">clb</span><span class="o">.</span><span class="n">GetString</span><span class="p">(</span><span class="nb">id</span><span class="p">)</span>           
     948            <span class="n">iB</span> <span class="o">=</span> <span class="nb">id</span><span class="o">-</span><span class="mi">1</span>
     949            <span class="k">if</span> <span class="n">iB</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
     950                <span class="k">return</span>
     951            <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">clb</span><span class="o">.</span><span class="n">IsChecked</span><span class="p">(</span><span class="n">iB</span><span class="p">):</span>
     952                <span class="bp">self</span><span class="o">.</span><span class="n">clb</span><span class="o">.</span><span class="n">Check</span><span class="p">(</span><span class="n">iB</span><span class="p">)</span>
     953                <span class="n">iB</span> <span class="o">-=</span> <span class="mi">1</span>
     954                <span class="k">if</span> <span class="n">iB</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
     955                    <span class="k">break</span>
     956        <span class="bp">self</span><span class="o">.</span><span class="n">trigger</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">trigger</span>
     957        </div>
    1910958    <span class="k">def</span> <span class="nf">Filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span>
    1911959        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="o">.</span><span class="n">IsRunning</span><span class="p">():</span>
     
    1914962        <span class="n">txt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filterBox</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span>
    1915963        <span class="bp">self</span><span class="o">.</span><span class="n">clb</span><span class="o">.</span><span class="n">Clear</span><span class="p">()</span>
     964       
    1916965        <span class="bp">self</span><span class="o">.</span><span class="n">Update</span><span class="p">()</span>
    1917966        <span class="bp">self</span><span class="o">.</span><span class="n">filterlist</span> <span class="o">=</span> <span class="p">[]</span>
     
    20471096<span class="c">################################################################################</span>
    20481097</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">&#39;&#39;&#39;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">    &#39;&#39;&#39;</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">&#39; &#39;</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">&#39;Duplicate&#39;</span><span class="p">,</span><span class="n">item</span><span class="o">+</span><span class="s">&#39; selected more than once&#39;</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">&#39;Modify column&#39;</span><span class="p">,</span><span class="n">icol</span><span class="p">,</span><span class="s">&#39; by&#39;</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">&#39;</span><span class="se">\n</span><span class="s">&#39;</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">&#39;&#39;</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">&#39;size&#39;</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">&#39;style&#39;</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">&#39;&#39;</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">&#39;style&#39;</span><span class="p">]</span> <span class="o">&amp;</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">&#39;style&#39;</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">&#39;style&#39;</span><span class="p">]</span> <span class="o">&amp;</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">&#39;style&#39;</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">&#39; Header lines:&#39;</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">&#39; Column #</span><span class="si">%d</span><span class="s"> Select:&#39;</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">&#39; &#39;</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">&#39;</span><span class="se">\n</span><span class="s">&#39;</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">&#39; Modify by:&#39;</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">&#39;&#39;</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">&#39; For modify by, enter arithmetic string eg. &quot;-12345.67&quot;. &quot;+&quot;,&quot;-&quot;,&quot;*&quot;,&quot;/&quot;,&quot;**&quot; all allowed&#39;</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&#39;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">&#39;Returns the selected sample parm for each column&#39;</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>
    20491233<div class="viewcode-block" id="ItemSelector"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ItemSelector">[docs]</a><span class="k">def</span> <span class="nf">ItemSelector</span><span class="p">(</span><span class="n">ChoiceList</span><span class="p">,</span> <span class="n">ParentFrame</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
    20501234                 <span class="n">title</span><span class="o">=</span><span class="s">&#39;Select an item&#39;</span><span class="p">,</span>
     
    21211305        <span class="bp">self</span><span class="o">.</span><span class="n">_tc</span><span class="o">.</span><span class="n">SetSelection</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">_tc</span><span class="o">.</span><span class="n">GetLastPosition</span><span class="p">())</span>
    21221306
    2123     <span class="k">def</span> <span class="nf">EndEdit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">grid</span><span class="p">):</span>
     1307    <span class="k">def</span> <span class="nf">EndEdit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">grid</span><span class="p">,</span> <span class="n">oldVal</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
    21241308        <span class="n">changed</span> <span class="o">=</span> <span class="bp">False</span>
    21251309
     1310        <span class="bp">self</span><span class="o">.</span><span class="n">nextval</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">startValue</span>
    21261311        <span class="n">val</span> <span class="o">=</span> <span class="bp">self</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">lower</span><span class="p">()</span>
    2127        
    21281312        <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">startValue</span><span class="p">:</span>
    21291313            <span class="n">changed</span> <span class="o">=</span> <span class="bp">True</span>
     
    21441328                    <span class="n">val</span> <span class="o">=</span> <span class="s">&#39;cosd(&#39;</span><span class="o">+</span><span class="n">val</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s">&#39;c&#39;</span><span class="p">)</span><span class="o">+</span><span class="s">&#39;)&#39;</span>
    21451329            <span class="k">try</span><span class="p">:</span>
    2146                 <span class="n">val</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="nb">eval</span><span class="p">(</span><span class="n">val</span><span class="p">))</span>
    2147             <span class="k">except</span> <span class="p">(</span><span class="ne">SyntaxError</span><span class="p">,</span><span class="ne">NameError</span><span class="p">):</span>
     1330                <span class="bp">self</span><span class="o">.</span><span class="n">nextval</span> <span class="o">=</span> <span class="n">val</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="nb">eval</span><span class="p">(</span><span class="n">val</span><span class="p">))</span>
     1331            <span class="k">except</span> <span class="p">(</span><span class="ne">SyntaxError</span><span class="p">,</span><span class="ne">NameError</span><span class="p">,</span><span class="ne">ZeroDivisionError</span><span class="p">):</span>
    21481332                <span class="n">val</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">startValue</span>
    2149             <span class="n">grid</span><span class="o">.</span><span class="n">GetTable</span><span class="p">()</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="c"># update the table</span>
     1333                <span class="k">return</span> <span class="bp">None</span>
     1334           
     1335            <span class="k">if</span> <span class="n">oldVal</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># this arg appears in 2.9+; before, we should go ahead &amp; change the table</span>
     1336                <span class="n">grid</span><span class="o">.</span><span class="n">GetTable</span><span class="p">()</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="c"># update the table</span>
     1337            <span class="c"># otherwise self.ApplyEdit gets called</span>
    21501338
    21511339        <span class="bp">self</span><span class="o">.</span><span class="n">startValue</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
    21521340        <span class="bp">self</span><span class="o">.</span><span class="n">_tc</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span>
    21531341        <span class="k">return</span> <span class="n">changed</span>
    2154 
     1342   
     1343<div class="viewcode-block" id="GridFractionEditor.ApplyEdit"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.GridFractionEditor.ApplyEdit">[docs]</a>    <span class="k">def</span> <span class="nf">ApplyEdit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">grid</span><span class="p">):</span>
     1344        <span class="sd">&quot;&quot;&quot; Called only in wx &gt;= 2.9</span>
     1345<span class="sd">        Save the value of the control into the grid if EndEdit() returns as True</span>
     1346<span class="sd">        &quot;&quot;&quot;</span>
     1347        <span class="n">grid</span><span class="o">.</span><span class="n">GetTable</span><span class="p">()</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">nextval</span><span class="p">)</span> <span class="c"># update the table</span>
     1348</div>
    21551349    <span class="k">def</span> <span class="nf">Reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    21561350        <span class="bp">self</span><span class="o">.</span><span class="n">_tc</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">startValue</span><span class="p">)</span>
     
    21771371        <span class="k">else</span><span class="p">:</span>
    21781372            <span class="n">evt</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span>
    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">&#39;&#39;&#39;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 = [&#39;v1&#39;,&#39;v2&#39;]</span>
    2199 <span class="sd">      elemKeysLst = [[&#39;v1&#39;], [&#39;v2&#39;,0]]</span>
    2200 <span class="sd">      refFlgElem = [None, [&#39;v2&#39;,1]]</span>
    2201 
    2202 <span class="sd">     * The value for v1 will be in data[&#39;v1&#39;] and this cannot be refined while,</span>
    2203 <span class="sd">     * The value for v2 will be in data[&#39;v2&#39;][0] and its refinement flag is data[&#39;v2&#39;][1]</span>
    2204 <span class="sd">    &#39;&#39;&#39;</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">&#39;&#39;&#39;dive into a nested set of dicts/lists applying keys in keylist</span>
    2207 <span class="sd">        consecutively</span>
    2208 <span class="sd">        &#39;&#39;&#39;</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">&#39;Respond when a parameter is selected in the Choice box&#39;</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">&#39;currentsel&#39;</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">&#39;nDig&#39;</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">&#39;startvalue&#39;</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">&#39;InTable&#39;</span><span class="p">:</span><span class="bp">False</span><span class="p">,</span><span class="s">&quot;startvalue&quot;</span><span class="p">:</span><span class="bp">None</span><span class="p">,</span><span class="s">&#39;currentsel&#39;</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">&#39;No match&#39;</span><span class="p">,</span><span class="s">&#39;No histograms match &#39;</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">&#39;Set a parameter value&#39;</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">&#39;Select a parameter and set a new value&#39;</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">&#39;Parameter: &#39;</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">&#39;Value: &#39;</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">&#39;Edit in table &#39;</span><span class="p">,</span> <span class="n">copyopts</span><span class="p">,</span> <span class="s">&#39;InTable&#39;</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">&#39;Continue&#39;</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">&#39;currentsel&#39;</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">&#39;Copy parameter &#39;</span><span class="o">+</span><span class="n">lbl</span><span class="o">+</span><span class="s">&#39; from</span><span class="se">\n</span><span class="s">&#39;</span><span class="o">+</span><span class="n">hst</span><span class="p">,</span>
    2297         <span class="s">&#39;Copy parameters&#39;</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">&#39;Instrument Parameters&#39;</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">&#39;Instrument Parameters&#39;</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">&#39;Type&#39;</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">&#39;Type&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span>  <span class="c">#don&#39;t mix data types or lam &amp; lam1/lam2 parms!</span>
    2325             <span class="k">print</span> <span class="n">h</span><span class="o">+</span><span class="s">&#39; not copied - instrument parameters not commensurate&#39;</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">&#39;Instrument Parameters&#39;</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">&#39;startvalue&#39;</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">&#39;InTable&#39;</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">&#39;checkdictlst&#39;</span><span class="p">:</span><span class="n">refdictlst</span><span class="p">,</span>
    2342                 <span class="s">&#39;checkelemlst&#39;</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">&#39;checklabel&#39;</span><span class="p">:</span><span class="s">&#39;Refine?&#39;</span><span class="p">}</span>
    2344     <span class="k">if</span> <span class="n">copyopts</span><span class="p">[</span><span class="s">&#39;InTable&#39;</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">&#39;Editing parameter &#39;</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>
    23541373
    23551374<span class="c">################################################################################</span></div>
     
    23921411                <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>
    23931412            <span class="k">else</span><span class="p">:</span>               
    2394                 <span class="n">ch</span> <span class="o">=</span> <span class="n">HelpButton</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">G2obj</span><span class="o">.</span><span class="n">fmtVarDescr</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
     1413                <span class="n">ch</span> <span class="o">=</span> <span class="n">G2G</span><span class="o">.</span><span class="n">HelpButton</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span><span class="n">G2obj</span><span class="o">.</span><span class="n">fmtVarDescr</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
    23951414                <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><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="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">RIGHT</span><span class="o">|</span><span class="n">WACV</span><span class="o">|</span><span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_CENTER</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
    23961415            <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">name</span><span class="p">)))</span>
     
    24301449        <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>
    24311450 
    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">&#39;&#39;&#39;Dialog to allow a user to select a version of GSAS-II to install</span>
    2435 <span class="sd">    &#39;&#39;&#39;</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">&#39;Select Version&#39;</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">&#39;Select a specific GSAS-II version to install&#39;</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">&#39;Currently installed version: &#39;</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">&#39;Select GSAS-II version to install: &#39;</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">&quot;&quot;</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">&#39;If &quot;Install&quot; is pressed, your project will be saved;</span><span class="se">\n</span><span class="s">&#39;</span>
    2479                 <span class="s">&#39;GSAS-II will exit; The specified version will be loaded</span><span class="se">\n</span><span class="s">&#39;</span>
    2480                 <span class="s">&#39;and GSAS-II will restart. Press &quot;Cancel&quot; to abort.&#39;</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">&quot;Install&quot;</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">&#39;Called to load info about the selected version in the dialog&#39;</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">&#39;date&#39;</span><span class="p">,</span><span class="s">&#39;?&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;T&#39;</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">&#39;(Version &#39;</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">&#39; created &#39;</span><span class="o">+</span><span class="n">date</span>
    2502         <span class="n">s</span> <span class="o">+=</span> <span class="s">&#39; by &#39;</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">&#39;author&#39;</span><span class="p">,</span><span class="s">&#39;?&#39;</span><span class="p">)</span><span class="o">+</span><span class="s">&#39;)&#39;</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">&#39;msg&#39;</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">&#39;</span><span class="se">\n\n</span><span class="s">Comment: &#39;</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">&#39;Get the version number in the dialog&#39;</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">&#39;&#39;&#39;</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">    * &#39;Help on &lt;helpType&gt;&#39;: 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 &amp;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=&quot;&amp;Help&quot;)</span>
    2529 
    2530 <span class="sd">    &#39;&#39;&#39;</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">&#39;&#39;</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">&#39;&#39;</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">&#39;&amp;About GSAS-II&#39;</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">&#39;&#39;</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">&#39;&amp;Check for updates&#39;</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">&#39;&#39;</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">&#39;&amp;Regress to an old GSAS-II version&#39;</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">&#39;Help on &#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&#39;Error: help lookup failed!&#39;</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">&#39;id=&#39;</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">&#39;Tutorials&#39;</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">&quot;Display an &#39;About GSAS-II&#39; box&quot;</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">&#39;GSAS-II&#39;</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">&#39;Revision &#39;</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">&#39; (svn), version &#39;</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">&#39;Revision &#39;</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">&#39; (.py files), version &#39;</span><span class="o">+</span><span class="n">__version__</span>
    2584         <span class="c">#info.Developers = [&#39;Robert B. Von Dreele&#39;,&#39;Brian H. Toby&#39;]</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">&#39;(c) &#39;</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">&#39;%Y&#39;</span><span class="p">)</span> <span class="o">+</span>
    2586 <span class="sd">&#39;&#39;&#39; 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.&#39;&#39;&#39;</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">&#39;&#39;&#39;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 &amp; R.B. Von Dreele, J. Appl. Cryst. 46, 544-549 (2013) &#39;&#39;&#39;</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">&quot;https://subversion.xray.aps.anl.gov/trac/pyGSAS&quot;</span><span class="p">,</span><span class="s">&quot;GSAS-II home page&quot;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&#39;No Subversion&#39;</span><span class="p">,</span><span class="s">&#39;Cannot update GSAS-II because subversion (svn) was not found.&#39;</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">&#39;Unable to run subversion on the GSAS-II current directory. Is GSAS-II installed correctly?&#39;</span><span class="p">,</span>
    2616                                    <span class="s">&#39;Subversion error&#39;</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">&#39;Installed GSAS-II version: &#39;</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">&#39;Unable to access the GSAS-II server. Is this computer on the internet?&#39;</span><span class="p">,</span>
    2627                                    <span class="s">&#39;Server unavailable&#39;</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">&#39;GSAS-II version on server: &#39;</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">&#39;GSAS-II is up-to-date. Version &#39;</span><span class="o">+</span><span class="n">local</span><span class="o">+</span><span class="s">&#39; is already loaded.&#39;</span><span class="p">,</span>
    2636                                    <span class="s">&#39;GSAS-II Up-to-date&#39;</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">&#39;You have version &#39;</span><span class="o">+</span><span class="n">local</span><span class="o">+</span>
    2645                                    <span class="s">&#39; of GSAS-II installed, but the current version is &#39;</span><span class="o">+</span><span class="n">repos</span><span class="o">+</span>
    2646                                    <span class="s">&#39;. However, &#39;</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">&#39; file(s) on your local computer have been modified.&#39;</span>
    2648                                    <span class="s">&#39; Updating will attempt to merge your local changes with &#39;</span>
    2649                                    <span class="s">&#39;the latest GSAS-II version, but if &#39;</span>
    2650                                    <span class="s">&#39;conflicts arise, local changes will be &#39;</span>
    2651                                    <span class="s">&#39;discarded. It is also possible that the &#39;</span>
    2652                                    <span class="s">&#39;local changes my prevent GSAS-II from running. &#39;</span>
    2653                                    <span class="s">&#39;Press OK to start an update if this is acceptable:&#39;</span><span class="p">,</span>
    2654                                    <span class="s">&#39;Local GSAS-II Mods&#39;</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">&#39;You have version &#39;</span><span class="o">+</span><span class="n">local</span><span class="o">+</span>
    2664                                    <span class="s">&#39; of GSAS-II installed, but the current version is &#39;</span><span class="o">+</span><span class="n">repos</span><span class="o">+</span>
    2665                                    <span class="s">&#39;. Press OK to start an update:&#39;</span><span class="p">,</span>
    2666                                    <span class="s">&#39;GSAS-II Updates&#39;</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">&#39;start updates&#39;</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">&#39;Your project will now be saved, GSAS-II will exit and an update &#39;</span>
    2675                                <span class="s">&#39;will be performed and GSAS-II will restart. Press Cancel to &#39;</span>
    2676                                <span class="s">&#39;abort the update&#39;</span><span class="p">,</span>
    2677                                <span class="s">&#39;Start update?&#39;</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">&#39;&#39;&#39;Allow the user to select a specific version of GSAS-II</span>
    2689 <span class="sd">        &#39;&#39;&#39;</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">&#39;No Subversion&#39;</span><span class="p">,</span><span class="s">&#39;Cannot update GSAS-II because subversion (svn) &#39;</span><span class="o">+</span>
    2692                                    <span class="s">&#39;was not found.&#39;</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">&#39;Unable to run subversion on the GSAS-II current directory. Is GSAS-II installed correctly?&#39;</span><span class="p">,</span>
    2700                                    <span class="s">&#39;Subversion error&#39;</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">&#39;You have version &#39;</span><span class="o">+</span><span class="n">local</span><span class="o">+</span>
    2708                                    <span class="s">&#39; of GSAS-II installed&#39;</span>
    2709                                    <span class="s">&#39;. However, &#39;</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">&#39; file(s) on your local computer have been modified.&#39;</span>
    2711                                    <span class="s">&#39; Downdating will attempt to merge your local changes with &#39;</span>
    2712                                    <span class="s">&#39;the selected GSAS-II version. &#39;</span>
    2713                                    <span class="s">&#39;Downdating is not encouraged because &#39;</span>
    2714                                    <span class="s">&#39;if merging is not possible, your local changes will be &#39;</span>
    2715                                    <span class="s">&#39;discarded. It is also possible that the &#39;</span>
    2716                                    <span class="s">&#39;local changes my prevent GSAS-II from running. &#39;</span>
    2717                                    <span class="s">&#39;Press OK to continue anyway.&#39;</span><span class="p">,</span>
    2718                                    <span class="s">&#39;Local GSAS-II Mods&#39;</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">&#39;start regress to &#39;</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">&#39;&#39;&#39;For the Mac: creates an entry to the help menu of type </span>
    2742 <span class="sd">    &#39;Help on &lt;helpType&gt;&#39;: 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">    &#39;&amp;Help&#39; so that wx handles it correctly.</span>
    2747 <span class="sd">    &#39;&#39;&#39;</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">&#39;&#39;</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">&#39;Help on &#39;</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">&#39;&#39;&#39;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">        &#39;&#39;&#39;</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">&#39;&#39;&#39;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">    &#39;&#39;&#39;</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">&quot;darwin&quot;</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">&#39;?&#39;</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">&#39;Respond to a button press by displaying the requested text&#39;</span>
    2788         <span class="c">#dlg = wx.MessageDialog(self.parent,self.msg,&#39;Help info&#39;,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">&#39;Help information&#39;</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">&#39;&#39;&#39;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">    &#39;&#39;&#39;</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">&quot;Back&quot;</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">&#39;#&#39;</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">&#39;&#39;&#39;Displays help information in a primitive HTML browser type window</span>
    2847 <span class="sd">    &#39;&#39;&#39;</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">&#39; -- &#39;</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 
    28661451<span class="c">################################################################################</span></div>
    28671452<div class="viewcode-block" id="DataFrame"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.DataFrame">[docs]</a><span class="k">class</span> <span class="nc">DataFrame</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Frame</span><span class="p">):</span>
     
    29231508            <span class="k">if</span> <span class="ow">not</span> <span class="n">empty</span><span class="p">:</span>
    29241509                <span class="n">menu</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">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">),</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;|&#39;</span><span class="p">)</span> <span class="c"># add another separator</span>
    2925             <span class="n">menu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">AddHelp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">G2frame</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="n">helpType</span><span class="p">,</span> <span class="n">helpLbl</span><span class="o">=</span><span class="n">helpLbl</span><span class="p">),</span>
     1510            <span class="n">menu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">G2G</span><span class="o">.</span><span class="n">AddHelp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">G2frame</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="n">helpType</span><span class="p">,</span> <span class="n">helpLbl</span><span class="o">=</span><span class="n">helpLbl</span><span class="p">),</span>
    29261511                        <span class="n">title</span><span class="o">=</span><span class="s">&#39;&amp;Help&#39;</span><span class="p">)</span>
    29271512        <span class="k">else</span><span class="p">:</span> <span class="c"># other</span>
    2928             <span class="n">menu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="n">MyHelp</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="n">helpType</span><span class="p">,</span> <span class="n">helpLbl</span><span class="o">=</span><span class="n">helpLbl</span><span class="p">),</span>
     1513            <span class="n">menu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="n">G2G</span><span class="o">.</span><span class="n">MyHelp</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="n">helpType</span><span class="p">,</span> <span class="n">helpLbl</span><span class="o">=</span><span class="n">helpLbl</span><span class="p">),</span>
    29291514                        <span class="n">title</span><span class="o">=</span><span class="s">&#39;&amp;Help&#39;</span><span class="p">)</span>
    29301515</div>
     
    29731558        <span class="bp">self</span><span class="o">.</span><span class="n">ConstraintEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_FUNCTADD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Add New Var&#39;</span><span class="p">,</span>
    29741559            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Add variable composed of existing parameter&#39;</span><span class="p">)</span>
     1560        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
    29751561
    29761562        <span class="c"># item = self.ConstraintEdit.Append(id=wx.ID_ANY,kind=wx.ITEM_NORMAL,text=&#39;Update GUI&#39;)</span>
     
    29821568        <span class="c"># self.Bind(wx.EVT_MENU,UpdateGSASIIconstrGUI,id=item.GetId())</span>
    29831569
    2984         <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
    2985        
    29861570        <span class="c"># Rigid bodies</span>
    2987         <span class="bp">self</span><span class="o">.</span><span class="n">VectorRBEdit</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">)</span>
    2988         <span class="bp">self</span><span class="o">.</span><span class="n">VectorRBEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_RIGIDBODYADD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Add rigid body&#39;</span><span class="p">,</span>
    2989             <span class="n">help</span><span class="o">=</span><span class="s">&#39;Add vector rigid body&#39;</span><span class="p">)</span>
     1571        <span class="bp">self</span><span class="o">.</span><span class="n">RigidBodyMenu</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MenuBar</span><span class="p">()</span>
     1572        <span class="bp">self</span><span class="o">.</span><span class="n">PrefillDataMenu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RigidBodyMenu</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="s">&#39;Rigid bodies&#39;</span><span class="p">)</span>
    29901573        <span class="bp">self</span><span class="o">.</span><span class="n">ResidueRBMenu</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">)</span>
    29911574        <span class="bp">self</span><span class="o">.</span><span class="n">ResidueRBMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_RIGIDBODYIMPORT</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Import XYZ&#39;</span><span class="p">,</span>
     
    29951578        <span class="bp">self</span><span class="o">.</span><span class="n">ResidueRBMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_RIGIDBODYADD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Import residues&#39;</span><span class="p">,</span>
    29961579            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Import residue rigid bodies from macro file&#39;</span><span class="p">)</span>
    2997            
    2998         <span class="bp">self</span><span class="o">.</span><span class="n">RigidBodyMenu</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MenuBar</span><span class="p">()</span>
    2999         <span class="bp">self</span><span class="o">.</span><span class="n">PrefillDataMenu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RigidBodyMenu</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="s">&#39;Rigid bodies&#39;</span><span class="p">)</span>
    3000         <span class="bp">self</span><span class="o">.</span><span class="n">RigidBodyMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">VectorRBEdit</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">&#39;Edit&#39;</span><span class="p">)</span>       
     1580        <span class="bp">self</span><span class="o">.</span><span class="n">RigidBodyMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ResidueRBMenu</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">&#39;Edit Body&#39;</span><span class="p">)</span>
    30011581        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
    3002            
     1582
     1583        <span class="bp">self</span><span class="o">.</span><span class="n">VectorBodyMenu</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MenuBar</span><span class="p">()</span>
     1584        <span class="bp">self</span><span class="o">.</span><span class="n">PrefillDataMenu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">VectorBodyMenu</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="s">&#39;Vector rigid bodies&#39;</span><span class="p">)</span>
     1585        <span class="bp">self</span><span class="o">.</span><span class="n">VectorRBEdit</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">)</span>
     1586        <span class="bp">self</span><span class="o">.</span><span class="n">VectorRBEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_VECTORBODYADD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Add rigid body&#39;</span><span class="p">,</span>
     1587            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Add vector rigid body&#39;</span><span class="p">)</span>
     1588        <span class="bp">self</span><span class="o">.</span><span class="n">VectorBodyMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">VectorRBEdit</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">&#39;Edit Vector Body&#39;</span><span class="p">)</span>
     1589        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
     1590
     1591                   
    30031592        <span class="c"># Restraints</span>
    30041593        <span class="bp">self</span><span class="o">.</span><span class="n">RestraintTab</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">)</span>
     
    30081597        <span class="bp">self</span><span class="o">.</span><span class="n">RestraintEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_RESTRAINTADD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Add restraints&#39;</span><span class="p">,</span>
    30091598            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Add restraints&#39;</span><span class="p">)</span>
    3010         <span class="bp">self</span><span class="o">.</span><span class="n">RestraintEdit</span><span class="o">.</span><span class="n">Enable</span><span class="p">(</span><span class="n">wxID_RESTRAINTADD</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span>    <span class="c">#gets disenabled if macromolecule phase</span>
     1599        <span class="bp">self</span><span class="o">.</span><span class="n">RestraintEdit</span><span class="o">.</span><span class="n">Enable</span><span class="p">(</span><span class="n">wxID_RESTRAINTADD</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span>    <span class="c">#gets disabled if macromolecule phase</span>
    30111600        <span class="bp">self</span><span class="o">.</span><span class="n">RestraintEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_AARESTRAINTADD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Add residue restraints&#39;</span><span class="p">,</span>
    30121601            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Add residue based restraints for macromolecules from macro file&#39;</span><span class="p">)</span>
     
    30321621        <span class="bp">self</span><span class="o">.</span><span class="n">PrefillDataMenu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SequentialMenu</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="s">&#39;Sequential&#39;</span><span class="p">,</span><span class="n">helpLbl</span><span class="o">=</span><span class="s">&#39;Sequential Refinement&#39;</span><span class="p">)</span>
    30331622        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">)</span>
    3034         <span class="bp">self</span><span class="o">.</span><span class="n">SequentialMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">&#39;Selected Cols&#39;</span><span class="p">)</span>
    3035         <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_RENAMESEQSEL</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Rename&#39;</span><span class="p">,</span>
     1623        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">&#39;Columns&#39;</span><span class="p">)</span>
     1624        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_RENAMESEQSEL</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Rename selected&#39;</span><span class="p">,</span>
    30361625            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Rename selected sequential refinement columns&#39;</span><span class="p">)</span>
    3037         <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAVESEQSEL</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Save as text&#39;</span><span class="p">,</span>
     1626        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAVESEQSEL</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Save selected as text&#39;</span><span class="p">,</span>
    30381627            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Save selected sequential refinement results as a text file&#39;</span><span class="p">)</span>
    3039         <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAVESEQSELCSV</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Save as CSV&#39;</span><span class="p">,</span>
     1628        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAVESEQCSV</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Save all as CSV&#39;</span><span class="p">,</span>
     1629            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Save all sequential refinement results as a CSV spreadsheet file&#39;</span><span class="p">)</span>
     1630        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAVESEQSELCSV</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Save selected as CSV&#39;</span><span class="p">,</span>
    30401631            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Save selected sequential refinement results as a CSV spreadsheet file&#39;</span><span class="p">)</span>
    30411632        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_PLOTSEQSEL</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Plot selected&#39;</span><span class="p">,</span>
    30421633            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Plot selected sequential refinement results&#39;</span><span class="p">)</span>
     1634        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialFile</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_ORGSEQSEL</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Reorganize&#39;</span><span class="p">,</span>
     1635            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Reorganize variables where variables change&#39;</span><span class="p">)</span>
    30431636        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialPvars</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">)</span>
    30441637        <span class="bp">self</span><span class="o">.</span><span class="n">SequentialMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SequentialPvars</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">&#39;Pseudo Vars&#39;</span><span class="p">)</span>
     
    30811674        <span class="bp">self</span><span class="o">.</span><span class="n">ErrorAnal</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_PWDCOPY</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Copy params&#39;</span><span class="p">,</span>
    30821675            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Copy of PWDR parameters&#39;</span><span class="p">)</span>
     1676        <span class="bp">self</span><span class="o">.</span><span class="n">ErrorAnal</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_PLOTCTRLCOPY</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Copy plot controls&#39;</span><span class="p">,</span>
     1677            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Copy of PWDR plot controls&#39;</span><span class="p">)</span>
     1678           
    30831679        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
    30841680           
     
    31241720        <span class="bp">self</span><span class="o">.</span><span class="n">InstMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">InstEdit</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">&#39;Operations&#39;</span><span class="p">)</span>
    31251721        <span class="bp">self</span><span class="o">.</span><span class="n">InstEdit</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">&#39;Calibrate from indexed peaks&#39;</span><span class="p">,</span>
    3126             <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTCALIB</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Calibrate&#39;</span><span class="p">)</span>
     1722            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTCALIB</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Calibrate&#39;</span><span class="p">)</span>           
    31271723        <span class="bp">self</span><span class="o">.</span><span class="n">InstEdit</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">&#39;Reset instrument profile parameters to default&#39;</span><span class="p">,</span>
    3128             <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTLOAD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Load profile...&#39;</span><span class="p">)</span>
     1724            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTPRMRESET</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Reset profile&#39;</span><span class="p">)</span>           
    31291725        <span class="bp">self</span><span class="o">.</span><span class="n">InstEdit</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">&#39;Load instrument profile parameters from file&#39;</span><span class="p">,</span>
    3130             <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTSAVE</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Save profile...&#39;</span><span class="p">)</span>
     1726            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTLOAD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Load profile...&#39;</span><span class="p">)</span>           
    31311727        <span class="bp">self</span><span class="o">.</span><span class="n">InstEdit</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">&#39;Save instrument profile parameters to file&#39;</span><span class="p">,</span>
    3132             <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTPRMRESET</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Reset profile&#39;</span><span class="p">)</span>
     1728            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTSAVE</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Save profile...&#39;</span><span class="p">)</span>           
    31331729        <span class="bp">self</span><span class="o">.</span><span class="n">InstEdit</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">&#39;Copy instrument profile parameters to other histograms&#39;</span><span class="p">,</span>
    31341730            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTCOPY</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Copy&#39;</span><span class="p">)</span>
     
    31611757        <span class="bp">self</span><span class="o">.</span><span class="n">SampleEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAMPLE1VAL</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Set one value&#39;</span><span class="p">,</span>
    31621758            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Set one sample parameter value across multiple histograms&#39;</span><span class="p">)</span>
     1759        <span class="bp">self</span><span class="o">.</span><span class="n">SampleEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_ALLSAMPLELOAD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Load all&#39;</span><span class="p">,</span>
     1760            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Load sample parmameters over multiple histograms&#39;</span><span class="p">)</span>
    31631761
    31641762        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
     
    32311829        <span class="bp">self</span><span class="o">.</span><span class="n">ReflEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_PWD3DHKLPLOT</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Plot 3D HKLs&#39;</span><span class="p">,</span>
    32321830            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Plot HKLs from powder pattern in 3D&#39;</span><span class="p">)</span>
     1831        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
     1832       
     1833        <span class="c"># SASD / Instrument Parameters</span>
     1834        <span class="bp">self</span><span class="o">.</span><span class="n">SASDInstMenu</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">MenuBar</span><span class="p">()</span>
     1835        <span class="bp">self</span><span class="o">.</span><span class="n">PrefillDataMenu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SASDInstMenu</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="s">&#39;Instrument Parameters&#39;</span><span class="p">)</span>
     1836        <span class="bp">self</span><span class="o">.</span><span class="n">SASDInstEdit</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">)</span>
     1837        <span class="bp">self</span><span class="o">.</span><span class="n">SASDInstMenu</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SASDInstEdit</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">&#39;Operations&#39;</span><span class="p">)</span>
     1838        <span class="bp">self</span><span class="o">.</span><span class="n">InstEdit</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">&#39;Reset instrument profile parameters to default&#39;</span><span class="p">,</span>
     1839            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTPRMRESET</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Reset profile&#39;</span><span class="p">)</span>
     1840        <span class="bp">self</span><span class="o">.</span><span class="n">SASDInstEdit</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">&#39;Copy instrument profile parameters to other histograms&#39;</span><span class="p">,</span>
     1841            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_INSTCOPY</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Copy&#39;</span><span class="p">)</span>
    32331842        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
    32341843       
     
    33111920        <span class="bp">self</span><span class="o">.</span><span class="n">MaskEdit</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">&#39;Load mask from file&#39;</span><span class="p">,</span>
    33121921            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_MASKLOAD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Load mask&#39;</span><span class="p">)</span>
     1922        <span class="bp">self</span><span class="o">.</span><span class="n">MaskEdit</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">&#39;Load mask from file; ignore threshold&#39;</span><span class="p">,</span>
     1923            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_MASKLOADNOT</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Load mask w/o threshold&#39;</span><span class="p">)</span>
    33131924        <span class="n">submenu</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">&#39;Create an arc mask with mouse input&#39;</span><span class="p">,</span>
    33141925            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_NEWMASKARC</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Arc mask&#39;</span><span class="p">)</span>
     
    33421953        <span class="bp">self</span><span class="o">.</span><span class="n">StrStaEdit</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">&#39;Load stress/strain data from file&#39;</span><span class="p">,</span>
    33431954            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_STRSTALOAD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Load stress/strain&#39;</span><span class="p">)</span>
     1955        <span class="bp">self</span><span class="o">.</span><span class="n">StrStaEdit</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">&#39;Load sample data from file&#39;</span><span class="p">,</span>
     1956            <span class="nb">id</span><span class="o">=</span><span class="n">wxID_STRSTSAMPLE</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Load sample data&#39;</span><span class="p">)</span>
    33441957        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
    33451958           
     
    33551968        <span class="bp">self</span><span class="o">.</span><span class="n">PDFEdit</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">&#39;Copy PDF controls&#39;</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxID_PDFCOPYCONTROLS</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>
    33561969            <span class="n">text</span><span class="o">=</span><span class="s">&#39;Copy controls&#39;</span><span class="p">)</span>
    3357         <span class="c">#        self.PDFEdit.Append(help=&#39;Load PDF controls from file&#39;,id=wxID_PDFLOADCONTROLS, kind=wx.ITEM_NORMAL,</span>
    3358         <span class="c">#            text=&#39;Load Controls&#39;)</span>
    3359         <span class="c">#        self.PDFEdit.Append(help=&#39;Save PDF controls to file&#39;, id=wxID_PDFSAVECONTROLS, kind=wx.ITEM_NORMAL,</span>
    3360         <span class="c">#            text=&#39;Save controls&#39;)</span>
     1970        <span class="bp">self</span><span class="o">.</span><span class="n">PDFEdit</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">&#39;Load PDF controls from file&#39;</span><span class="p">,</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_PDFLOADCONTROLS</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>
     1971            <span class="n">text</span><span class="o">=</span><span class="s">&#39;Load Controls&#39;</span><span class="p">)</span>
     1972        <span class="bp">self</span><span class="o">.</span><span class="n">PDFEdit</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">&#39;Save PDF controls to file&#39;</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxID_PDFSAVECONTROLS</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>
     1973            <span class="n">text</span><span class="o">=</span><span class="s">&#39;Save controls&#39;</span><span class="p">)</span>
    33611974        <span class="bp">self</span><span class="o">.</span><span class="n">PDFEdit</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">&#39;Compute PDF&#39;</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxID_PDFCOMPUTE</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>
    33621975            <span class="n">text</span><span class="o">=</span><span class="s">&#39;Compute PDF&#39;</span><span class="p">)</span>
     
    33771990        <span class="bp">self</span><span class="o">.</span><span class="n">GeneralCalc</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">&#39;Run charge flipping&#39;</span><span class="p">,</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_CHARGEFLIP</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>
    33781991            <span class="n">text</span><span class="o">=</span><span class="s">&#39;Charge flipping&#39;</span><span class="p">)</span>
     1992        <span class="bp">self</span><span class="o">.</span><span class="n">GeneralCalc</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">&#39;Run 4D charge flipping&#39;</span><span class="p">,</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_4DCHARGEFLIP</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>
     1993            <span class="n">text</span><span class="o">=</span><span class="s">&#39;4D Charge flipping&#39;</span><span class="p">)</span>
     1994        <span class="bp">self</span><span class="o">.</span><span class="n">GeneralCalc</span><span class="o">.</span><span class="n">Enable</span><span class="p">(</span><span class="n">wxID_4DCHARGEFLIP</span><span class="p">,</span><span class="bp">False</span><span class="p">)</span>   
    33791995        <span class="bp">self</span><span class="o">.</span><span class="n">GeneralCalc</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">&#39;Clear map&#39;</span><span class="p">,</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_FOURCLEAR</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>
    33801996            <span class="n">text</span><span class="o">=</span><span class="s">&#39;Clear map&#39;</span><span class="p">)</span>
     
    34252041        <span class="bp">self</span><span class="o">.</span><span class="n">AtomEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_ATOMSTRANSFORM</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Transform atoms&#39;</span><span class="p">,</span>
    34262042            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Select atoms to transform first&#39;</span><span class="p">)</span>
     2043        <span class="bp">self</span><span class="o">.</span><span class="n">AtomEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_MAKEMOLECULE</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Assemble molecule&#39;</span><span class="p">,</span>
     2044            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Assemble molecule from scatterd atom positions&#39;</span><span class="p">)</span>
    34272045        <span class="bp">self</span><span class="o">.</span><span class="n">AtomEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_RELOADDRAWATOMS</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Reload draw atoms&#39;</span><span class="p">,</span>
    34282046            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Reload atom drawing list&#39;</span><span class="p">)</span>
     
    34582076        <span class="bp">self</span><span class="o">.</span><span class="n">PrefillDataMenu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">WavesData</span><span class="p">,</span><span class="n">helpType</span><span class="o">=</span><span class="s">&#39;Wave Data&#39;</span><span class="p">,</span> <span class="n">helpLbl</span><span class="o">=</span><span class="s">&#39;Imcommensurate wave data&#39;</span><span class="p">)</span>
    34592077        <span class="bp">self</span><span class="o">.</span><span class="n">WavesData</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">),</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;Select tab&#39;</span><span class="p">)</span>
     2078        <span class="bp">self</span><span class="o">.</span><span class="n">WavesDataCompute</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Menu</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">)</span>
     2079        <span class="bp">self</span><span class="o">.</span><span class="n">WavesData</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WavesDataCompute</span><span class="p">,</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;Compute&#39;</span><span class="p">)</span>
     2080        <span class="bp">self</span><span class="o">.</span><span class="n">WavesDataCompute</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_4DMAPCOMPUTE</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Compute 4D map&#39;</span><span class="p">,</span>
     2081            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Compute 4-dimensional map&#39;</span><span class="p">)</span>
    34602082        <span class="bp">self</span><span class="o">.</span><span class="n">PostfillDataMenu</span><span class="p">()</span>
    34612083                 
     
    34902112        <span class="bp">self</span><span class="o">.</span><span class="n">DrawAtomEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_DRAWADDEQUIV</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Add atoms&#39;</span><span class="p">,</span>
    34912113            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Add symmetry &amp; cell equivalents to drawing set from selected atoms&#39;</span><span class="p">)</span>
    3492         <span class="bp">self</span><span class="o">.</span><span class="n">DrawAtomEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_DRAWTRANSFORM</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Transform atoms&#39;</span><span class="p">,</span>
     2114        <span class="bp">self</span><span class="o">.</span><span class="n">DrawAtomEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_DRAWTRANSFORM</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Transform draw atoms&#39;</span><span class="p">,</span>
    34932115            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Transform selected atoms by symmetry &amp; cell translations&#39;</span><span class="p">)</span>
    34942116        <span class="bp">self</span><span class="o">.</span><span class="n">DrawAtomEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_DRAWFILLCOORD</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Fill CN-sphere&#39;</span><span class="p">,</span>
     
    35422164<span class="c">#        self.TextureEdit.Append(id=wxID_REFINETEXTURE, kind=wx.ITEM_NORMAL,text=&#39;Refine texture&#39;, </span>
    35432165<span class="c">#            help=&#39;Refine the texture coefficients from sequential Pawley results&#39;)</span>
     2166<span class="c"># N.B. Binding is now commented out</span>
    35442167        <span class="bp">self</span><span class="o">.</span><span class="n">TextureEdit</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">wxID_CLEARTEXTURE</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><span class="n">text</span><span class="o">=</span><span class="s">&#39;Clear texture&#39;</span><span class="p">,</span>
    35452168            <span class="n">help</span><span class="o">=</span><span class="s">&#39;Clear the texture coefficients&#39;</span> <span class="p">)</span>
     
    38622485    <span class="k">def</span> <span class="nf">GetTypeName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">):</span>
    38632486        <span class="k">try</span><span class="p">:</span>
     2487            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">row</span><span class="p">][</span><span class="n">col</span><span class="p">]</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">return</span> <span class="bp">None</span>
    38642488            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dataTypes</span><span class="p">[</span><span class="n">col</span><span class="p">]</span>
    3865         <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
     2489        <span class="k">except</span> <span class="p">(</span><span class="ne">TypeError</span><span class="p">,</span><span class="ne">IndexError</span><span class="p">):</span>
    38662490            <span class="k">return</span> <span class="bp">None</span>
    38672491
    38682492    <span class="k">def</span> <span class="nf">GetValue</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">):</span>
    38692493        <span class="k">try</span><span class="p">:</span>
     2494            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">row</span><span class="p">][</span><span class="n">col</span><span class="p">]</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">return</span> <span class="s">&quot;&quot;</span>
    38702495            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">row</span><span class="p">][</span><span class="n">col</span><span class="p">]</span>
    38712496        <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
     
    39232548                <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">row</span><span class="p">][</span><span class="n">col</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
    39242549        <span class="n">innerSetValue</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
    3925        
    3926 <span class="c">################################################################################</span>
    3927 <span class="c">#### Help</span>
    3928 <span class="c">################################################################################</span>
    3929 </div>
    3930 <div class="viewcode-block" id="ShowHelp"><a class="viewcode-back" href="../GSASIIGUIr.html#GSASIIgrid.ShowHelp">[docs]</a><span class="k">def</span> <span class="nf">ShowHelp</span><span class="p">(</span><span class="n">helpType</span><span class="p">,</span><span class="n">frame</span><span class="p">):</span>
    3931     <span class="sd">&#39;&#39;&#39;Called to bring up a web page for documentation.&#39;&#39;&#39;</span>
    3932     <span class="k">global</span> <span class="n">htmlFirstUse</span>
    3933     <span class="c"># look up a definition for help info from dict</span>
    3934     <span class="n">helplink</span> <span class="o">=</span> <span class="n">helpLocDict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">helpType</span><span class="p">)</span>
    3935     <span class="k">if</span> <span class="n">helplink</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
    3936         <span class="c"># no defined link to use, create a default based on key</span>
    3937         <span class="n">helplink</span> <span class="o">=</span> <span class="s">&#39;gsasII.html#&#39;</span><span class="o">+</span><span class="n">helpType</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span><span class="s">&#39;_&#39;</span><span class="p">)</span>
    3938     <span class="n">helplink</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path2GSAS2</span><span class="p">,</span><span class="s">&#39;help&#39;</span><span class="p">,</span><span class="n">helplink</span><span class="p">)</span>
    3939     <span class="k">if</span> <span class="n">helpMode</span> <span class="o">==</span> <span class="s">&#39;internal&#39;</span><span class="p">:</span>
    3940         <span class="k">try</span><span class="p">:</span>
    3941             <span class="n">htmlPanel</span><span class="o">.</span><span class="n">LoadFile</span><span class="p">(</span><span class="n">helplink</span><span class="p">)</span>
    3942             <span class="n">htmlFrame</span><span class="o">.</span><span class="n">Raise</span><span class="p">()</span>
    3943         <span class="k">except</span><span class="p">:</span>
    3944             <span class="n">htmlFrame</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">frame</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="mi">610</span><span class="p">,</span> <span class="mi">510</span><span class="p">))</span>
    3945             <span class="n">htmlFrame</span><span class="o">.</span><span class="n">Show</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
    3946             <span class="n">htmlFrame</span><span class="o">.</span><span class="n">SetTitle</span><span class="p">(</span><span class="s">&quot;HTML Window&quot;</span><span class="p">)</span> <span class="c"># N.B. reset later in LoadFile</span>
    3947             <span class="n">htmlPanel</span> <span class="o">=</span> <span class="n">MyHtmlPanel</span><span class="p">(</span><span class="n">htmlFrame</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
    3948             <span class="n">htmlPanel</span><span class="o">.</span><span class="n">LoadFile</span><span class="p">(</span><span class="n">helplink</span><span class="p">)</span>
    3949     <span class="k">else</span><span class="p">:</span>
    3950         <span class="n">pfx</span> <span class="o">=</span> <span class="s">&quot;file://&quot;</span>
    3951         <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="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;win&#39;</span><span class="p">):</span>
    3952             <span class="n">pfx</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
    3953         <span class="k">if</span> <span class="n">htmlFirstUse</span><span class="p">:</span>
    3954             <span class="n">webbrowser</span><span class="o">.</span><span class="n">open_new</span><span class="p">(</span><span class="n">pfx</span><span class="o">+</span><span class="n">helplink</span><span class="p">)</span>
    3955             <span class="n">htmlFirstUse</span> <span class="o">=</span> <span class="bp">False</span>
    3956         <span class="k">else</span><span class="p">:</span>
    3957             <span class="n">webbrowser</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">pfx</span><span class="o">+</span><span class="n">helplink</span><span class="p">,</span> <span class="n">new</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">autoraise</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
    39582550
    39592551<span class="c">################################################################################</span>
     
    42472839            <span class="n">sampleParmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;Sample load&#39;</span><span class="p">:[],}</span>
    42482840        <span class="k">else</span><span class="p">:</span>
    4249             <span class="n">sampleParmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;Temperature&#39;</span><span class="p">:[],</span><span class="s">&#39;Pressure&#39;</span><span class="p">:[],</span>
     2841            <span class="n">sampleParmDict</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;Temperature&#39;</span><span class="p">:[],</span><span class="s">&#39;Pressure&#39;</span><span class="p">:[],</span><span class="s">&#39;Time&#39;</span><span class="p">:[],</span>
    42502842                              <span class="s">&#39;FreePrm1&#39;</span><span class="p">:[],</span><span class="s">&#39;FreePrm2&#39;</span><span class="p">:[],</span><span class="s">&#39;FreePrm3&#39;</span><span class="p">:[],}</span>
    42512843        <span class="n">Controls</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>
     
    42552847            <span class="k">if</span> <span class="s">&#39;IMG&#39;</span> <span class="ow">in</span> <span class="n">name</span><span class="p">:</span>
    42562848                <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sampleParmDict</span><span class="p">:</span>
    4257                     <span class="n">sampleParmDict</span><span class="p">[</span><span class="n">item</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;parmDict&#39;</span><span class="p">][</span><span class="n">item</span><span class="p">])</span>
     2849                    <span class="n">sampleParmDict</span><span class="p">[</span><span class="n">item</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;parmDict&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">item</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span>
    42582850            <span class="k">else</span><span class="p">:</span>
    42592851                <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">name</span><span class="p">)</span>
    42602852                <span class="n">sampleData</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">&#39;Sample Parameters&#39;</span><span class="p">))</span>
    42612853                <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sampleParmDict</span><span class="p">:</span>
    4262                     <span class="n">sampleParmDict</span><span class="p">[</span><span class="n">item</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sampleData</span><span class="p">[</span><span class="n">item</span><span class="p">])</span>
     2854                    <span class="n">sampleParmDict</span><span class="p">[</span><span class="n">item</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sampleData</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">item</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span>
    42632855        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sampleParmDict</span><span class="p">:</span>
    42642856            <span class="n">frstValue</span> <span class="o">=</span> <span class="n">sampleParmDict</span><span class="p">[</span><span class="n">item</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
     
    43292921        <span class="n">G2plt</span><span class="o">.</span><span class="n">PlotSelectedSequence</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">cols</span><span class="p">,</span><span class="n">GetColumnInfo</span><span class="p">,</span><span class="n">SelectXaxis</span><span class="p">)</span>
    43302922           
     2923    <span class="k">def</span> <span class="nf">OnReOrgSelSeq</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
     2924        <span class="s">&#39;Reorder the columns&#39;</span>
     2925        <span class="n">G2G</span><span class="o">.</span><span class="n">GetItemOrder</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">VaryListChanges</span><span class="p">,</span><span class="n">vallookup</span><span class="p">,</span><span class="n">posdict</span><span class="p">)</span>   
     2926        <span class="n">UpdateSeqResults</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">data</span><span class="p">,</span><span class="n">G2frame</span><span class="o">.</span><span class="n">dataDisplay</span><span class="o">.</span><span class="n">GetSize</span><span class="p">())</span> <span class="c"># redisplay variables</span>
     2927
    43312928    <span class="k">def</span> <span class="nf">OnSaveSelSeqCSV</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
    43322929        <span class="s">&#39;export the selected columns to a .csv file from menu command&#39;</span>
    43332930        <span class="n">OnSaveSelSeq</span><span class="p">(</span><span class="n">event</span><span class="p">,</span><span class="n">csv</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
    43342931       
    4335     <span class="k">def</span> <span class="nf">OnSaveSelSeq</span><span class="p">(</span><span class="n">event</span><span class="p">,</span><span class="n">csv</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
    4336         <span class="s">&#39;export the selected columns to a .txt file from menu command&#39;</span>
     2932    <span class="k">def</span> <span class="nf">OnSaveSeqCSV</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
     2933        <span class="s">&#39;export all columns to a .csv file from menu command&#39;</span>
     2934        <span class="n">OnSaveSelSeq</span><span class="p">(</span><span class="n">event</span><span class="p">,</span><span class="n">csv</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span><span class="n">allcols</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
     2935       
     2936    <span class="k">def</span> <span class="nf">OnSaveSelSeq</span><span class="p">(</span><span class="n">event</span><span class="p">,</span><span class="n">csv</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span><span class="n">allcols</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
     2937        <span class="s">&#39;export the selected columns to a .txt or .csv file from menu command&#39;</span>
    43372938        <span class="k">def</span> <span class="nf">WriteCSV</span><span class="p">():</span>
    43382939            <span class="k">def</span> <span class="nf">WriteList</span><span class="p">(</span><span class="n">headerItems</span><span class="p">):</span>
     
    43452946            <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">cols</span><span class="p">:</span>
    43462947                <span class="n">item</span> <span class="o">=</span> <span class="n">G2frame</span><span class="o">.</span><span class="n">SeqTable</span><span class="o">.</span><span class="n">GetColLabelValue</span><span class="p">(</span><span class="n">col</span><span class="p">)</span>
     2948                <span class="c"># get rid of labels that have Unicode characters</span>
     2949                <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="nb">ord</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">128</span> <span class="ow">and</span> <span class="nb">ord</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">item</span><span class="p">]):</span> <span class="n">item</span> <span class="o">=</span> <span class="s">&#39;?&#39;</span>
    43472950                <span class="k">if</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">havesig</span><span class="p">:</span>
    43482951                    <span class="n">head</span> <span class="o">+=</span> <span class="p">[</span><span class="n">item</span><span class="p">,</span><span class="s">&#39;esd-&#39;</span><span class="o">+</span><span class="n">item</span><span class="p">]</span>
     
    43772980                <span class="n">SeqFile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">line</span><span class="o">+</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
    43782981
    4379         <span class="n">cols</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">G2frame</span><span class="o">.</span><span class="n">dataDisplay</span><span class="o">.</span><span class="n">GetSelectedCols</span><span class="p">())</span> <span class="c"># ignore selection order</span>
     2982        <span class="c"># start of OnSaveSelSeq code</span>
     2983        <span class="k">if</span> <span class="n">allcols</span><span class="p">:</span>
     2984            <span class="n">cols</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">G2frame</span><span class="o">.</span><span class="n">SeqTable</span><span class="o">.</span><span class="n">GetNumberCols</span><span class="p">())</span>
     2985        <span class="k">else</span><span class="p">:</span>
     2986            <span class="n">cols</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">G2frame</span><span class="o">.</span><span class="n">dataDisplay</span><span class="o">.</span><span class="n">GetSelectedCols</span><span class="p">())</span> <span class="c"># ignore selection order</span>
    43802987        <span class="n">nrows</span> <span class="o">=</span> <span class="n">G2frame</span><span class="o">.</span><span class="n">SeqTable</span><span class="o">.</span><span class="n">GetNumberRows</span><span class="p">()</span>
    43812988        <span class="k">if</span> <span class="ow">not</span> <span class="n">cols</span><span class="p">:</span>
     
    44183025        <span class="n">sv</span> <span class="o">=</span> <span class="n">var</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;:&#39;</span><span class="p">)</span>
    44193026        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sv</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span> <span class="k">return</span> <span class="n">var</span>
    4420         <span class="n">sv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">insChar</span>
     3027        <span class="k">if</span> <span class="n">sv</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
     3028            <span class="n">sv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">insChar</span>
    44213029        <span class="k">return</span> <span class="s">&#39;:&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sv</span><span class="p">)</span>
    44223030       
     
    45123120            <span class="n">UpdateSeqResults</span><span class="p">(</span><span class="n">G2frame</span><span class="p">,</span><span class="n">data</span><span class="p">,</span><span class="n">G2frame</span><span class="o">.</span><span class="n">dataDisplay</span><span class="o">.</span><span class="n">GetSize</span><span class="p">())</span> <span class="c"># redisplay variables</span>
    45133121
    4514     <span class="c"># PATCH: this routine can go away eventually</span>
    4515     <span class="k">def</span> <span class="nf">CreatePSvarDict</span><span class="p">(</span><span class="n">seqnum</span><span class="p">,</span><span class="n">name</span><span class="p">):</span>
    4516         <span class="sd">&#39;&#39;&#39;Create a parameter dict (parmDict) for everything that might be used</span>
    4517 <span class="sd">        in a PseudoVar.</span>
    4518 <span class="sd">        Also creates a list of revised labels (modVaryList) for the covariance matrix to</span>
    4519 <span class="sd">        match the items in the parameter dict and a matching list of ESDs (ESDvaryList).</span>
    4520 <span class="sd">        </span>
    4521 <span class="sd">        :param int seqnum: the sequence number of the histogram in the sequential</span>
    4522 <span class="sd">          refinement</span>
    4523 <span class="sd">        :param str name: the name of the histogram in the data tree</span>
    4524 
    4525 <span class="sd">        :returns: parmDict,modVaryList,ESDvaryList</span>
    4526 <span class="sd">        &#39;&#39;&#39;</span>
    4527         <span class="n">parmDict</span> <span class="o">=</span> <span class="p">{}</span>
    4528         <span class="n">modVaryList</span> <span class="o">=</span> <span class="p">[]</span>
    4529         <span class="k">for</span> <span class="n">i</span><span class="p">,(</span><span class="n">key</span><span class="p">,</span><span class="n">val</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">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;varyList&#39;</span><span class="p">],</span><span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;variables&#39;</span><span class="p">])):</span>
    4530             <span class="n">skey</span> <span class="o">=</span> <span class="n">striphist</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
    4531             <span class="k">if</span> <span class="n">skey</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;newAtomDict&#39;</span><span class="p">,{}):</span>
    4532                 <span class="c"># replace coordinate shifts with equivalents from lookup table</span>
    4533                 <span class="n">repkey</span><span class="p">,</span><span class="n">repval</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;newAtomDict&#39;</span><span class="p">][</span><span class="n">skey</span><span class="p">]</span>
    4534                 <span class="n">parmDict</span><span class="p">[</span><span class="n">repkey</span><span class="p">]</span> <span class="o">=</span> <span class="n">repval</span>
    4535                 <span class="n">modVaryList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">repkey</span><span class="p">)</span>
    4536             <span class="k">elif</span> <span class="n">skey</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;newCellDict&#39;</span><span class="p">,{}):</span>
    4537                 <span class="c"># replace recip. cell term shifts with equivalents from lookup table        </span>
    4538                 <span class="n">repkey</span><span class="p">,</span><span class="n">repval</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;newCellDict&#39;</span><span class="p">][</span><span class="n">skey</span><span class="p">]</span>
    4539                 <span class="n">parmDict</span><span class="p">[</span><span class="n">repkey</span><span class="p">]</span> <span class="o">=</span> <span class="n">repval</span>
    4540                 <span class="n">modVaryList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">repkey</span><span class="p">)</span>
    4541             <span class="k">else</span><span class="p">:</span>
    4542                 <span class="n">parmDict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span>
    4543                 <span class="n">modVaryList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
    4544         <span class="c"># create a cell parm dict, override initial settings with values in parmDict</span>
    4545         <span class="k">for</span> <span class="n">phase</span> <span class="ow">in</span> <span class="n">Phases</span><span class="p">:</span>
    4546             <span class="n">phasedict</span> <span class="o">=</span> <span class="n">Phases</span><span class="p">[</span><span class="n">phase</span><span class="p">]</span>
    4547             <span class="n">pId</span> <span class="o">=</span> <span class="n">phasedict</span><span class="p">[</span><span class="s">&#39;pId&#39;</span><span class="p">]</span>
    4548             <span class="n">cell</span> <span class="o">=</span> <span class="n">Rcelldict</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
    4549             <span class="n">cell</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
    4550                 <span class="p">{</span><span class="n">lbl</span><span class="p">:</span><span class="n">parmDict</span><span class="p">[</span><span class="n">lbl</span><span class="p">]</span> <span class="k">for</span> <span class="n">lbl</span> <span class="ow">in</span> <span class="n">RcellLbls</span><span class="p">[</span><span class="n">pId</span><span class="p">]</span> <span class="k">if</span> <span class="n">lbl</span> <span class="ow">in</span> <span class="n">parmDict</span><span class="p">}</span>
    4551                 <span class="p">)</span>
    4552             <span class="n">pfx</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">pId</span><span class="p">)</span><span class="o">+</span><span class="s">&#39;::&#39;</span> <span class="c"># prefix for A values from phase</span>
    4553             <span class="n">A</span><span class="p">,</span><span class="n">zeros</span> <span class="o">=</span> <span class="n">G2stIO</span><span class="o">.</span><span class="n">cellFill</span><span class="p">(</span><span class="n">pfx</span><span class="p">,</span><span class="n">SGdata</span><span class="p">[</span><span class="n">pId</span><span class="p">],</span><span class="n">cell</span><span class="p">,</span><span class="n">zeroDict</span><span class="p">[</span><span class="n">pId</span><span class="p">])</span>
    4554             <span class="n">parmDict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">pfx</span><span class="o">+</span><span class="n">cellUlbl</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span><span class="n">val</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">val</span> <span class="ow">in</span>
    4555                              <span class="nb">enumerate</span><span class="p">(</span><span class="n">G2lat</span><span class="o">.</span><span class="n">A2cell</span><span class="p">(</span><span class="n">A</span><span class="p">))</span>
    4556                              <span class="k">if</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">uniqCellIndx</span><span class="p">[</span><span class="n">pId</span><span class="p">]</span>
    4557                              <span class="p">})</span>
    4558             <span class="n">parmDict</span><span class="p">[</span><span class="n">pfx</span><span class="o">+</span><span class="s">&quot;vol&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">calc_V</span><span class="p">(</span><span class="n">A</span><span class="p">)</span>
    4559         <span class="c"># now add misc terms to dict</span>
    4560         <span class="n">parmDict</span><span class="p">[</span><span class="s">&#39;Rwp&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;Rvals&#39;</span><span class="p">][</span><span class="s">&#39;Rwp&#39;</span><span class="p">]</span>
    4561         <span class="n">parmDict</span><span class="p">[</span><span class="s">u&#39;</span><span class="se">\u0394\u03C7\u00B2</span><span class="s"> (%)&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">100.</span><span class="o">*</span><span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;Rvals&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;DelChi2&#39;</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
    4562         <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">sampleParms</span><span class="p">:</span>
    4563             <span class="n">parmDict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">sampleParms</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">seqnum</span><span class="p">]</span>
    4564         <span class="k">return</span> <span class="n">parmDict</span><span class="p">,</span><span class="n">modVaryList</span><span class="p">,</span><span class="n">data</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="s">&#39;sig&#39;</span><span class="p">]</span>
    4565 
    45663122    <span class="k">def</span> <span class="nf">UpdateParmDict</span><span class="p">(</span><span class="n">parmDict</span><span class="p">):</span>
    45673123        <span class="sd">&#39;&#39;&#39;generate the atom positions and the direct &amp; reciprocal cell values,</span>
     
    46013157        <span class="k">return</span> <span class="n">parmDict</span>
    46023158
    4603     <span class="k">def</span> <span class="nf">EvalPSvarDeriv</span><span class="p">(</span><span class="n">calcobj</span><span class="p">,</span><span class="n">parmDict</span><span class="p">,</span><span class="n">var</span><span class="p">,</span><span class="n">ESD</span><span class="p">):</span>
     3159    <span class="k">def</span> <span class="nf">EvalPSvarDeriv</span><span class="p">(</span><span class="n">calcobj</span><span class="p">,</span><span class="n">parmDict</span><span class="p">,</span><span class="n">sampleDict</span><span class="p">,</span><span class="n">var</span><span class="p">,</span><span class="n">ESD</span><span class="p">):</span>
    46043160        <span class="sd">&#39;&#39;&#39;Evaluate an expression derivative with respect to a</span>
    46053161<span class="sd">        GSAS-II variable name.</span>
     
    46143170        <span class="n">results</span> <span class="o">=</span> <span class="p">[]</span>
    46153171        <span class="n">phaselist</span> <span class="o">=</span> <span class="p">[]</span>
     3172        <span class="n">VparmDict</span> <span class="o">=</span> <span class="n">sampleDict</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
    46163173        <span class="k">for</span> <span class="n">incr</span> <span class="ow">in</span> <span class="n">step</span><span class="p">,</span><span class="o">-</span><span class="n">step</span><span class="p">:</span>
    4617             <span class="n">VparmDict</span> <span class="o">=</span> <span class="n">parmDict</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>            
     3174            <span class="n">VparmDict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">parmDict</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span>           
    46183175            <span class="c"># as saved, the parmDict has updated &#39;A[xyz]&#39; values, but &#39;dA[xyz]&#39;</span>
    46193176            <span class="c"># values are not zeroed: fix that!</span>
     
    46233180            <span class="c"># generate the atom positions and the direct &amp; reciprocal cell values now, because they might</span>
    46243181            <span class="c"># needed to evaluate the pseudovar</span>
    4625             <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">VparmDict</span><span class="p">:</span>
     3182            <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">VparmDict</span><span class="p">:</span>
     3183                <span class="k">if</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sampleDict</span><span class="p">:</span>
     3184                    <span class="k">continue</span>
    46263185                <span class="k">if</span> <span class="s">&#39;:&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">item</span><span class="p">:</span> <span class="k">continue</span>
    46273186                <span class="n">key</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;:&#39;</span><span class="p">)</span>
     
    48843443        <span class="n">lbl</span> <span class="o">=</span> <span class="n">variableLabels</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">var</span><span class="p">,</span><span class="n">G2obj</span><span class="o">.</span><span class="n">fmtVarDescr</span><span class="p">(</span><span class="n">var</span><span class="p">))</span>
    48853444        <span class="n">dlg</span> <span class="o">=</span> <span class="n">SingleStringDialog</span><span class="p">(</span><span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</span><span class="p">,</span><span class="s">&#39;Set variable label&#39;</span><span class="p">,</span>
    4886                                  <span class="s">&#39;Set a name for variable &#39;</span><span class="o">+</span><span class="n">var</span><span class="p">,</span><span class="n">lbl</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span>
     3445                                 <span class="s">&#39;Set a new name for variable &#39;</span><span class="o">+</span><span class="n">var</span><span class="p">,</span><span class="n">lbl</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span>
    48873446        <span class="k">if</span> <span class="n">dlg</span><span class="o">.</span><span class="n">Show</span><span class="p">():</span>
    48883447            <span class="n">variableLabels</span><span class="p">[</span><span class="n">var</span><span class="p">]</span> <span class="o">=</span> <span class="n">dlg</span><span class="o">.</span><span class="n">GetValue</span><span class="p">()</span>
     
    49153474    <span class="n">Histograms</span><span class="p">,</span><span class="n">Phases</span> <span class="o">=</span> <span class="n">G2frame</span><span class="o">.</span><span class="n">GetUsedHistogramsAndPhasesfromTree</span><span class="p">()</span>
    49163475    <span class="n">Controls</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">G2frame</span><span class="o">.</span><span class="n">root</span><span class="p">,</span><span class="s">&#39;Controls&#39;</span><span class="p">))</span>
    4917     <span class="c"># create a place to store Pseudo Vars &amp; Parametric Fit functions, if needed</span>
     3476    <span class="c"># create a place to store Pseudo Vars &amp; Parametric Fit functions, if not present</span>
    49183477    <span class="k">if</span> <span class="s">&#39;SeqPseudoVars&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">Controls</span><span class="p">:</span> <span class="n">Controls</span><span class="p">[</span><span class="s">&#39;SeqPseudoVars&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
    49193478    <span class="k">if</span> <span class="s">&#39;SeqParFitEqList&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">Controls</span><span class="p">:</span> <span class="n">Controls</span><span class="p">[</span><span class="s">&#39;SeqParFitEqList&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
     
    49833542    <span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</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="n">OnSaveSelSeq</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAVESEQSEL</span><span class="p">)</span>
    49843543    <span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</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="n">OnSaveSelSeqCSV</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAVESEQSELCSV</span><span class="p">)</span>
     3544    <span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</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="n">OnSaveSeqCSV</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxID_SAVESEQCSV</span><span class="p">)</span>
    49853545    <span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</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="n">OnPlotSelSeq</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxID_PLOTSEQSEL</span><span class="p">)</span>
     3546    <span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</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="n">OnReOrgSelSeq</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxID_ORGSEQSEL</span><span class="p">)</span>
    49863547    <span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</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="n">AddNewPseudoVar</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxADDSEQVAR</span><span class="p">)</span>
    49873548    <span class="n">G2frame</span><span class="o">.</span><span class="n">dataFrame</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="n">DelPseudoVar</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">wxDELSEQVAR</span><span class="p">)</span>
     
    49953556    <span class="n">EnableParFitEqMenus</span><span class="p">()</span>
    49963557
     3558    <span class="c"># scan for locations where the variables change</span>
     3559    <span class="n">VaryListChanges</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># histograms where there is a change</span>
     3560    <span class="n">combinedVaryList</span> <span class="o">=</span> <span class="p">[]</span>
     3561    <span class="n">firstValueDict</span> <span class="o">=</span> <span class="p">{}</span>
     3562    <span class="n">vallookup</span> <span class="o">=</span> <span class="p">{}</span>
     3563    <span class="n">posdict</span> <span class="o">=</span> <span class="p">{}</span>
     3564    <span class="n">prevVaryList</span> <span class="o">=</span> <span class="p">[]</span>
     3565    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">histNames</span><span class="p">):</span>
     3566        <span class="k">for</span> <span class="n">var</span><span class="p">,</span><span class="n">val</span><span class="p">,</span><span class="n">sig</span> <span class="ow">in</span> <span class="nb">zip</span><span class=