source: MML/trunk/at/doc_html/at/atdemos/atslider.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: 12.9 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 atslider</title>
6  <meta name="keywords" content="atslider">
7  <meta name="description" content="ATSLIDER is an example of a GUI control of multiple parameters in THERING">
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">atdemos</a> &gt; atslider.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/atdemos&nbsp;<img alt=">" border="0" src="../../right.png"></a></td></tr></table>-->
19
20<h1>atslider
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>ATSLIDER is an example of a GUI control of multiple parameters in THERING</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 fig = atslider(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">ATSLIDER is an example of a GUI control of multiple parameters in THERING
31 by mapping from one-dimensional control parameter space.
32 The value of the control parameter is set
33 with a slider or typed in a text window. When it is modified
34 each of the controlled variables is modified accordingly
35
36 HANDLE = ATSLIDER(KnobData,KnobName)
37     creates a new knob figure identified with KnobName
38    with  a slider and editable text. The initial value is set to 0
39 
40  KnobData is MATLAB structure arrray where each element corresponds to
41       one controlled paramater in THERING and controls what gets modified
42       in the ring when the slider value changes
43         
44       Position             Index of an element to be modified in THERING
45         FieldName       Name of the field in the element data structure
46                       whos value will bi modified
47         M,N             When a field is an array M,N index an element (PolynomA)
48                       When a field is a scalar set M=N=1
49         Weight          Mapping coefficient between slider position and controlled value
50
51    HANDLE = ATSLIDER(KnobData,KnobName,COMMAND)
52            evaluates COMMAND in MATLAB base workspace
53        for example try COMMAND = 'plotbeta'  for dynamically updating betafunctions
54
55 ATSLIDER(action) with proper 'action' stringis is recursively called
56 from inside the ATSLIDER function to evaluate callbacks
57        'set'
58        'reset'</pre></div>
59
60<!-- crossreference -->
61<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
62This function calls:
63<ul style="list-style-image:url(../../matlabicon.gif)">
64</ul>
65This function is called by:
66<ul style="list-style-image:url(../../matlabicon.gif)">
67<li><a href="demoknob.html" class="code" title="">demoknob</a>  DEMOKNOB illustrates the use of MATLAB GUI controls with AT</li></ul>
68<!-- crossreference -->
69
70
71<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
72<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function fig = atslider(varargin)</a>
730002 <span class="comment">%ATSLIDER is an example of a GUI control of multiple parameters in THERING</span>
740003 <span class="comment">% by mapping from one-dimensional control parameter space.</span>
750004 <span class="comment">% The value of the control parameter is set</span>
760005 <span class="comment">% with a slider or typed in a text window. When it is modified</span>
770006 <span class="comment">% each of the controlled variables is modified accordingly</span>
780007 <span class="comment">%</span>
790008 <span class="comment">% HANDLE = ATSLIDER(KnobData,KnobName)</span>
800009 <span class="comment">%     creates a new knob figure identified with KnobName</span>
810010 <span class="comment">%    with  a slider and editable text. The initial value is set to 0</span>
820011 <span class="comment">%</span>
830012 <span class="comment">%  KnobData is MATLAB structure arrray where each element corresponds to</span>
840013 <span class="comment">%       one controlled paramater in THERING and controls what gets modified</span>
850014 <span class="comment">%       in the ring when the slider value changes</span>
860015 <span class="comment">%</span>
870016 <span class="comment">%       Position             Index of an element to be modified in THERING</span>
880017 <span class="comment">%         FieldName       Name of the field in the element data structure</span>
890018 <span class="comment">%                       whos value will bi modified</span>
900019 <span class="comment">%         M,N             When a field is an array M,N index an element (PolynomA)</span>
910020 <span class="comment">%                       When a field is a scalar set M=N=1</span>
920021 <span class="comment">%         Weight          Mapping coefficient between slider position and controlled value</span>
930022 <span class="comment">%</span>
940023 <span class="comment">%    HANDLE = ATSLIDER(KnobData,KnobName,COMMAND)</span>
950024 <span class="comment">%            evaluates COMMAND in MATLAB base workspace</span>
960025 <span class="comment">%        for example try COMMAND = 'plotbeta'  for dynamically updating betafunctions</span>
970026 <span class="comment">%</span>
980027 <span class="comment">% ATSLIDER(action) with proper 'action' stringis is recursively called</span>
990028 <span class="comment">% from inside the ATSLIDER function to evaluate callbacks</span>
1000029 <span class="comment">%        'set'</span>
1010030 <span class="comment">%        'reset'</span>
1020031
1030032 <span class="keyword">global</span> THERING
1040033
1050034 <span class="keyword">if</span> nargin &gt;1 <span class="comment">% initial call</span>
1060035     
1070036 
1080037
1090038 KnobData = varargin{1};
1100039 KnobName = varargin{2};
1110040
1120041 <span class="comment">% make a copy of original values of all controlled parametes</span>
1130042 NumVar = length(KnobData);
1140043 I = [KnobData.Position];
1150044 F = [KnobData.FieldName];
1160045 M = [KnobData.M];
1170046 N = [KnobData.N];
1180047 W = [KnobData.Weight];
1190048 <span class="keyword">for</span> i = 1:NumVar
1200049    OriginalValues(i) = getfield(THERING{I(i)},F(i),{M(i),N(i)});
1210050 <span class="keyword">end</span>
1220051
1230052
1240053 h0 = figure(<span class="string">'Color'</span>, [0.8 0.8 0.8], <span class="keyword">...</span>
1250054     <span class="string">'FileName'</span>,<span class="string">'D:\MATLABR11\work\atslider.m'</span>, <span class="keyword">...</span>
1260055    <span class="string">'HandleVisibility'</span>, <span class="string">'Callback'</span> , <span class="keyword">...</span>
1270056     <span class="string">'PaperPosition'</span>,[18 180 576 432], <span class="keyword">...</span>
1280057     <span class="string">'PaperUnits'</span>,<span class="string">'points'</span>, <span class="keyword">...</span>
1290058     <span class="string">'Position'</span>,[520 400 300 140], <span class="keyword">...</span>
1300059     <span class="string">'Tag'</span>,<span class="string">'Fig1'</span>, <span class="keyword">...</span>
1310060     <span class="string">'ToolBar'</span>,<span class="string">'none'</span>);
1320061 <span class="keyword">if</span> nargout &gt; 0
1330062    fig = h0;
1340063 <span class="keyword">end</span>
1350064
1360065 s1 = uicontrol(<span class="string">'Parent'</span>,h0, <span class="keyword">...</span>
1370066     <span class="string">'Units'</span>,<span class="string">'points'</span>, <span class="keyword">...</span>
1380067     <span class="string">'BackgroundColor'</span>,[0.752941176470588 0.752941176470588 0.752941176470588], <span class="keyword">...</span>
1390068     <span class="string">'ListboxTop'</span>,0, <span class="keyword">...</span>
1400069     <span class="string">'Position'</span>,[20 20 100 15], <span class="keyword">...</span>
1410070    <span class="string">'Style'</span>,<span class="string">'slider'</span>, <span class="keyword">...</span>
1420071    <span class="string">'Max'</span>,1, <span class="string">'Min'</span>, -1, <span class="keyword">...</span>
1430072    <span class="string">'Callback'</span>,<span class="string">'atslider set'</span>, <span class="keyword">...</span>
1440073    <span class="string">'Tag'</span>,<span class="string">'Slider1'</span>);
1450074
1460075 e1 = uicontrol(<span class="string">'Parent'</span>,h0, <span class="keyword">...</span>
1470076     <span class="string">'Units'</span>,<span class="string">'points'</span>, <span class="keyword">...</span>
1480077     <span class="string">'BackgroundColor'</span>,[1 1 1], <span class="keyword">...</span>
1490078     <span class="string">'ListboxTop'</span>,0, <span class="keyword">...</span>
1500079     <span class="string">'Position'</span>,[140 20 65 15], <span class="keyword">...</span>
1510080    <span class="string">'Style'</span>,<span class="string">'edit'</span>, <span class="keyword">...</span>
1520081    <span class="string">'Callback'</span>,<span class="string">'atslider set'</span>, <span class="keyword">...</span>
1530082    <span class="string">'Tag'</span>,<span class="string">'EditText1'</span>);
1540083 
1550084
1560085 <span class="keyword">if</span> nargin == 2
1570086     set(h0,<span class="string">'UserData'</span>,{e1 s1 KnobData OriginalValues});
1580087 <span class="keyword">elseif</span> nargin == 3
1590088     set(h0,<span class="string">'UserData'</span>,{e1 s1 KnobData OriginalValues varargin{3}});
1600089 <span class="keyword">end</span>
1610090
1620091
1630092 t1 = uicontrol(<span class="string">'Parent'</span>,h0, <span class="keyword">...</span>
1640093     <span class="string">'Units'</span>,<span class="string">'points'</span>, <span class="keyword">...</span>
1650094     <span class="string">'BackgroundColor'</span>,[0.8 0.8 0.8], <span class="keyword">...</span>
1660095     <span class="string">'FontSize'</span>,12, <span class="keyword">...</span>
1670096     <span class="string">'ListboxTop'</span>,0, <span class="keyword">...</span>
1680097     <span class="string">'Position'</span>,[20 60 165 20], <span class="keyword">...</span>
1690098     <span class="string">'String'</span>,KnobName, <span class="keyword">...</span>
1700099     <span class="string">'Style'</span>,<span class="string">'text'</span>, <span class="keyword">...</span>
1710100     <span class="string">'Tag'</span>,KnobName);
1720101
1730102 <span class="keyword">elseif</span> nargin == 1
1740103    action = varargin{1};
1750104   
1760105
1770106    UD = get(gcbf,<span class="string">'UserData'</span>);
1780107    eh = UD{1};
1790108     sh = UD{2};
1800109     OV = UD{4}; 
1810110     <span class="keyword">if</span>(length(UD)==5)
1820111         COMMAND = UD{5};
1830112         <span class="comment">% quick fix</span>
1840113         COMMAND = strcat(<span class="string">'figure(3);'</span>,COMMAND);
1850114     <span class="keyword">else</span> 
1860115         COMMAND = <span class="string">''</span>;
1870116    <span class="keyword">end</span>
1880117     
1890118
1900119    I = [UD{3}.Position];
1910120     F = [UD{3}.FieldName];
1920121     M = [UD{3}.M];
1930122     N = [UD{3}.N];
1940123     W = [UD{3}.Weight];
1950124
1960125    <span class="keyword">switch</span> lower(action)
1970126    <span class="keyword">case</span> <span class="string">'set'</span>
1980127       whoiscalling = gcbo;
1990128       <span class="comment">%synchronize slider and text</span>
2000129       <span class="keyword">switch</span>(whoiscalling)
2010130       <span class="keyword">case</span> sh
2020131          newvalue = get(sh,<span class="string">'Value'</span>);
2030132          set(eh,<span class="string">'String'</span>,newvalue)
2040133       <span class="keyword">case</span> eh
2050134          newvalue = sscanf(get(eh,<span class="string">'String'</span>),<span class="string">'%f'</span>);
2060135          set(sh,<span class="string">'Value'</span>,newvalue);
2070136       <span class="keyword">end</span>
2080137       
2090138       
2100139       <span class="comment">%update controlled variables in the worksapce</span>
2110140       <span class="keyword">for</span> i = 1:length(OV)
2120141          THERING{I(i)}=setfield(THERING{I(i)},F(i),{M(i),N(i)},OV(i)+newvalue*W(i));
2130142       <span class="keyword">end</span>
2140143        evalin(<span class="string">'base'</span>,COMMAND); 
2150144    <span class="keyword">case</span> <span class="string">'reset'</span>
2160145       <span class="comment">%Do nothing for now</span>
2170146    <span class="keyword">end</span>
2180147   
2190148 <span class="keyword">end</span>
2200149
2210150   
2220151
2230152</pre></div>
224<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>
225</body>
226</html>
Note: See TracBrowser for help on using the repository browser.