source: MML/trunk/at/doc_html/at/atgui/intelem.html @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 14.6 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of intelem</title>
6  <meta name="keywords" content="intelem">
7  <meta name="description" content="INTELEM - interactive element editor.">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
10  <meta name="robots" content="index, follow">
11  <link type="text/css" rel="stylesheet" href="../../m2html.css">
12</head>
13<body>
14<a name="_top"></a>
15<div><a href="../../index.html">Home</a> &gt;  <a href="../index.html">at</a> &gt; <a href="index.html">atgui</a> &gt; intelem.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../../index.html"><img alt="<" border="0" src="../../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for at/atgui&nbsp;<img alt=">" border="0" src="../../right.png"></a></td></tr></table>-->
19
20<h1>intelem
21</h1>
22
23<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
24<div class="box"><strong>INTELEM - interactive element editor.</strong></div>
25
26<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
27<div class="box"><strong>function h0 = intelem(varargin) </strong></div>
28
29<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
30<div class="fragment"><pre class="comment">INTELEM - interactive element editor.
31   
32    INTELEM(INDEX) retrieves THERING{INDEX} from the
33        main workspace and displays the values of all fields for that element
34        Fields that are 1xN vectors or MxN matrixies
35        such as multipole field data stored in 'PolynomA' are displayed
36        in M raws and N columns, each element in a separate text box.
37
38    INTELEM(INDEX, Fields2Display)
39        Some element models/definitions contain large number of
40        parameters. It may be desired to interactively control only few of them
41        A cell array of strings Fields2Display allows to select which
42        element parameters are included in the GUI.
43        When Fields2Display contains a field name that does not exist for
44         an elemet no error is generated ,that field is ignored.
45     For example
46            Fields2Display = {'FamName' 'Length' 'K' 'BendingAngle'} 
47             INELEM displays 'FamName' and 'Length' when called for a drift
48            'FamName','Length','K' when called for a quadrupole
49            'FamName','Length','BendingAngle' for a bending magnet etc.
50       
51    INTELEM('action') when the first argument is a string
52    recursively called from inside the INTELEM GUI to evaluate callbacks
53    Possible values for action are
54    'set'
55    'reset'
56    'synch'</pre></div>
57
58<!-- crossreference -->
59<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
60This function calls:
61<ul style="list-style-image:url(../../matlabicon.gif)">
62</ul>
63This function is called by:
64<ul style="list-style-image:url(../../matlabicon.gif)">
65<li><a href="intlat.html" class="code" title="function intlat(varargin)">intlat</a>     INTLAT - interactive AT lattice editor</li></ul>
66<!-- crossreference -->
67
68
69<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
70<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function h0 = intelem(varargin)</a>
710002
720003 <span class="comment">%INTELEM - interactive element editor.</span>
730004 <span class="comment">%</span>
740005 <span class="comment">%    INTELEM(INDEX) retrieves THERING{INDEX} from the</span>
750006 <span class="comment">%        main workspace and displays the values of all fields for that element</span>
760007 <span class="comment">%        Fields that are 1xN vectors or MxN matrixies</span>
770008 <span class="comment">%        such as multipole field data stored in 'PolynomA' are displayed</span>
780009 <span class="comment">%        in M raws and N columns, each element in a separate text box.</span>
790010 <span class="comment">%</span>
800011 <span class="comment">%    INTELEM(INDEX, Fields2Display)</span>
810012 <span class="comment">%        Some element models/definitions contain large number of</span>
820013 <span class="comment">%        parameters. It may be desired to interactively control only few of them</span>
830014 <span class="comment">%        A cell array of strings Fields2Display allows to select which</span>
840015 <span class="comment">%        element parameters are included in the GUI.</span>
850016 <span class="comment">%        When Fields2Display contains a field name that does not exist for</span>
860017 <span class="comment">%         an elemet no error is generated ,that field is ignored.</span>
870018 <span class="comment">%     For example</span>
880019 <span class="comment">%            Fields2Display = {'FamName' 'Length' 'K' 'BendingAngle'}</span>
890020 <span class="comment">%             INELEM displays 'FamName' and 'Length' when called for a drift</span>
900021 <span class="comment">%            'FamName','Length','K' when called for a quadrupole</span>
910022 <span class="comment">%            'FamName','Length','BendingAngle' for a bending magnet etc.</span>
920023 <span class="comment">%</span>
930024 <span class="comment">%    INTELEM('action') when the first argument is a string</span>
940025 <span class="comment">%    recursively called from inside the INTELEM GUI to evaluate callbacks</span>
950026 <span class="comment">%    Possible values for action are</span>
960027 <span class="comment">%    'set'</span>
970028 <span class="comment">%    'reset'</span>
980029 <span class="comment">%    'synch'</span>
990030
1000031 <span class="keyword">global</span> THERING 
1010032
1020033 <span class="keyword">if</span> isnumeric(varargin{1})    <span class="comment">%initial call</span>
1030034     index = varargin{1};
1040035     UD.LatticeIndex = index;
1050036
1060037     ElementRecordCopy = THERING{index};
1070038     <span class="keyword">if</span> nargin &gt; 1
1080039         NumFields = 0;
1090040         Names = {};
1100041         <span class="keyword">for</span> i = 1:length(varargin{2})
1110042             <span class="keyword">if</span> isfield(THERING{index},varargin{2}{i})
1120043                 NumFields = NumFields+1;
1130044                 Names{NumFields} = varargin{2}{i};
1140045             <span class="keyword">end</span>
1150046         <span class="keyword">end</span>
1160047     <span class="keyword">else</span>
1170048         Names = fieldnames(THERING{index});
1180049         NumFields = length(Names);
1190050     <span class="keyword">end</span>
1200051
1210052
1220053
1230054     NameBoxWidth = 70;
1240055     NameBoxHeight = 14;
1250056
1260057     EditBoxWidth = 60;
1270058     EditBoxWidth2 = 40;
1280059     EditBoxHeight = 14;
1290060
1300061     SpaceX =20;
1310062     SpaceY = 15;
1320063
1330064     FamilyIndexes = findcells(THERING,<span class="string">'FamName'</span>,THERING{index}.FamName);
1340065     KidNum = find(FamilyIndexes == index);
1350066     h0 = figure(<span class="string">'Color'</span>, [0.8 0.8 0.8], <span class="keyword">...</span>
1360067         <span class="string">'PaperPosition'</span>,[18 180 576 432], <span class="string">'Units'</span>,<span class="string">'points'</span>, <span class="string">'Position'</span>,[30 30 600 200], <span class="keyword">...</span>
1370068         <span class="string">'ToolBar'</span>,<span class="string">'none'</span>,<span class="string">'MenuBar'</span>,<span class="string">'none'</span>,<span class="string">'NumberTitle'</span>,<span class="string">'off'</span>,<span class="string">'Visible'</span>,<span class="string">'off'</span>,<span class="keyword">...</span>
1380069         <span class="string">'Name'</span>,[<span class="string">'Lattice Position: '</span>,int2str(index),<span class="string">'      Elemenet # '</span>,int2str(KidNum),<span class="keyword">...</span>
1390070             <span class="string">'  Element Family: '</span>,THERING{index}.FamName]);
1400071
1410072     Handles = cell(1,NumFields);
1420073     TextHandles = zeros(1,NumFields);
1430074
1440075     <span class="comment">% Create editable text controls for each field</span>
1450076     <span class="comment">% If a field is an MxN  matrix (Multipole coefficients)</span>
1460077     <span class="comment">% create MxN text controls for each element of the matrix</span>
1470078
1480079     LastPos = 0;
1490080     
1500081     <span class="keyword">for</span> i = 1:NumFields
1510082         
1520083         FieldData = getfield(THERING{index},Names{NumFields-i+1});
1530084         <span class="keyword">if</span> ~isempty(FieldData)
1540085             [M,N] = size(FieldData);
1550086             Name = Names{NumFields-i+1};
1560087             UD.FieldName = Name;
1570088             
1580089             LastPos = LastPos + SpaceY  + (M-1)*EditBoxHeight;
1590090             
1600091             <span class="comment">% One Static Text control per field</span>
1610092             TextHandles(i) = uicontrol(<span class="string">'Parent'</span>,h0, <span class="string">'Units'</span>,<span class="string">'points'</span>, <span class="keyword">...</span>
1620093                 <span class="string">'BackgroundColor'</span>,[0.8 0.8 0.8], <span class="keyword">...</span>
1630094                 <span class="string">'FontSize'</span>,8, <span class="keyword">...</span>
1640095                 <span class="string">'FontSize'</span>,8 , <span class="keyword">...</span>
1650096                 <span class="string">'ListboxTop'</span>,0, <span class="keyword">...</span>
1660097                 <span class="string">'Position'</span>,[SpaceX  LastPos  NameBoxWidth  NameBoxHeight], <span class="keyword">...</span>
1670098                 <span class="string">'String'</span>,Name, <span class="keyword">...</span>
1680099                 <span class="string">'HorizontalAlignment'</span>,<span class="string">'right'</span>, <span class="keyword">...</span>
1690100                 <span class="string">'Style'</span>,<span class="string">'text'</span>, <span class="keyword">...</span>
1700101                 <span class="string">'Tag'</span>,<span class="string">'StaticText1'</span>);
1710102             
1720103             
1730104             <span class="keyword">if</span> isnumeric(FieldData)
1740105                 <span class="keyword">for</span> m = 1:M
1750106                     UD.M = m;
1760107                     <span class="keyword">for</span> n = 1:N
1770108                         UD.N = n;
1780109                         EditHandles{i}(m,n)=uicontrol(<span class="string">'Parent'</span>,h0, <span class="string">'Units'</span>,<span class="string">'points'</span>, <span class="keyword">...</span>
1790110                             <span class="string">'BackgroundColor'</span>,[1 1 1], <span class="string">'FontSize'</span>,8 , <span class="keyword">...</span>
1800111                             <span class="string">'Position'</span>,[2*SpaceX+NameBoxWidth+(n-1)*EditBoxWidth2 ,  LastPos-(m-1)*EditBoxHeight,  EditBoxWidth2, EditBoxHeight], <span class="keyword">...</span>
1810112                             <span class="string">'Style'</span>,<span class="string">'edit'</span>, <span class="keyword">...</span>
1820113                             <span class="string">'String'</span>,sprintf(<span class="string">'%.6f'</span>,FieldData(m,n)),<span class="string">'HorizontalAlignment'</span>,<span class="string">'right'</span>, <span class="keyword">...</span><span class="comment">      </span>
1830114                             <span class="string">'UserData'</span>,UD,<span class="keyword">...</span>
1840115                             <span class="string">'Callback'</span>,<span class="string">'intelem sync'</span>, <span class="keyword">...</span>
1850116                             <span class="string">'Tag'</span>,<span class="string">'EditText1'</span>);
1860117                     <span class="keyword">end</span>
1870118                 <span class="keyword">end</span> 
1880119             <span class="keyword">elseif</span> ischar(FieldData)
1890120                 UD.M = 1;
1900121                 UD.N = 1;
1910122                 EditHandles{i}=uicontrol(<span class="string">'Parent'</span>,h0,<span class="string">'Units'</span>,<span class="string">'points'</span>, <span class="keyword">...</span>
1920123                     <span class="string">'BackgroundColor'</span>,[1 1 1],<span class="string">'FontSize'</span>,8 , <span class="keyword">...</span>
1930124                     <span class="string">'Position'</span>,[2*SpaceX+NameBoxWidth LastPos  100 EditBoxHeight],<span class="string">'Style'</span>,<span class="string">'edit'</span>, <span class="keyword">...</span>
1940125                     <span class="string">'String'</span>,FieldData, <span class="string">'HorizontalAlignment'</span>,<span class="string">'left'</span>, <span class="keyword">...</span>
1950126                     <span class="string">'UserData'</span>,UD, <span class="keyword">...</span>
1960127                     <span class="string">'Callback'</span>,<span class="string">'intelem sync'</span>, <span class="keyword">...</span>
1970128                     <span class="string">'Tag'</span>,<span class="string">'EditText1'</span>);
1980129             <span class="keyword">end</span>
1990130         <span class="keyword">end</span>
2000131     <span class="keyword">end</span>
2010132
2020133     H = get(h0,<span class="string">'Position'</span>);
2030134     H(4) = LastPos+40;
2040135     set(h0,<span class="string">'Position'</span>,H);
2050136     set(h0,<span class="string">'HandleVisibility'</span>,<span class="string">'off'</span>,<span class="string">'Visible'</span>,<span class="string">'on'</span>);
2060137
2070138 <span class="keyword">elseif</span> ischar(varargin{1})
2080139
2090140     <span class="keyword">switch</span> varargin{1}
2100141     <span class="keyword">case</span> <span class="string">'sync'</span>
2110142         UD = get(gcbo,<span class="string">'UserData'</span>);
2120143         OldValue = getfield(THERING{UD.LatticeIndex},UD.FieldName);
2130144         <span class="keyword">if</span> ischar(OldValue)
2140145             THERING{UD.LatticeIndex}=setfield(THERING{UD.LatticeIndex},UD.FieldName,get(gcbo,<span class="string">'String'</span>));
2150146         <span class="keyword">elseif</span> isnumeric(OldValue)
2160147             st = get(gcbo,<span class="string">'String'</span>);
2170148             NewValue = sscanf(st,<span class="string">'%f'</span>);
2180149             THERING{UD.LatticeIndex}=setfield(THERING{UD.LatticeIndex},UD.FieldName,{UD.M,UD.N},NewValue);
2190150         <span class="keyword">end</span>
2200151
2210152     <span class="keyword">end</span>
2220153 <span class="keyword">end</span></pre></div>
223<hr><address>Generated on Mon 21-May-2007 15:26:45 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
224</body>
225</html>
Note: See TracBrowser for help on using the repository browser.