source: MML/trunk/applications/doc_html/applications/mmlviewer/mmlviewer.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: 61.3 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 mmlviewer</title>
6  <meta name="keywords" content="mmlviewer">
7  <meta name="description" content="MMLVIEWER M-file for mmlviewer.fig">
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="#">applications</a> &gt; <a href="index.html">mmlviewer</a> &gt; mmlviewer.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 applications/mmlviewer&nbsp;<img alt=">" border="0" src="../../right.png"></a></td></tr></table>-->
19
20<h1>mmlviewer
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>MMLVIEWER M-file for mmlviewer.fig</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 varargout = mmlviewer(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"> MMLVIEWER M-file for mmlviewer.fig
31      MMLVIEWER, by itself, creates a new MMLVIEWER or raises the existing
32      singleton*.
33
34      H = MMLVIEWER returns the handle to a new MMLVIEWER or the handle to
35      the existing singleton*.
36
37      MMLVIEWER('CALLBACK',hObject,eventData,handles,...) calls the local
38      function named CALLBACK in MMLVIEWER.M with the given input arguments.
39
40      MMLVIEWER('Property','Value',...) creates a new MMLVIEWER or raises the
41      existing singleton*.  Starting from the left, property value pairs are
42      applied to the GUI before mmlviewer_OpeningFunction gets called.  An
43      unrecognized property name or invalid value makes property application
44      stop.  All inputs are passed to mmlviewer_OpeningFcn via varargin.
45
46      *See GUI Options on GUIDE's Tools menu.  Choose &quot;GUI allows only one
47      instance to run (singleton)&quot;.
48
49 See also: GUIDE, GUIDATA, GUIHANDLES</pre></div>
50
51<!-- crossreference -->
52<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
53This function calls:
54<ul style="list-style-image:url(../../matlabicon.gif)">
55</ul>
56This function is called by:
57<ul style="list-style-image:url(../../matlabicon.gif)">
58</ul>
59<!-- crossreference -->
60
61<h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
62<ul style="list-style-image:url(../../matlabicon.gif)">
63<li><a href="#_sub1" class="code">function mmlviewer_OpeningFcn(hObject, eventdata, handles, varargin)</a></li><li><a href="#_sub2" class="code">function varargout = mmlviewer_OutputFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub3" class="code">function FileMenu_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub4" class="code">function OpenMenuItem_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub5" class="code">function CloseMenuItem_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub6" class="code">function PrintMenuItem_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub7" class="code">function ListBox1_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub8" class="code">function ListBox2_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub9" class="code">function ListBox3_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub10" class="code">function ListBox4_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub11" class="code">function ListBox5_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub12" class="code">function Graph1_ButtonDown(hObject, eventdata, handles)</a></li><li><a href="#_sub13" class="code">function ListBoxData_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub14" class="code">function CallNextListBox = ListBoxUpdate(handles, Box0, Box1, Data, j, Data0, Fields0)</a></li><li><a href="#_sub15" class="code">function Data = getandplotdata(handles, Family, Field, SubField, DeviceListTotal)</a></li><li><a href="#_sub16" class="code">function plotdatastruct(handles, d, Field)</a></li><li><a href="#_sub17" class="code">function DataText(handles, Data, iGood)</a></li><li><a href="#_sub18" class="code">function ViewAO_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub19" class="code">function ViewAD_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub20" class="code">function ViewProduction_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub21" class="code">function ViewInjection_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub22" class="code">function ViewFile_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub23" class="code">function DataTypeDouble_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub24" class="code">function DataTypeString_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub25" class="code">function PopPlot_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub26" class="code">function PopPlotHoldOn_Callback(hObject, eventdata, handles)</a></li></ul>
64<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
65<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function varargout = mmlviewer(varargin)</a>
660002 <span class="comment">% MMLVIEWER M-file for mmlviewer.fig</span>
670003 <span class="comment">%      MMLVIEWER, by itself, creates a new MMLVIEWER or raises the existing</span>
680004 <span class="comment">%      singleton*.</span>
690005 <span class="comment">%</span>
700006 <span class="comment">%      H = MMLVIEWER returns the handle to a new MMLVIEWER or the handle to</span>
710007 <span class="comment">%      the existing singleton*.</span>
720008 <span class="comment">%</span>
730009 <span class="comment">%      MMLVIEWER('CALLBACK',hObject,eventData,handles,...) calls the local</span>
740010 <span class="comment">%      function named CALLBACK in MMLVIEWER.M with the given input arguments.</span>
750011 <span class="comment">%</span>
760012 <span class="comment">%      MMLVIEWER('Property','Value',...) creates a new MMLVIEWER or raises the</span>
770013 <span class="comment">%      existing singleton*.  Starting from the left, property value pairs are</span>
780014 <span class="comment">%      applied to the GUI before mmlviewer_OpeningFunction gets called.  An</span>
790015 <span class="comment">%      unrecognized property name or invalid value makes property application</span>
800016 <span class="comment">%      stop.  All inputs are passed to mmlviewer_OpeningFcn via varargin.</span>
810017 <span class="comment">%</span>
820018 <span class="comment">%      *See GUI Options on GUIDE's Tools menu.  Choose &quot;GUI allows only one</span>
830019 <span class="comment">%      instance to run (singleton)&quot;.</span>
840020 <span class="comment">%</span>
850021 <span class="comment">% See also: GUIDE, GUIDATA, GUIHANDLES</span>
860022
870023 <span class="comment">% Edit the above text to modify the response to help mmlviewer</span>
880024
890025 <span class="comment">% Last Modified by GUIDE v2.5 01-Nov-2006 11:34:04</span>
900026
910027 <span class="comment">% Begin initialization code - DO NOT EDIT</span>
920028 gui_Singleton = 0;
930029 gui_State = struct(<span class="string">'gui_Name'</span>,       mfilename, <span class="keyword">...</span>
940030     <span class="string">'gui_Singleton'</span>,  gui_Singleton, <span class="keyword">...</span>
950031     <span class="string">'gui_OpeningFcn'</span>, @<a href="#_sub1" class="code" title="subfunction mmlviewer_OpeningFcn(hObject, eventdata, handles, varargin)">mmlviewer_OpeningFcn</a>, <span class="keyword">...</span>
960032     <span class="string">'gui_OutputFcn'</span>,  @<a href="#_sub2" class="code" title="subfunction varargout = mmlviewer_OutputFcn(hObject, eventdata, handles)">mmlviewer_OutputFcn</a>, <span class="keyword">...</span>
970033     <span class="string">'gui_LayoutFcn'</span>,  [] , <span class="keyword">...</span>
980034     <span class="string">'gui_Callback'</span>,   []);
990035 <span class="keyword">if</span> nargin &amp;&amp; ischar(varargin{1})
1000036     gui_State.gui_Callback = str2func(varargin{1});
1010037 <span class="keyword">end</span>
1020038
1030039 <span class="keyword">if</span> nargout
1040040     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
1050041 <span class="keyword">else</span>
1060042     gui_mainfcn(gui_State, varargin{:});
1070043 <span class="keyword">end</span>
1080044 <span class="comment">% End initialization code - DO NOT EDIT</span>
1090045
1100046
1110047 <span class="comment">% --- Executes just before mmlviewer is made visible.</span>
1120048 <a name="_sub1" href="#_subfunctions" class="code">function mmlviewer_OpeningFcn(hObject, eventdata, handles, varargin)</a>
1130049
1140050 <span class="comment">% Choose default command line output for mmlviewer</span>
1150051 handles.output = hObject;
1160052
1170053 <span class="comment">% Update handles structure</span>
1180054 guidata(hObject, handles);
1190055
1200056 <span class="keyword">try</span>
1210057     <span class="keyword">if</span> ~(isepics || istango)
1220058         set(handles.ListBox5, <span class="string">'Visible'</span>, <span class="string">'Off'</span>);
1230059     <span class="keyword">else</span>
1240060         set(handles.ListBox5, <span class="string">'Value'</span>, 1);
1250061         set(handles.ListBox5, <span class="string">'String'</span>, <span class="string">''</span>);
1260062     <span class="keyword">end</span>
1270063     
1280064     set(handles.axes1,<span class="string">'XTickLabel'</span>,<span class="string">''</span>);
1290065     set(handles.axes1,<span class="string">'YTickLabel'</span>,<span class="string">''</span>);
1300066     
1310067     <span class="comment">% Fill the list boxes</span>
1320068     <a href="#_sub18" class="code" title="subfunction ViewAO_Callback(hObject, eventdata, handles)">ViewAO_Callback</a>(hObject, eventdata, handles);
1330069     <span class="comment">%ListBox1_Callback(hObject, eventdata, handles);</span>
1340070
1350071
1360072     <span class="comment">% Make Monitor the default, if possible</span>
1370073     Fields = get(handles.ListBox2, <span class="string">'String'</span>);
1380074     <span class="keyword">if</span> length(Fields) &gt;= 1
1390075         k = find(strcmpi(Fields, <span class="string">'Monitor'</span>));
1400076         <span class="keyword">if</span> ~isempty(k)
1410077             set(handles.ListBox2, <span class="string">'Value'</span>, k);
1420078             <a href="#_sub8" class="code" title="subfunction ListBox2_Callback(hObject, eventdata, handles)">ListBox2_Callback</a>(hObject, eventdata, handles);
1430079         <span class="keyword">end</span>
1440080     <span class="keyword">end</span>
1450081
1460082     <span class="comment">% Make TangoNames the default, if possible</span>
1470083     Fields = get(handles.ListBox3, <span class="string">'String'</span>);
1480084     <span class="keyword">if</span> length(Fields) &gt;= 1
1490085         k = find(strcmpi(Fields, <span class="string">'TangoNames'</span>));
1500086         <span class="keyword">if</span> isempty(k)
1510087             k = find(strcmpi(Fields, <span class="string">'TangoNames'</span>));
1520088         <span class="keyword">end</span>   
1530089         <span class="keyword">if</span> ~isempty(k)
1540090             set(handles.ListBox3, <span class="string">'Value'</span>, k);
1550091             <a href="#_sub9" class="code" title="subfunction ListBox3_Callback(hObject, eventdata, handles)">ListBox3_Callback</a>(hObject, eventdata, handles);
1560092         <span class="keyword">end</span>
1570093     <span class="keyword">end</span>
1580094
1590095 <span class="keyword">catch</span>
1600096 <span class="keyword">end</span>
1610097
1620098
1630099 <span class="comment">% UIWAIT makes mmlviewer wait for user response (see UIRESUME)</span>
1640100 <span class="comment">% uiwait(handles.figure1);</span>
1650101
1660102
1670103
1680104 <span class="comment">% --- Outputs from this function are returned to the command line.</span>
1690105 <a name="_sub2" href="#_subfunctions" class="code">function varargout = mmlviewer_OutputFcn(hObject, eventdata, handles)</a>
1700106
1710107 <span class="comment">% Get default command line output from handles structure</span>
1720108 varargout{1} = handles.output;
1730109
1740110
1750111 <span class="comment">% --------------------------------------------------------------------</span>
1760112 <a name="_sub3" href="#_subfunctions" class="code">function FileMenu_Callback(hObject, eventdata, handles)</a>
1770113
1780114
1790115
1800116 <span class="comment">% --------------------------------------------------------------------</span>
1810117 <a name="_sub4" href="#_subfunctions" class="code">function OpenMenuItem_Callback(hObject, eventdata, handles)</a>
1820118 [file, Directory] = uigetfile(<span class="string">'*.fig'</span>);
1830119 <span class="keyword">if</span> ~isequal(file, 0)
1840120     open([Directory file]);
1850121 <span class="keyword">end</span>
1860122
1870123
1880124
1890125 <span class="comment">% --------------------------------------------------------------------</span>
1900126 <a name="_sub5" href="#_subfunctions" class="code">function CloseMenuItem_Callback(hObject, eventdata, handles)</a>
1910127 <span class="comment">% selection = questdlg(['Close ' get(handles.figure1,'Name') '?'],...</span>
1920128 <span class="comment">%                      ['Close ' get(handles.figure1,'Name') '...'],...</span>
1930129 <span class="comment">%                      'Yes','No','Yes');</span>
1940130 <span class="comment">% if strcmp(selection,'No')</span>
1950131 <span class="comment">%     return;</span>
1960132 <span class="comment">% end</span>
1970133 delete(handles.figure1)
1980134
1990135
2000136
2010137 <span class="comment">% --------------------------------------------------------------------</span>
2020138 <a name="_sub6" href="#_subfunctions" class="code">function PrintMenuItem_Callback(hObject, eventdata, handles)</a>
2030139 printdlg(handles.figure1)
2040140
2050141
2060142
2070143
2080144 <span class="comment">% --- Executes on selection change in ListBox1.</span>
2090145 <a name="_sub7" href="#_subfunctions" class="code">function ListBox1_Callback(hObject, eventdata, handles)</a>
2100146
2110147 RootStruct = getappdata(handles.figure1, <span class="string">'RootStruct'</span>);
2120148 Fields = fieldnames(RootStruct);
2130149 j = get(handles.ListBox1, <span class="string">'Value'</span>);
2140150
2150151 Data = RootStruct;
2160152
2170153 Box0 = handles.ListBox1;
2180154 Box1 = handles.ListBox2;
2190155 Box2 = handles.ListBox3;
2200156
2210157 CallNextListBox = <a href="#_sub14" class="code" title="subfunction CallNextListBox = ListBoxUpdate(handles, Box0, Box1, Data, j, Data0, Fields0)">ListBoxUpdate</a>(handles, Box0, Box1, Data, j);
2220158
2230159 <span class="keyword">if</span> CallNextListBox
2240160     <a href="#_sub8" class="code" title="subfunction ListBox2_Callback(hObject, eventdata, handles)">ListBox2_Callback</a>(hObject, eventdata, handles);
2250161 <span class="keyword">else</span>
2260162     set(handles.ListBox3, <span class="string">'Value'</span>, 1);
2270163     set(handles.ListBox3, <span class="string">'String'</span>, <span class="string">''</span>);
2280164     set(handles.ListBox4, <span class="string">'Value'</span>, 1);
2290165     set(handles.ListBox4, <span class="string">'String'</span>, <span class="string">''</span>);
2300166 <span class="keyword">end</span>
2310167
2320168
2330169 <span class="comment">% --- Executes on selection change in ListBox2.</span>
2340170 <a name="_sub8" href="#_subfunctions" class="code">function ListBox2_Callback(hObject, eventdata, handles)</a>
2350171
2360172 RootStruct = getappdata(handles.figure1, <span class="string">'RootStruct'</span>);
2370173 Fields = fieldnames(RootStruct);
2380174 i = get(handles.ListBox1, <span class="string">'Value'</span>);
2390175 j = get(handles.ListBox2, <span class="string">'Value'</span>);
2400176 Data = RootStruct.(Fields{i});
2410177
2420178 Box0 = handles.ListBox2;
2430179 Box1 = handles.ListBox3;
2440180 Box2 = handles.ListBox4;
2450181
2460182 CallNextListBox = <a href="#_sub14" class="code" title="subfunction CallNextListBox = ListBoxUpdate(handles, Box0, Box1, Data, j, Data0, Fields0)">ListBoxUpdate</a>(handles, Box0, Box1, Data, j, RootStruct, Fields{i});
2470183
2480184 <span class="keyword">if</span> CallNextListBox
2490185     <a href="#_sub9" class="code" title="subfunction ListBox3_Callback(hObject, eventdata, handles)">ListBox3_Callback</a>(hObject, eventdata, handles);
2500186 <span class="keyword">else</span>
2510187     set(handles.ListBox4, <span class="string">'Value'</span>, 1);
2520188     set(handles.ListBox4, <span class="string">'String'</span>, <span class="string">''</span>);
2530189 <span class="keyword">end</span>
2540190
2550191         
2560192 <span class="comment">% --- Executes on selection change in ListBox3.</span>
2570193 <a name="_sub9" href="#_subfunctions" class="code">function ListBox3_Callback(hObject, eventdata, handles)</a>
2580194
2590195 RootStruct = getappdata(handles.figure1, <span class="string">'RootStruct'</span>);
2600196 Fields1 = fieldnames(RootStruct);
2610197 Fields2 = get(handles.ListBox2, <span class="string">'String'</span>);
2620198 Fields3 = get(handles.ListBox3, <span class="string">'String'</span>);
2630199
2640200 i = get(handles.ListBox1, <span class="string">'Value'</span>);
2650201 j = get(handles.ListBox2, <span class="string">'Value'</span>);
2660202 k = get(handles.ListBox3, <span class="string">'Value'</span>);
2670203
2680204 Data = RootStruct.(Fields1{i}).(Fields2{j});
2690205
2700206 Box0 = handles.ListBox3;
2710207 Box1 = handles.ListBox4;
2720208 Box2 = handles.ListBox5;
2730209
2740210 CallNextListBox = <a href="#_sub14" class="code" title="subfunction CallNextListBox = ListBoxUpdate(handles, Box0, Box1, Data, j, Data0, Fields0)">ListBoxUpdate</a>(handles, Box0, Box1, Data, k, RootStruct.(Fields1{i}), Fields2{j});
2750211
2760212 <span class="keyword">if</span> CallNextListBox
2770213     <a href="#_sub10" class="code" title="subfunction ListBox4_Callback(hObject, eventdata, handles)">ListBox4_Callback</a>(hObject, eventdata, handles);
2780214 <span class="keyword">end</span>
2790215
2800216
2810217 <span class="comment">% --- Executes on selection change in ListBox4.</span>
2820218 <a name="_sub10" href="#_subfunctions" class="code">function ListBox4_Callback(hObject, eventdata, handles)</a>
2830219
2840220 i = get(handles.ListBox4, <span class="string">'Value'</span>);
2850221 Data = get(handles.ListBoxData, <span class="string">'String'</span>);
2860222 <span class="comment">%DataFields = fieldnames(Data);</span>
2870223
2880224 <span class="keyword">if</span> size(Data, 1) == size(get(handles.ListBox4,<span class="string">'String'</span>),1)
2890225     set(handles.ListBoxData, <span class="string">'Value'</span>, i);
2900226 <span class="keyword">end</span>
2910227
2920228
2930229
2940230 <span class="comment">% --- Executes on selection change in ListBox5.</span>
2950231 <a name="_sub11" href="#_subfunctions" class="code">function ListBox5_Callback(hObject, eventdata, handles)</a>
2960232
2970233 RootStruct = getappdata(handles.figure1, <span class="string">'RootStruct'</span>);
2980234 Fields1 = fieldnames(RootStruct);
2990235 Fields2 = get(handles.ListBox2, <span class="string">'String'</span>);
3000236
3010237 i = get(handles.ListBox1, <span class="string">'Value'</span>);
3020238 j = get(handles.ListBox2, <span class="string">'Value'</span>);
3030239
3040240
3050241 EPICSFields = get(handles.ListBox5, <span class="string">'UserData'</span>);
3060242 iEPICS = get(handles.ListBox5, <span class="string">'Value'</span>);
3070243 setappdata(handles.figure1, <span class="string">'iEPICS'</span>, iEPICS);
3080244 <span class="keyword">if</span> ~isempty(EPICSFields)
3090245     DotField = EPICSFields{iEPICS};
3100246 <span class="keyword">else</span>
3110247     DotField = <span class="string">''</span>;
3120248 <span class="keyword">end</span>
3130249
3140250
3150251 <span class="comment">% Get data</span>
3160252 <span class="keyword">try</span>
3170253     Data = <a href="#_sub15" class="code" title="subfunction Data = getandplotdata(handles, Family, Field, SubField, DeviceListTotal)">getandplotdata</a>(handles, Fields1{i}, Fields2{j}, DotField, family2dev(Fields1{i}));
3180254 <span class="keyword">catch</span>
3190255     fprintf(<span class="string">'   Could not get data for the %s family.\n'</span>, Fields1{i});
3200256     <span class="keyword">return</span>;
3210257 <span class="keyword">end</span>
3220258
3230259
3240260
3250261 <span class="comment">% --------------------------------------------------------------------</span>
3260262 <a name="_sub12" href="#_subfunctions" class="code">function Graph1_ButtonDown(hObject, eventdata, handles)</a>
3270263 CurrentPoint = get(handles.axes1, <span class="string">'CurrentPoint'</span>);
3280264 SposMouse = CurrentPoint(1,1);
3290265 SposData  = getappdata(handles.figure1, <span class="string">'SPosX'</span>);
3300266
3310267 MeritFcn = abs(SposData-SposMouse);
3320268 i = find(min(MeritFcn) == MeritFcn);
3330269 <span class="keyword">if</span> ~isempty(i)
3340270     set(handles.ListBoxData, <span class="string">'value'</span>, i(1));
3350271     <a href="#_sub13" class="code" title="subfunction ListBoxData_Callback(hObject, eventdata, handles)">ListBoxData_Callback</a>(hObject, eventdata, handles);
3360272 <span class="keyword">end</span>
3370273
3380274
3390275
3400276 <span class="comment">% --- Executes on selection change in ListBoxData.</span>
3410277 <a name="_sub13" href="#_subfunctions" class="code">function ListBoxData_Callback(hObject, eventdata, handles)</a>
3420278
3430279 i = get(handles.ListBoxData, <span class="string">'Value'</span>);
3440280 Data = get(handles.ListBox4, <span class="string">'String'</span>);
3450281
3460282 <span class="keyword">if</span> isempty(Data)
3470283     <span class="comment">% Try list box 3</span>
3480284     Data = get(handles.ListBox3, <span class="string">'String'</span>);
3490285     <span class="keyword">if</span> size(Data, 1) == size(get(handles.ListBoxData,<span class="string">'String'</span>),1)
3500286         set(handles.ListBox3, <span class="string">'Value'</span>, i);
3510287     <span class="keyword">end</span>
3520288 <span class="keyword">else</span>
3530289     <span class="keyword">if</span> size(Data, 1) == size(get(handles.ListBoxData,<span class="string">'String'</span>),1)
3540290         set(handles.ListBox4, <span class="string">'Value'</span>, i);
3550291     <span class="keyword">end</span>
3560292 <span class="keyword">end</span>
3570293
3580294
3590295
3600296 <a name="_sub14" href="#_subfunctions" class="code">function CallNextListBox = ListBoxUpdate(handles, Box0, Box1, Data, j, Data0, Fields0)</a>
3610297
3620298 set(handles.ListBox5, <span class="string">'Value'</span>, 1);
3630299 set(handles.ListBox5, <span class="string">'String'</span>, <span class="string">''</span>);
3640300
3650301 CallNextListBox = 0;
3660302
3670303 <span class="keyword">if</span> isstruct(Data)
3680304     DataFields = fieldnames(Data);
3690305     DataField = DataFields{j};
3700306     
3710307     SubData = Data.(DataField);
3720308
3730309     <span class="comment">% Special cases</span>
3740310     <span class="keyword">if</span> strcmpi(DataField, <span class="string">'TimeStamp'</span>)
3750311         set(Box1, <span class="string">'Value'</span>, 1);
3760312         set(Box1, <span class="string">'String'</span>, datestr(Data.(DataField),31));
3770313         <span class="keyword">return</span>;
3780314     <span class="keyword">elseif</span> strcmpi(DataField, <span class="string">'DataTime'</span>)
3790315         set(Box1, <span class="string">'Value'</span>, 1);
3800316         set(Box1, <span class="string">'String'</span>, datestr(Data.(DataField),31));
3810317         
3820318         <span class="comment">% Look to match it with ListBoxData</span>
3830319         <span class="keyword">if</span> size(get(Box1, <span class="string">'String'</span>),1) == size(get(handles.ListBoxData, <span class="string">'String'</span>),1)
3840320             set(Box1, <span class="string">'Value'</span>, get(handles.ListBoxData,<span class="string">'Value'</span>));
3850321         <span class="keyword">end</span>
3860322         <span class="keyword">return</span>;
3870323     <span class="keyword">elseif</span> strcmpi(DataField, <span class="string">'t'</span>) || strcmpi(DataField, <span class="string">'tout'</span>)
3880324         set(Box1, <span class="string">'Value'</span>, 1);
3890325         set(Box1, <span class="string">'String'</span>, num2str(Data.(DataField)));
3900326         <span class="keyword">return</span>;
3910327     <span class="keyword">elseif</span> any(strcmp(DataField, {<span class="string">'Status'</span>,<span class="string">'DeviceList'</span>,<span class="string">'ElementList'</span>,<span class="string">'Position'</span>}))
3920328         set(Box1, <span class="string">'Value'</span>, 1);
3930329         set(Box1, <span class="string">'String'</span>, num2str(Data.(DataField)));
3940330         
3950331         <span class="comment">% Look to match it with ListBoxData</span>
3960332         <span class="keyword">if</span> size(get(Box1, <span class="string">'String'</span>),1) == size(get(handles.ListBoxData, <span class="string">'String'</span>),1)
3970333             set(Box1, <span class="string">'Value'</span>, get(handles.ListBoxData,<span class="string">'Value'</span>));
3980334         <span class="keyword">end</span>
3990335         <span class="keyword">return</span>;
4000336     <span class="keyword">end</span>
4010337
4020338     <span class="comment">% Get Box1 string of cell array of strings</span>
4030339     <span class="keyword">if</span> isstruct(SubData)
4040340         SubDataField = fieldnames(Data.(DataField));
4050341     <span class="keyword">else</span>
4060342         <span class="keyword">if</span> isnumeric(SubData)
4070343             SubDataField = num2str(SubData);
4080344         <span class="keyword">elseif</span> ischar(SubData)
4090345             SubDataField = SubData;
4100346         <span class="keyword">elseif</span> isa(Data,<span class="string">'function_handle'</span>)
4110347             SubDataField = func2str(SubData);
4120348         <span class="keyword">elseif</span> iscell(SubData)
4130349             <span class="keyword">if</span> size(SubData,2) == 1
4140350                 SubDataField = SubData(:);
4150351             <span class="keyword">else</span>
4160352                 SubDataField = <span class="string">'Too big to Display'</span>;
4170353             <span class="keyword">end</span>
4180354         <span class="keyword">else</span>
4190355             SubDataField = <span class="string">''</span>;
4200356         <span class="keyword">end</span>
4210357     <span class="keyword">end</span>
4220358     
4230359     <span class="comment">% If the Value of Box1 is getting changed, test for a default</span>
4240360     <span class="keyword">if</span> get(Box1, <span class="string">'Value'</span>) &gt; size(SubDataField,1)
4250361         set(Box1, <span class="string">'Value'</span>, 1);
4260362         
4270363         <span class="comment">% Make Monitor the default, if possible</span>
4280364         set(Box1, <span class="string">'Value'</span>, 1);
4290365         <span class="keyword">if</span> length(SubDataField) &gt;= 1
4300366             k = find(strcmpi(SubDataField, <span class="string">'Monitor'</span>));
4310367             <span class="keyword">if</span> ~isempty(k)
4320368                 set(Box1, <span class="string">'Value'</span>, k);
4330369             <span class="keyword">end</span>
4340370         <span class="keyword">end</span>
4350371
4360372         <span class="comment">% Make TangoNames the default, if possible</span>
4370373         <span class="keyword">if</span> length(SubDataField) &gt;= 1
4380374             k = find(strcmpi(SubDataField, <span class="string">'TangoNames'</span>));
4390375             <span class="keyword">if</span> ~isempty(k)
4400376                 set(Box1, <span class="string">'Value'</span>, k);
4410377             <span class="keyword">end</span>
4420378         <span class="keyword">end</span>
4430379     <span class="keyword">end</span>
4440380     
4450381     <span class="comment">% Set Box1</span>
4460382     set(Box1, <span class="string">'String'</span>, SubDataField);
4470383     
4480384     <span class="comment">% If appropriate, plot the data</span>
4490385     <span class="keyword">if</span> strcmp(DataField, <span class="string">'TangoNames'</span>)
4500386         <span class="comment">% Change the Value of Box1 to equal ListBoxData</span>
4510387         <span class="keyword">if</span> size(get(Box1, <span class="string">'String'</span>),1) == size(get(handles.ListBoxData, <span class="string">'String'</span>),1)
4520388             set(Box1, <span class="string">'Value'</span>, get(handles.ListBoxData,<span class="string">'Value'</span>));
4530389         <span class="keyword">end</span>
4540390         
4550391         <span class="comment">% Plot the channels - for control system fields add sub-data fields</span>
4560392         DotField = <span class="string">''</span>;
4570393         <span class="keyword">if</span> isfield(Data, <span class="string">'Mode'</span>)
4580394             Mode = Data.Mode;
4590395         <span class="keyword">else</span>
4600396             Mode = <span class="string">'Online'</span>;
4610397         <span class="keyword">end</span>
4620398         <span class="keyword">if</span> isepics &amp;&amp; strcmpi(Mode, <span class="string">'Online'</span>)
4630399             <span class="comment">% I should base this list on the type of channel</span>
4640400             EPICSFields = {
4650401                 <span class="string">'VAL'</span>; <span class="string">'SCAN'</span>;
4660402                 <span class="string">'HOPR'</span>; <span class="string">'LOPR'</span>; <span class="string">'PREC'</span>; <span class="string">'DESC'</span>;
4670403                 <span class="string">'HIHI'</span>;<span class="string">'LOLO'</span><span class="string">'HIGH'</span>; <span class="string">'LOW'</span>; <span class="string">'HHSV'</span>; <span class="string">'LLSV'</span>; <span class="string">'HSV'</span>; <span class="string">'LSV'</span>; <span class="string">'HYST'</span>;
4680404                 <span class="string">'RVAL'</span>; <span class="string">'ROFF'</span>; <span class="string">'ASLO'</span>; <span class="string">'AOFF'</span>; <span class="string">'LINR'</span>; <span class="string">'ESLO'</span>; <span class="string">'EOFF'</span>; <span class="string">'EGUL'</span>; <span class="string">'EGUF'</span>;
4690405                 <span class="string">'MDEL'</span>; <span class="string">'ADEL'</span>;
4700406                 <span class="string">'STAT'</span>; <span class="string">'SEVR'</span>; <span class="string">'ACKS'</span>; <span class="string">'UDF'</span>;
4710407                 <span class="string">'PREC'</span>; <span class="string">'ORAW'</span>; <span class="string">'INIT'</span>;
4720408                 <span class="string">'DRVH'</span>; <span class="string">'DRVL'</span>; <span class="string">'RBV'</span>; <span class="string">'EGU'</span>; };
4730409             set(handles.ListBox5, <span class="string">'String'</span>,   EPICSFields);
4740410             set(handles.ListBox5, <span class="string">'UserData'</span>, EPICSFields);
4750411             <span class="comment">%iEPICS = get(handles.ListBox5, 'Value');</span>
4760412             iEPICS = getappdata(handles.figure1, <span class="string">'iEPICS'</span>);
4770413             <span class="keyword">if</span> isempty(iEPICS)
4780414                 iEPICS = 1;
4790415             <span class="keyword">end</span>
4800416             set(handles.ListBox5, <span class="string">'Value'</span>, iEPICS);
4810417             <span class="keyword">if</span> ~isempty(EPICSFields)
4820418                 DotField = EPICSFields{iEPICS};
4830419             <span class="keyword">end</span>
4840420             set(handles.ListBox5, <span class="string">'Visible'</span>, <span class="string">'On'</span>);
4850421         <span class="keyword">else</span>
4860422             set(handles.ListBox5, <span class="string">'Visible'</span>, <span class="string">'Off'</span>);
4870423         <span class="keyword">end</span>
4880424
4890425         <span class="keyword">if</span> isempty(DotField) || strcmpi(DotField, <span class="string">'VAL'</span>)
4900426             <span class="comment">% Get data all the data in the family</span>
4910427             <span class="keyword">try</span>
4920428                 DataNew = <a href="#_sub15" class="code" title="subfunction Data = getandplotdata(handles, Family, Field, SubField, DeviceListTotal)">getandplotdata</a>(handles, Data0.FamilyName, Fields0, <span class="string">''</span>, Data0.DeviceList);
4930429             <span class="keyword">catch</span>
4940430                 <span class="comment">%fprintf('%s',lasterr);</span>
4950431                 fprintf(<span class="string">'   Problem occurred with family %s.\n'</span>, Data0.FamilyName);
4960432                 <span class="keyword">return</span>
4970433             <span class="keyword">end</span>
4980434         <span class="keyword">else</span>
4990435             <span class="comment">% Get control system fields fields</span>
5000436             <a href="#_sub11" class="code" title="subfunction ListBox5_Callback(hObject, eventdata, handles)">ListBox5_Callback</a>([], [], handles);
5010437         <span class="keyword">end</span>
5020438
5030439     <span class="keyword">elseif</span> isnumeric(SubData) &amp;&amp; strcmpi(DataField, <span class="string">'Data'</span>)
5040440         <a href="#_sub16" class="code" title="subfunction plotdatastruct(handles, d, Field)">plotdatastruct</a>(handles, Data, DataField);
5050441
5060442     <span class="keyword">elseif</span> strcmp(DataField, <span class="string">'SpecialFunctionGet'</span>)
5070443         <span class="comment">% Plot the channels</span>
5080444         Data = <a href="#_sub15" class="code" title="subfunction Data = getandplotdata(handles, Family, Field, SubField, DeviceListTotal)">getandplotdata</a>(handles, Data0.FamilyName, Fields0, <span class="string">''</span>, Data0.DeviceList);
5090445               
5100446     <span class="keyword">elseif</span> isnumeric(SubData)
5110447         
5120448         set(handles.ListBox5, <span class="string">'UserData'</span>, <span class="string">''</span>);
5130449
5140450         <span class="keyword">if</span> isfield(Data,<span class="string">'FamilyName'</span>) &amp;&amp; isfield(Data, <span class="string">'DeviceList'</span>)
5150451             PlotData = Data.(DataField);
5160452             s = getspos(Data.FamilyName, Data.DeviceList);
5170453             <span class="keyword">if</span> size(SubData,1) == length(s) &amp;&amp; size(SubData,2) == 1
5180454                 plot(handles.axes1, s, PlotData, <span class="string">'.-'</span>);
5190455                 xlabel(handles.axes1, <span class="string">'Position [meters]'</span>);
5200456                 YLabelString = sprintf(<span class="string">'%s.%s'</span>, Data.FamilyName, DataField);
5210457                 ylabel(handles.axes1, YLabelString);
5220458
5230459                 L = getfamilydata(<span class="string">'Circumference'</span>);
5240460                 <span class="keyword">if</span> ~isempty(L)
5250461                     a = axis(handles.axes1);
5260462                     axis(handles.axes1, [0 L a(3:4)]);
5270463                 <span class="keyword">end</span>
5280464                 
5290465                 <span class="comment">% Set the callback for mouse clicks on the plot</span>
5300466                 setappdata(handles.figure1, <span class="string">'SPosX'</span>, s);
5310467                 setappdata(handles.figure1, <span class="string">'SPosY'</span>, PlotData);
5320468                 set(handles.axes1, <span class="string">'ButtonDownFcn'</span>, <span class="string">'mmlviewer(''Graph1_ButtonDown'',gcbo,[],guidata(gcbo))'</span>);
5330469                 h = get(handles.axes1, <span class="string">'Children'</span>);
5340470                 <span class="keyword">for</span> i = 1:length(h)
5350471                     set(h(i) ,<span class="string">'ButtonDownFcn'</span>,<span class="string">'mmlviewer(''Graph1_ButtonDown'',gcbo,[],guidata(gcbo))'</span>);
5360472                 <span class="keyword">end</span>
5370473
5380474                 
5390475                 <span class="comment">% Reset DataBox if the new data is a shorter list</span>
5400476                 <span class="keyword">if</span> get(handles.ListBoxData, <span class="string">'Value'</span>) &gt; size(SubData,1)
5410477                     set(handles.ListBoxData, <span class="string">'Value'</span>, 1);
5420478                 <span class="keyword">end</span>
5430479
5440480                 DataMat = [];
5450481                 <span class="keyword">for</span> ii = 1:size(Data.DeviceList,1)
5460482                     DataMat = strvcat(DataMat, sprintf(<span class="string">'%s(%d,%d) = %+.4e'</span>, Data.FamilyName, Data.DeviceList(ii,:), SubData(ii,1)));
5470483                 <span class="keyword">end</span>
5480484                 <span class="keyword">if</span> isempty(get(handles.ListBoxData,<span class="string">'String'</span>))
5490485                     WasEmpty = 1;
5500486                 <span class="keyword">else</span>
5510487                     WasEmpty = 0;
5520488                 <span class="keyword">end</span>
5530489                 set(handles.ListBoxData,<span class="string">'String'</span>, DataMat);
5540490                 <span class="comment">%set(handles.ListBoxData, 'String', num2str(Data));</span>
5550491                 
5560492                 <span class="keyword">if</span> WasEmpty
5570493                     set(handles.ListBoxData, <span class="string">'Value'</span>, get(Box1, <span class="string">'Value'</span>));
5580494                 <span class="keyword">else</span>
5590495                     set(Box1, <span class="string">'Value'</span>, get(handles.ListBoxData, <span class="string">'Value'</span>));
5600496                 <span class="keyword">end</span>
5610497                 set(handles.ListBoxData, <span class="string">'Visible'</span>, <span class="string">'On'</span>);
5620498
5630499                 <a href="#_sub17" class="code" title="subfunction DataText(handles, Data, iGood)">DataText</a>(handles, SubData);
5640500             <span class="keyword">end</span>
5650501         <span class="keyword">end</span>
5660502     <span class="keyword">else</span>
5670503         CallNextListBox = 1;
5680504     <span class="keyword">end</span>
5690505
5700506 <span class="keyword">else</span>
5710507     <span class="comment">% j points to a list</span>
5720508     <span class="comment">% Look to match it with ListBoxData</span>
5730509     <span class="keyword">if</span> size(get(Box0, <span class="string">'String'</span>),1) == size(get(handles.ListBoxData, <span class="string">'String'</span>),1)
5740510         set(handles.ListBoxData, <span class="string">'Value'</span>, get(Box0,<span class="string">'Value'</span>));
5750511     <span class="keyword">end</span>
5760512     
5770513     <span class="comment">% There shouldn't be anything in the next box at this point</span>
5780514     set(Box1, <span class="string">'Value'</span>, 1);
5790515     set(Box1, <span class="string">'String'</span>, <span class="string">''</span>);
5800516 <span class="keyword">end</span>
5810517
5820518
5830519
5840520 <a name="_sub15" href="#_subfunctions" class="code">function Data = getandplotdata(handles, Family, Field, SubField, DeviceListTotal)</a>
5850521
5860522 <span class="keyword">if</span> nargin &lt; 4
5870523     SubField = <span class="string">''</span>;
5880524 <span class="keyword">end</span>
5890525 <span class="keyword">if</span> strcmpi(SubField, <span class="string">'VAL'</span>)
5900526     SubField = <span class="string">''</span>;
5910527 <span class="keyword">end</span>
5920528
5930529 <span class="keyword">if</span> nargin &lt; 5
5940530     DeviceListTotal = family2dev(Family,0);
5950531 <span class="keyword">end</span>
5960532
5970533 <span class="comment">% Get data</span>
5980534 <span class="keyword">try</span>
5990535     <span class="comment">% Good channel device list</span>
6000536     DeviceList = family2dev(Family);
6010537     iGood = findrowindex(DeviceList, DeviceListTotal);
6020538
6030539     <span class="comment">% This only works for scalar data</span>
6040540     Data = NaN * ones(size(DeviceListTotal,1),1);
6050541
6060542     <span class="keyword">if</span> isempty(SubField)
6070543         <span class="comment">% Get by family</span>
6080544         <span class="keyword">if</span> ~isempty(iGood)
6090545             DataGood = getpv(Family, Field, DeviceList);
6100546             Data(iGood,:) = DataGood;
6110547             DataCell = mat2cell(num2str(Data), ones(1,size(Data,1)));
6120548
6130549             <span class="keyword">if</span> strcmpi(get(handles.DataTypeString, <span class="string">'Checked'</span>) , <span class="string">'On'</span>)
6140550                 <span class="comment">% Put strings in the list box</span>
6150551                 DataGoodString = getpv(Family, Field, DeviceList, <span class="string">'String'</span>);
6160552                 DataCell(iGood) = mat2cell(DataGoodString, ones(1,size(DataGoodString,1)));
6170553             <span class="keyword">end</span>
6180554       
6190555         <span class="keyword">end</span>
6200556         [Units, UnitsString] = getunits(Family, Field);
6210557     <span class="keyword">else</span>
6220558         <span class="comment">% Get by [channel.subfield]</span>
6230559         <span class="keyword">if</span> ~isempty(iGood)
6240560             ChanNames = family2channel(Family, Field, DeviceList);
6250561             <span class="comment">%ChanNames = get(handles.ListBox4, 'String');</span>
6260562             ChanNames = strcat(ChanNames, [<span class="string">'.'</span>,SubField]);
6270563
6280564             <span class="comment">% Try 1 channel name first, so the error condition does not take so long</span>
6290565             <span class="keyword">try</span>
6300566                 DataGood = getpv(deblank(ChanNames(1,:)));
6310567
6320568                 DataGood = getpv(ChanNames);
6330569                 Data(iGood,:) = DataGood;
6340570                 DataCell = mat2cell(num2str(Data), ones(1,size(Data,1)));
6350571
6360572                 <span class="keyword">if</span> strcmpi(get(handles.DataTypeString, <span class="string">'Checked'</span>) , <span class="string">'On'</span>)
6370573                     <span class="comment">% Put strings in the list box</span>
6380574                     DataGoodString = getpv(ChanNames, <span class="string">'String'</span>);
6390575                     DataCell(iGood) = mat2cell(DataGoodString, ones(1,size(DataGoodString,1)));
6400576                 <span class="keyword">end</span>
6410577             <span class="keyword">catch</span>
6420578                 Data = NaN * ones(size(DeviceListTotal,1),1);
6430579                 <span class="comment">%DataCell = mat2cell(num2str(Data), ones(1,size(Data,1)));</span>
6440580                 <span class="keyword">for</span> i = 1:size(Data)
6450581                     DataCell{i,1} = <span class="string">'No Data'</span>;
6460582                 <span class="keyword">end</span>
6470583             <span class="keyword">end</span>
6480584
6490585         <span class="keyword">end</span>
6500586         UnitsString = <span class="string">''</span>;
6510587     <span class="keyword">end</span>
6520588 <span class="keyword">catch</span>
6530589     Data = NaN * ones(size(DeviceListTotal,1),1);
6540590     <span class="comment">%DataCell = mat2cell(num2str(Data), ones(1,size(Data,1)));</span>
6550591     <span class="keyword">for</span> i = 1:size(Data)
6560592         DataCell{i,1} = <span class="string">'No Data'</span>;
6570593     <span class="keyword">end</span>
6580594 <span class="keyword">end</span>
6590595
6600596
6610597 <span class="comment">% Plot</span>
6620598 <span class="keyword">try</span>
6630599     s = getspos(Family, DeviceListTotal);
6640600     plot(handles.axes1, s, Data, <span class="string">'.-'</span>);
6650601     xlabel(handles.axes1, <span class="string">'Position [meters]'</span>);
6660602
6670603     YLabelString = sprintf(<span class="string">'%s.%s'</span>, Family, Field);
6680604     <span class="keyword">if</span> ~isempty(SubField)
6690605         YLabelString = sprintf(<span class="string">'%s.%s'</span>, YLabelString, SubField);
6700606     <span class="keyword">end</span>
6710607     <span class="keyword">if</span> ~isempty(UnitsString)
6720608         YLabelString = sprintf(<span class="string">'%s [%s]'</span>, YLabelString, UnitsString);
6730609     <span class="keyword">end</span>       
6740610
6750611     ylabel(handles.axes1, YLabelString);
6760612
6770613     L = getfamilydata(<span class="string">'Circumference'</span>);
6780614     <span class="keyword">if</span> ~isempty(L)
6790615         a = axis(handles.axes1);
6800616         axis(handles.axes1, [0 L a(3:4)]);
6810617     <span class="keyword">end</span>
6820618
6830619     <span class="comment">% Set the callback for mouse clicks on the plot</span>
6840620     setappdata(handles.figure1, <span class="string">'SPosX'</span>, s);
6850621     setappdata(handles.figure1, <span class="string">'SPosY'</span>, Data);
6860622     set(handles.axes1, <span class="string">'ButtonDownFcn'</span>, <span class="string">'mmlviewer(''Graph1_ButtonDown'',gcbo,[],guidata(gcbo))'</span>);
6870623     h = get(handles.axes1, <span class="string">'Children'</span>);
6880624     <span class="keyword">for</span> i = 1:length(h)
6890625         set(h(i) ,<span class="string">'ButtonDownFcn'</span>,<span class="string">'mmlviewer(''Graph1_ButtonDown'',gcbo,[],guidata(gcbo))'</span>);
6900626     <span class="keyword">end</span>
6910627     
6920628     <span class="comment">% Data list box</span>
6930629
6940630     <span class="comment">% Change the value in the data list box before setting the new string</span>
6950631     DataValue = get(handles.ListBoxData, <span class="string">'Value'</span>);
6960632     <span class="keyword">if</span> DataValue &gt; size(Data,1)
6970633         set(handles.ListBoxData, <span class="string">'Value'</span>, 1);
6980634         DataValue = 1;
6990635     <span class="keyword">end</span>
7000636
7010637     <span class="comment">%DataMat = [];</span>
7020638     <span class="comment">%for ii = 1:size(DeviceListTotal,1)</span>
7030639     <span class="comment">%    DataMat = strvcat(DataMat, sprintf('%s(%d,%d) = %+.4e', Family, DeviceListTotal(ii,:), Data(ii,1)));</span>
7040640     <span class="comment">%end</span>
7050641     <span class="comment">%set(handles.ListBoxData,'String', DataMat);</span>
7060642     <span class="comment">%set(handles.ListBoxData, 'String', num2str(Data));</span>
7070643
7080644     <span class="keyword">for</span> ii = 1:size(DeviceListTotal,1)
7090645         DataCell{ii} = sprintf(<span class="string">'%s(%d,%d) = %s'</span>, Family, DeviceListTotal(ii,:), DataCell{ii});
7100646     <span class="keyword">end</span>
7110647     set(handles.ListBoxData,<span class="string">'String'</span>, DataCell);
7120648     set(handles.ListBoxData, <span class="string">'Visible'</span>, <span class="string">'On'</span>);
7130649
7140650     <a href="#_sub17" class="code" title="subfunction DataText(handles, Data, iGood)">DataText</a>(handles, Data, iGood);
7150651
7160652 <span class="keyword">catch</span>
7170653     set(handles.ListBoxData, <span class="string">'Visible'</span>, <span class="string">'Off'</span>);
7180654     set(handles.DataText,    <span class="string">'Visible'</span>, <span class="string">'Off'</span>);
7190655     error(<span class="string">'An error occurred in getandplotdata the %s family'</span>, Family);
7200656 <span class="keyword">end</span>
7210657
7220658
7230659
7240660 <a name="_sub16" href="#_subfunctions" class="code">function plotdatastruct(handles, d, Field)</a>
7250661
7260662 s = getspos(d.FamilyName, d.DeviceList);
7270663 plot(handles.axes1, s, d.(Field), <span class="string">'.-'</span>);
7280664 xlabel(handles.axes1, <span class="string">'Position [meters]'</span>);
7290665 ylabel(handles.axes1, sprintf(<span class="string">'%s.%s [%s]'</span>, d.FamilyName, d.Field, d.UnitsString));
7300666
7310667 L = getfamilydata(<span class="string">'Circumference'</span>);
7320668 <span class="keyword">if</span> ~isempty(L)
7330669     a = axis(handles.axes1);
7340670     axis(handles.axes1, [0 L a(3:4)]);
7350671 <span class="keyword">end</span>
7360672
7370673 <span class="comment">% Set the callback for mouse clicks on the plot</span>
7380674 setappdata(handles.figure1, <span class="string">'SPosX'</span>, s);
7390675 setappdata(handles.figure1, <span class="string">'SPosY'</span>, d.(Field));
7400676 set(handles.axes1, <span class="string">'ButtonDownFcn'</span>, <span class="string">'mmlviewer(''Graph1_ButtonDown'',gcbo,[],guidata(gcbo))'</span>);
7410677 h = get(handles.axes1, <span class="string">'Children'</span>);
7420678 <span class="keyword">for</span> i = 1:length(h)
7430679     set(h(i) ,<span class="string">'ButtonDownFcn'</span>,<span class="string">'mmlviewer(''Graph1_ButtonDown'',gcbo,[],guidata(gcbo))'</span>);
7440680 <span class="keyword">end</span>
7450681
7460682 <span class="comment">% Data list box</span>
7470683 <span class="keyword">if</span> get(handles.ListBoxData, <span class="string">'Value'</span>) &gt; size(d.Data,1)
7480684     set(handles.ListBoxData, <span class="string">'Value'</span>, 1);
7490685 <span class="keyword">end</span>
7500686
7510687 DataMat = [];
7520688 <span class="keyword">for</span> ii = 1:size(d.DeviceList,1)
7530689     DataMat = strvcat(DataMat, sprintf(<span class="string">'%s(%d,%d) = %+.4e'</span>, d.FamilyName, d.DeviceList(ii,:), d.Data(ii,1)));
7540690 <span class="keyword">end</span>
7550691 set(handles.ListBoxData,<span class="string">'String'</span>, DataMat);
7560692 <span class="comment">%set(handles.ListBoxData, 'String', num2str(Data));</span>
7570693
7580694 set(handles.ListBoxData, <span class="string">'Visible'</span>, <span class="string">'On'</span>);
7590695
7600696 <a href="#_sub17" class="code" title="subfunction DataText(handles, Data, iGood)">DataText</a>(handles, d.Data);
7610697
7620698
7630699
7640700 <a name="_sub17" href="#_subfunctions" class="code">function DataText(handles, Data, iGood)</a>
7650701
7660702 <span class="keyword">if</span> nargin &lt; 3
7670703     iGood = 1:size(Data,1);
7680704 <span class="keyword">end</span>
7690705
7700706 <span class="keyword">if</span> isempty(iGood)
7710707     set(handles.DataText, <span class="string">'Visible'</span>, <span class="string">'Off'</span>);
7720708 <span class="keyword">else</span>
7730709     MeanText = sprintf(<span class="string">'Mean = %+9.6e'</span>, mean(Data(iGood)));
7740710     RMSText  = sprintf(<span class="string">'RMS  = %+9.6e'</span>, (length(Data(iGood))-1)*std(Data(iGood))/length(Data(iGood)));
7750711     MaxText  = sprintf(<span class="string">'Max   = %+9.6e'</span>,  max(Data(iGood)));
7760712     MinText  = sprintf(<span class="string">'Min    = %+9.6e'</span>,  min(Data(iGood)));
7770713     set(handles.DataText, <span class="string">'String'</span>, {MeanText; RMSText; MaxText; MinText});
7780714     set(handles.DataText, <span class="string">'FontSize'</span>, 8);
7790715     <span class="keyword">if</span> isnan(mean(Data(iGood)))
7800716         set(handles.DataText, <span class="string">'Visible'</span>, <span class="string">'Off'</span>);
7810717     <span class="keyword">else</span>
7820718         set(handles.DataText, <span class="string">'Visible'</span>, <span class="string">'On'</span>);
7830719     <span class="keyword">end</span>
7840720 <span class="keyword">end</span>
7850721
7860722
7870723 <span class="comment">% --------------------------------------------------------------------</span>
7880724 <a name="_sub18" href="#_subfunctions" class="code">function ViewAO_Callback(hObject, eventdata, handles)</a>
7890725
7900726 [Fields, RootStruct] = getfamilylist(<span class="string">'Cell'</span>);
7910727 setappdata(handles.figure1, <span class="string">'RootStruct'</span>, RootStruct);
7920728
7930729 set(handles.ListBox1, <span class="string">'Value'</span>, 1);
7940730 set(handles.ListBox1, <span class="string">'String'</span>, Fields);
7950731 <a href="#_sub7" class="code" title="subfunction ListBox1_Callback(hObject, eventdata, handles)">ListBox1_Callback</a>(hObject, eventdata, handles);
7960732
7970733 set(handles.ViewAO,         <span class="string">'Checked'</span> , <span class="string">'On'</span>);
7980734 set(handles.ViewAD,         <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
7990735 set(handles.ViewProduction, <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8000736 set(handles.ViewInjection,  <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8010737 set(handles.ViewFile,       <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8020738
8030739
8040740 <span class="comment">% --------------------------------------------------------------------</span>
8050741 <a name="_sub19" href="#_subfunctions" class="code">function ViewAD_Callback(hObject, eventdata, handles)</a>
8060742
8070743 RootStruct = getad;
8080744 Fields = fieldnames(RootStruct);
8090745 setappdata(handles.figure1, <span class="string">'RootStruct'</span>, RootStruct);
8100746
8110747 set(handles.ListBox1, <span class="string">'Value'</span>, 1);
8120748 set(handles.ListBox1, <span class="string">'String'</span>, Fields);
8130749 <a href="#_sub7" class="code" title="subfunction ListBox1_Callback(hObject, eventdata, handles)">ListBox1_Callback</a>(hObject, eventdata, handles);
8140750
8150751 set(handles.ViewAO,         <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8160752 set(handles.ViewAD,         <span class="string">'Checked'</span> , <span class="string">'On'</span>);
8170753 set(handles.ViewProduction, <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8180754 set(handles.ViewInjection,  <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8190755 set(handles.ViewFile,       <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8200756
8210757
8220758 <span class="comment">% --------------------------------------------------------------------</span>
8230759 <a name="_sub20" href="#_subfunctions" class="code">function ViewProduction_Callback(hObject, eventdata, handles)</a>
8240760
8250761 [RootStruct, Monitor, FileName] = getproductionlattice;
8260762 Fields = fieldnames(RootStruct);
8270763 setappdata(handles.figure1, <span class="string">'RootStruct'</span>, RootStruct);
8280764
8290765 set(handles.ListBox1, <span class="string">'Value'</span>, 1);
8300766 set(handles.ListBox1, <span class="string">'String'</span>, Fields);
8310767 <a href="#_sub7" class="code" title="subfunction ListBox1_Callback(hObject, eventdata, handles)">ListBox1_Callback</a>(hObject, eventdata, handles);
8320768
8330769 set(handles.ViewAO,         <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8340770 set(handles.ViewAD,         <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8350771 set(handles.ViewProduction, <span class="string">'Checked'</span> , <span class="string">'On'</span>);
8360772 set(handles.ViewInjection,  <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8370773 set(handles.ViewFile,       <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8380774
8390775
8400776 <span class="comment">% --------------------------------------------------------------------</span>
8410777 <a name="_sub21" href="#_subfunctions" class="code">function ViewInjection_Callback(hObject, eventdata, handles)</a>
8420778
8430779 [RootStruct, Monitor, FileName] = getinjectionlattice;
8440780 Fields = fieldnames(RootStruct);
8450781 setappdata(handles.figure1, <span class="string">'RootStruct'</span>, RootStruct);
8460782
8470783 set(handles.ListBox1, <span class="string">'Value'</span>, 1);
8480784 set(handles.ListBox1, <span class="string">'String'</span>, Fields);
8490785 <a href="#_sub7" class="code" title="subfunction ListBox1_Callback(hObject, eventdata, handles)">ListBox1_Callback</a>(hObject, eventdata, handles);
8500786
8510787 set(handles.ViewAO,         <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8520788 set(handles.ViewAD,         <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8530789 set(handles.ViewProduction, <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8540790 set(handles.ViewInjection,  <span class="string">'Checked'</span> , <span class="string">'On'</span>);
8550791 set(handles.ViewFile,       <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8560792
8570793
8580794 <span class="comment">% --------------------------------------------------------------------</span>
8590795 <a name="_sub22" href="#_subfunctions" class="code">function ViewFile_Callback(hObject, eventdata, handles)</a>
8600796
8610797 [RootStruct, Monitor, FileName] = getlattice;
8620798 <span class="keyword">if</span> FileName == 0
8630799     <span class="keyword">return</span>;
8640800 <span class="keyword">end</span>
8650801 Fields = fieldnames(RootStruct);
8660802 setappdata(handles.figure1, <span class="string">'RootStruct'</span>, RootStruct);
8670803
8680804 set(handles.ListBox1, <span class="string">'Value'</span>, 1);
8690805 set(handles.ListBox1, <span class="string">'String'</span>, Fields);
8700806 <a href="#_sub7" class="code" title="subfunction ListBox1_Callback(hObject, eventdata, handles)">ListBox1_Callback</a>(hObject, eventdata, handles);
8710807
8720808 set(handles.ViewAO,         <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8730809 set(handles.ViewAD,         <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8740810 set(handles.ViewProduction, <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8750811 set(handles.ViewInjection,  <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8760812 set(handles.ViewFile,       <span class="string">'Checked'</span> , <span class="string">'On'</span>);
8770813
8780814
8790815 <span class="comment">% --------------------------------------------------------------------</span>
8800816 <a name="_sub23" href="#_subfunctions" class="code">function DataTypeDouble_Callback(hObject, eventdata, handles)</a>
8810817 set(handles.DataTypeDouble, <span class="string">'Checked'</span> , <span class="string">'On'</span>);
8820818 set(handles.DataTypeString, <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8830819 <a href="#_sub7" class="code" title="subfunction ListBox1_Callback(hObject, eventdata, handles)">ListBox1_Callback</a>(hObject, eventdata, handles);
8840820
8850821 <span class="comment">% --------------------------------------------------------------------</span>
8860822 <a name="_sub24" href="#_subfunctions" class="code">function DataTypeString_Callback(hObject, eventdata, handles)</a>
8870823 set(handles.DataTypeDouble, <span class="string">'Checked'</span> , <span class="string">'Off'</span>);
8880824 set(handles.DataTypeString, <span class="string">'Checked'</span> , <span class="string">'On'</span>);
8890825 <a href="#_sub7" class="code" title="subfunction ListBox1_Callback(hObject, eventdata, handles)">ListBox1_Callback</a>(hObject, eventdata, handles);
8900826
8910827
8920828 <span class="comment">% --------------------------------------------------------------------</span>
8930829 <a name="_sub25" href="#_subfunctions" class="code">function PopPlot_Callback(hObject, eventdata, handles)</a>
8940830 a = figure;
8950831 b = copyobj(handles.axes1, a);
8960832 set(b, <span class="string">'Position'</span>, [0.1300    0.1100    0.7750    0.8150]);
8970833 set(b, <span class="string">'ButtonDownFcn'</span>,<span class="string">''</span>);
8980834 set(b, <span class="string">'XAxisLocation'</span>,<span class="string">'Bottom'</span>);
8990835
9000836
9010837 <span class="comment">% --------------------------------------------------------------------</span>
9020838 <a name="_sub26" href="#_subfunctions" class="code">function PopPlotHoldOn_Callback(hObject, eventdata, handles)</a>
9030839
9040840 <span class="comment">% Find the figure that is not the current figure</span>
9050841 h = get(0,<span class="string">'children'</span>);
9060842
9070843 a = [];
9080844 <span class="keyword">for</span> i = 1:length(h)
9090845     <span class="keyword">if</span> h(i)~=handles.figure1 &amp;&amp; strcmpi(get(h(i),<span class="string">'Type'</span>),<span class="string">'figure'</span>) &amp;&amp; strcmpi(get(h(i),<span class="string">'Visible'</span>),<span class="string">'On'</span>)
9100846         a = h(i);
9110847         <span class="keyword">break</span>;
9120848     <span class="keyword">end</span>
9130849 <span class="keyword">end</span>
9140850 <span class="keyword">if</span> isempty(a)
9150851     <a href="#_sub25" class="code" title="subfunction PopPlot_Callback(hObject, eventdata, handles)">PopPlot_Callback</a>(hObject, eventdata, handles);
9160852     <span class="keyword">return</span>;
9170853 <span class="keyword">end</span>
9180854
9190855 x = getappdata(handles.figure1, <span class="string">'SPosX'</span>);
9200856 y = getappdata(handles.figure1, <span class="string">'SPosY'</span>);
9210857
9220858 figure(a);
9230859 LegendHandle = legend; <span class="comment">%findobj(a, 'tag', 'legend');</span>
9240860 YLabelOld = get(get(gca,<span class="string">'ylabel'</span>),<span class="string">'String'</span>);
9250861 YLabelNew = get(get(handles.axes1,<span class="string">'ylabel'</span>),<span class="string">'String'</span>);
9260862
9270863 hold on;
9280864 Color = nxtcolor;
9290865 plot(x, y, <span class="string">'.-'</span>, <span class="string">'Color'</span>, Color);
9300866 hold off
9310867
9320868 axis tight;
9330869 L = getfamilydata(<span class="string">'Circumference'</span>);
9340870 <span class="keyword">if</span> ~isempty(L)
9350871     a = axis(handles.axes1);
9360872     axis(handles.axes1, [0 L a(3:4)]);
9370873 <span class="keyword">end</span>
9380874
9390875 <span class="keyword">if</span> isempty(LegendHandle)
9400876     <span class="keyword">if</span> isempty(YLabelOld)
9410877         LegendCell = {};
9420878     <span class="keyword">else</span>
9430879         LegendCell = {YLabelOld};
9440880     <span class="keyword">end</span>
9450881 <span class="keyword">else</span>
9460882     LegendHandle = LegendHandle(1);
9470883     LegendCell = get(LegendHandle, <span class="string">'String'</span>);
9480884     <span class="keyword">if</span> ~iscell(LegendCell)
9490885         LegendCell = {LegendCell};
9500886     <span class="keyword">end</span>
9510887 <span class="keyword">end</span>
9520888 LegendCell(end+1) = {YLabelNew};
9530889 legend(LegendCell);
9540890
9550891 set(get(gca,<span class="string">'ylabel'</span>),<span class="string">'String'</span>,<span class="string">''</span>);</pre></div>
956<hr><address>Generated on Mon 21-May-2007 15:32:41 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
957</body>
958</html>
Note: See TracBrowser for help on using the repository browser.