Changeset 274


Ignore:
Timestamp:
Nov 17, 2011, 11:57:12 PM (12 years ago)
Author:
sommeria
Message:

further bug repair with renovated civ GUI

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/civ.m

    r273 r274  
    2323%TODO: search range
    2424
    25 % Last Modified by GUIDE v2.5 16-Nov-2011 20:12:34
     25% Last Modified by GUIDE v2.5 17-Nov-2011 23:05:55
    2626% Begin initialization code - DO NOT EDIT
    2727gui_Singleton = 1;
     
    250250
    251251
    252 struct=read_panel(handles.Patch2Panel)
     252struct=read_panel(handles.panel_Patch2)
    253253
    254254%------------------------------------------------------------------------
     
    15701570[filecell,num1_civ1,num2_civ1,num_a_civ1,num_b_civ1,num1_civ2,num2_civ2,num_a_civ2,num_b_civ2,nom_type_nc,xx,yy,compare]=...
    15711571    set_civ_filenames(handles,ref_i,ref_j,box_test);
    1572 
     1572% ADDED
     1573   [Rootbat,Filebat]=fileparts(filecell.nc.civ1{1,1});%output netcdf file (without extention)
     1574%ADDED
    15731575set(handles.civ,'UserData',filecell);%store for futur use of status callback
    15741576if isempty(filecell)% (error message displayed in fct set_civ_filenames)
     
    16361638end
    16371639switch CivMode
    1638      case {'CivX','CivAll'}
    1639              
    1640         for bin_name={'Civ1Bin','Civ2Bin','PatchBin','FixBin','CivBin'}
    1641             if isfield(param.global,bin_name{1})
    1642                 param.global.(bin_name{1})
    1643                 exist(param.global.(bin_name{1}))
    1644                 if ~exist(param.global.(bin_name{1}))
    1645                     param.global.(bin_name{1})=fullfile(path_UVMAT,param.global.(bin_name{1}));
    1646                     if ~exist(param.global.(bin_name{1}))
    1647                         msgbox_uvmat('ERROR',['Binary ' param.global.(bin_name{1}) ' defined in PARAM.xm does not exist'])
    1648                         return
    1649                     end
    1650                 end
    1651                 [path,name,ext]=fileparts(param.global.(bin_name{1}))
    1652                 currentdir=pwd;
    1653                 cd(path);
    1654                 param.global.(bin_name{1})=which([name ext]);
    1655                 display(param.global.(bin_name{1}));
    1656                 cd(currentdir);
    1657             end
    1658         end
     1640     case {'CivX','CivAll'}     
     1641         for bin_name={'Civ1Bin','Civ2Bin','PatchBin','FixBin','CivBin'}
     1642             if isfield(param.global,bin_name{1})
     1643                 if ~exist(param.global.(bin_name{1}),'file')%look for the full path if the file name has been defined with a relative path in PARAM.xml
     1644                     fullname=fullfile(path_UVMAT,param.global.(bin_name{1}));
     1645                     if exist(fullname,'file')
     1646                         param.global.(bin_name{1})=fullname;
     1647                     else
     1648                         msgbox_uvmat('ERROR',['Binary ' param.global.(bin_name{1}) ' defined in PARAM.xm does not exist'])
     1649                         return
     1650                     end
     1651                 else
     1652                     [path,name,ext]=fileparts(param.global.(bin_name{1}));
     1653                     currentdir=pwd;
     1654                     cd(path);
     1655                     binpath=pwd;%path of the binary
     1656                     param.global.(bin_name{1})=fullfile(binpath,[name ext]);
     1657%                      display(param.global.(bin_name{1}));
     1658                     cd(currentdir);
     1659                 end
     1660                 
     1661             end
     1662         end
    16591663    case 'Matlab'
    16601664        if batch
     
    16761680end
    16771681
    1678 %% get patch1 parameters TODO read_param_patch1
     1682%% get patch1 parameters
    16791683if box_test(3)
    1680     param.patch1=read_param_patch1(handles)
     1684    param.Patch1=read_panel(handles.panel_Patch1);
     1685    %param.patch1=read_param_patch1(handles)
    16811686end
    16821687
     
    17041709%% get patch2 parameters
    17051710if box_test(6)==1
    1706     rho_patch2=str2double(get(handles.SmoothParam,'String'));
    1707     if isnan(rho_patch2)
    1708         rho_patch2='1000';
    1709         set(handles.SmoothParam,'String','1')
    1710     else
    1711         rho_patch2=num2str(1000*rho_patch2);
    1712     end
    1713     nx_patch2=get(handles.Nx,'String');
    1714     ny_patch2=get(handles.Ny,'String');
    1715     if isnan(str2double(nx_patch2))
    1716         nx_patch2='50' ;%default
    1717         set(handles.Nx,'String','50');
    1718     end
    1719     if isnan(str2double(ny_patch2))
    1720         ny_patch2='50' ;%default
    1721         set(handles.Ny,'String','50');
    1722     end
    1723     subdomain_patch2=get(handles.SubdomainSize,'String');
    1724     thresh_patch2=get(handles.MaxDiff,'String');
     1711    param.Patch2=read_panel(handles.panel_Patch1);
     1712%     rho_patch2=str2double(get(handles.num_SmoothParam,'String'));
     1713%     if isnan(rho_patch2)
     1714%         rho_patch2='1000';
     1715%         set(handles.num_SmoothParam,'String','1')
     1716%     else
     1717%         rho_patch2=num2str(1000*rho_patch2);
     1718%     end
     1719%     nx_patch2=get(handles.num_Nx,'String');
     1720%     ny_patch2=get(handles.num_Ny,'String');
     1721%     if isnan(str2double(nx_patch2))
     1722%         nx_patch2='50' ;%default
     1723%         set(handles.num_Nx,'String','50');
     1724%     end
     1725%     if isnan(str2double(ny_patch2))
     1726%         ny_patch2='50' ;%default
     1727%         set(handles.num_Ny,'String','50');
     1728%     end
     1729%     subdomain_patch2=get(handles.num_SubdomainSize,'String');
     1730%     thresh_patch2=get(handles.num_MaxDiff,'String');
    17251731end
    17261732
     
    18781884            switch CivMode
    18791885                case 'CivX'
    1880                     cmd_PATCH=cmd_patch(filecell.nc.civ1{ifile,j},param);
     1886                    cmd_PATCH=cmd_patch(filecell.nc.civ1{ifile,j},param.Patch1,param.global.PatchBin);
    18811887                    cmd=[cmd cmd_PATCH '\n'];
    18821888                case 'CivAll'
     
    20412047            switch CivMode
    20422048                case 'CivX'
    2043                     cmd_PATCH=PATCH_CMD(filecell.nc.civ2{ifile,j},nx_patch2,ny_patch2,rho_patch2,subdomain_patch2,thresh_patch2,test_interp,param.global.PatchBin);
     2049                    cmd_PATCH=cmd_path(filecell.nc.civ2{ifile,j},param);
    20442050                    cmd=[cmd cmd_PATCH '\n'];
    20452051                case 'CivAll'
     
    29842990        end
    29852991    end
    2986     if  box_test(6)==1 && isequal(get(handles.StereoCheck,'Value'),1)
     2992    if  box_test(6)==1 && isequal(get(handles.check_Stereo,'Value'),1)
    29872993        for ifile=1:nbfield
    29882994            for j=1:nbslice
     
    32073213%------------------------------------------------------------------------
    32083214% --- PATCH
    3209 function cmd=cmd_patch(filename_nc,param)
     3215function cmd=cmd_patch(filename_nc,Param,PatchBin)
    32103216%------------------------------------------------------------------------
    32113217namelog=[filename_nc(1:end-3) '_patch.log'];
     3218
    32123219% if test_interp==0
    32133220    if isunix
    3214     cmd=[param.global.PatchBin...
    3215         ' -f ' filename_nc ' -m ' param.patch1.nx_patch...
    3216         ' -n ' param.patch1.ny_patch ' -ro ' param.patch1.rho_patch...
    3217         ' -nopt ' param.patch1.subdomain_patch ...
    3218         '  > ' namelog ' 2>&1']; % redirect standard output to the log file
     3221    cmd=[PatchBin...
     3222        ' -f ' filename_nc ' -m ' num2str(Param.Nx)...
     3223        ' -n ' num2str(Param.Ny) ' -ro ' num2str(Param.SmoothingParam)...
     3224        ' -nopt ' num2str(Param.SubdomainSize) ...
     3225        '  > ' namelog ' 2>&1'] % redirect standard output to the log file
    32193226    else
    32203227      cmd=['"' param.global.PatchBin...
    3221           '" -f "' filename_nc '" -m ' param.patch1.nx_patch...
    3222           ' -n ' param.patch1.ny_patch ' -ro ' param.patch1.rho_patch...
    3223           ' -nopt ' param.patch1.subdomain_patch ...
     3228          '" -f "' filename_nc '" -m ' param.Patch1.Nx...
     3229          ' -n ' param.Patch1.Ny ' -ro ' param.Patch1.SmoothParam...
     3230          ' -nopt ' Param.Patch1.SubdomainSize ...
    32243231        '  > "' namelog '" 2>&1']; % redirect standard output to the log file
    32253232    end
     
    32293236% end
    32303237cmd=regexprep(cmd,'\\','\\\\');
     3238
    32313239%------------------------------------------------------------------------
    32323240% --- STEREO Interp
     
    38643872        return
    38653873    end
    3866     set(handles.Civ1Panel,'Visible','on')   
    3867     set(handles.PairPanel,'Visible','on')
     3874    set(handles.panel_Civ1,'Visible','on')   
     3875    set(handles.panel_PairIndices,'Visible','on')
    38683876%     set(handles.frame_civ1,'BackgroundColor',[1 1 0])
    38693877%     set(handles.frame_para_civ1,'BackgroundColor',[1 1 0])
    38703878%     set(handles.frame_grid_civ1,'BackgroundColor',[1 1 0])
    38713879else
    3872     set(handles.Civ1Panel,'Visible','off') 
     3880    set(handles.panel_Civ1,'Visible','off') 
    38733881%     set(handles.frame_civ1,'BackgroundColor',[0.831 0.816 0.784])
    38743882%     set(handles.frame_para_civ1,'BackgroundColor',[0.831 0.816 0.784])
     
    39343942end
    39353943if isequal(state,'on')
    3936     set(handles.Fix1Panel,'Visible','on')
     3944    set(handles.panel_Fix1,'Visible','on')
    39373945%     set(handles.frame_fix1,'BackgroundColor',[1 1 0])
    39383946else
    3939     set(handles.Fix1Panel,'Visible','off')
     3947    set(handles.panel_Fix1,'Visible','off')
    39403948    %set(handles.frame_fix1,'BackgroundColor',[0.7 0.7 0.7])
    39413949end
     
    39643972        return
    39653973    end
    3966     set(handles.Patch1Panel,'Visible','on')
    3967 else
    3968     set(handles.Patch1Panel,'Visible','off')
     3974    set(handles.panel_Patch1,'Visible','on')
     3975else
     3976    set(handles.panel_Patch1,'Visible','off')
    39693977end
    39703978return
     
    39793987set(handles.subdomain_text1,'Visible','on')
    39803988set(handles.nx_patch1,'Visible','on')
    3981 set(handles.Ny,'Visible','on')
     3989set(handles.num_Ny,'Visible','on')
    39823990set(handles.nx_patch1_title,'Visible','on')
    39833991set(handles.ny_patch1_title,'Visible','on')
     
    40054013% set(handles.subdomain_text1,'Visible','off')
    40064014% set(handles.nx_patch1,'Visible','off')
    4007 % set(handles.Ny,'Visible','off')
     4015% set(handles.num_Ny,'Visible','off')
    40084016% set(handles.nx_patch1_title,'Visible','off')
    40094017% set(handles.ny_patch1_title,'Visible','off')
     
    40224030        return
    40234031    end
    4024     set(handles.Civ2Panel,'Visible','on')
    4025 else
    4026     set(handles.Civ2Panel,'Visible','off')
     4032    set(handles.panel_Civ2,'Visible','on')
     4033else
     4034    set(handles.panel_Civ2,'Visible','off')
    40274035end
    40284036return
     
    40794087%------------------------------------------------------------------------
    40804088% if isequal(state,'on')
    4081 %     set(handles.Fix2Panel,'Visible','on') 
     4089%     set(handles.panel_Fix2,'Visible','on') 
    40824090%     
    40834091% %     set(handles.frame_civ2,'BackgroundColor',[1 1 0])
     
    40924100        return
    40934101    end
    4094     set(handles.Fix2Panel,'Visible','on')
    4095 else
    4096     set(handles.Fix2Panel,'Visible','off')
     4102    set(handles.panel_Fix2,'Visible','on')
     4103else
     4104    set(handles.panel_Fix2,'Visible','off')
    40974105end
    40984106return
     
    41494157        return
    41504158    end
    4151     set(handles.Patch2Panel,'Visible','on')
    4152 else
    4153 set(handles.Patch2Panel,'Visible','off')
     4159    set(handles.panel_Patch2,'Visible','on')
     4160else
     4161set(handles.panel_Patch2,'Visible','off')
    41544162end
    41554163% set(handles.frame_patch2,'BackgroundColor',[1 1 0])
    4156 % set(handles.SmoothParam,'Visible','on')
    4157 % set(handles.SmoothingParam,'Visible','on')
    4158 % set(handles.MaxDiff,'Visible','on')
     4164% set(handles.num_SmoothParam,'Visible','on')
     4165% set(handles.num_SmoothingParam,'Visible','on')
     4166% set(handles.num_MaxDiff,'Visible','on')
    41594167% set(handles.thresh_text2,'Visible','on')
    4160 % set(handles.SubdomainSize,'Visible','on')
     4168% set(handles.num_SubdomainSize,'Visible','on')
    41614169% set(handles.subdomain_text2,'Visible','on')
    4162 % set(handles.Nx,'Visible','on')
    4163 % set(handles.Ny,'Visible','on')
     4170% set(handles.num_Nx,'Visible','on')
     4171% set(handles.num_Ny,'Visible','on')
    41644172% set(handles.nx_patch2_title,'Visible','on')
    41654173% set(handles.ny_patch2_title,'Visible','on')
     
    41714179% stereo_test=get(handles.compare,'Value');
    41724180% if stereo_test==3
    4173 %     set(handles.StereoCheck,'Visible','on')
     4181%     set(handles.check_Stereo,'Visible','on')
    41744182% end
    41754183
     
    41774185% function desable_patch2(handles)
    41784186% %------------------------------------------------------------------------
    4179 % %set(handles.Patch2Panel,'Visible','off')
     4187% %set(handles.panel_Patch2,'Visible','off')
    41804188% return
    41814189% set(handles.frame_patch2,'BackgroundColor',[0.831 0.816 0.784])
    4182 % set(handles.SmoothParam,'Visible','off')
    4183 % set(handles.SmoothingParam,'Visible','off')
    4184 % set(handles.MaxDiff,'Visible','off')
     4190% set(handles.num_SmoothParam,'Visible','off')
     4191% set(handles.num_SmoothingParam,'Visible','off')
     4192% set(handles.num_MaxDiff,'Visible','off')
    41854193% set(handles.thresh_text2,'Visible','off')
    4186 % set(handles.SubdomainSize,'Visible','off')
     4194% set(handles.num_SubdomainSize,'Visible','off')
    41874195% set(handles.subdomain_text2,'Visible','off')
    4188 % set(handles.Nx,'Visible','off')
    4189 % set(handles.Ny,'Visible','off')
     4196% set(handles.num_Nx,'Visible','off')
     4197% set(handles.num_Ny,'Visible','off')
    41904198% set(handles.nx_patch2_title,'Visible','off')
    41914199% set(handles.ny_patch2_title,'Visible','off')
     
    41974205%     set(handles.subdir_civ2_text,'Visible','off')
    41984206% end
    4199 % set(handles.StereoCheck,'Visible','off')
     4207% set(handles.check_Stereo,'Visible','off')
    42004208%------------------------------------------------------------------------
    42014209function enable_pair1(handles,state)
     
    47584766    set(handles.CivMode,'String',mode_store)
    47594767    set(handles.test_stereo1,'Value',0)
    4760     set(handles.StereoCheck,'Value',0)
     4768    set(handles.check_Stereo,'Value',0)
    47614769    set(handles.CivMode,'Value',1) % mode 'civX' selected by default
    47624770end
     
    47674775end
    47684776if test==3 && get(handles.PATCH2,'Value')
    4769     set(handles.StereoCheck,'Visible','on')
    4770 else
    4771     set(handles.StereoCheck,'Visible','off')
     4777    set(handles.check_Stereo,'Visible','on')
     4778else
     4779    set(handles.check_Stereo,'Visible','off')
    47724780end
    47734781mode_Callback(hObject, eventdata, handles)
     
    49004908
    49014909%------------------------------------------------------------------------
    4902 % --- Executes on button press in StereoCheck.
     4910% --- Executes on button press in check_Stereo.
    49034911function StereoCheck_Callback(hObject, eventdata, handles)
    49044912%------------------------------------------------------------------------
    4905 if isequal(get(handles.StereoCheck,'Value'),0)
    4906     set(handles.SubdomainSize,'Visible','on')
    4907     set(handles.SmoothParam,'Visible','on')
    4908 else
    4909     set(handles.SubdomainSize,'Visible','off')
    4910     set(handles.SmoothParam,'Visible','off')
     4913if isequal(get(handles.check_Stereo,'Value'),0)
     4914    set(handles.num_SubdomainSize,'Visible','on')
     4915    set(handles.num_SmoothParam,'Visible','on')
     4916else
     4917    set(handles.num_SubdomainSize,'Visible','off')
     4918    set(handles.num_SmoothParam,'Visible','off')
    49114919end
    49124920
     
    51845192%         set(handles.thresh_patch1,'Visible','off')
    51855193%         set(handles.thresh_text1,'Visible','off')
    5186 %         set(handles.MaxDiff,'Visible','off')
     5194%         set(handles.num_MaxDiff,'Visible','off')
    51875195%         set(handles.thresh_text2,'Visible','off')
    51885196%         set(handles.rho,'Style','edit')
     
    52025210
    52035211
    5204 % --- Executes on button press in checkbox42.
    5205 function checkbox42_Callback(hObject, eventdata, handles)
    5206 % hObject    handle to checkbox42 (see GCBO)
     5212% --- Executes on button press in check_Stereo.
     5213function check_Stereo_Callback(hObject, eventdata, handles)
     5214% hObject    handle to check_Stereo (see GCBO)
    52075215% eventdata  reserved - to be defined in a future version of MATLAB
    52085216% handles    structure with handles and user data (see GUIDATA)
    52095217
    5210 % Hint: get(hObject,'Value') returns toggle state of checkbox42
    5211 
    5212 
    5213 
    5214 function SubdomainSize_Callback(hObject, eventdata, handles)
    5215 % hObject    handle to SubdomainSize (see GCBO)
     5218% Hint: get(hObject,'Value') returns toggle state of check_Stereo
     5219
     5220
     5221
     5222function num_SubdomainSize_Callback(hObject, eventdata, handles)
     5223% hObject    handle to num_SubdomainSize (see GCBO)
    52165224% eventdata  reserved - to be defined in a future version of MATLAB
    52175225% handles    structure with handles and user data (see GUIDATA)
    52185226
    5219 % Hints: get(hObject,'String') returns contents of SubdomainSize as text
    5220 %        str2double(get(hObject,'String')) returns contents of SubdomainSize as a double
    5221 
    5222 
    5223 
    5224 function SmoothingParam_Callback(hObject, eventdata, handles)
    5225 % hObject    handle to SmoothingParam (see GCBO)
     5227% Hints: get(hObject,'String') returns contents of num_SubdomainSize as text
     5228%        str2double(get(hObject,'String')) returns contents of num_SubdomainSize as a double
     5229
     5230
     5231
     5232function num_SmoothingParam_Callback(hObject, eventdata, handles)
     5233% hObject    handle to num_SmoothingParam (see GCBO)
    52265234% eventdata  reserved - to be defined in a future version of MATLAB
    52275235% handles    structure with handles and user data (see GUIDATA)
    52285236
    5229 % Hints: get(hObject,'String') returns contents of SmoothingParam as text
    5230 %        str2double(get(hObject,'String')) returns contents of SmoothingParam as a double
    5231 
    5232 
    5233 
    5234 function MaxDiff_Callback(hObject, eventdata, handles)
    5235 % hObject    handle to MaxDiff (see GCBO)
     5237% Hints: get(hObject,'String') returns contents of num_SmoothingParam as text
     5238%        str2double(get(hObject,'String')) returns contents of num_SmoothingParam as a double
     5239
     5240
     5241
     5242function num_MaxDiff_Callback(hObject, eventdata, handles)
     5243% hObject    handle to num_MaxDiff (see GCBO)
    52365244% eventdata  reserved - to be defined in a future version of MATLAB
    52375245% handles    structure with handles and user data (see GUIDATA)
    52385246
    5239 % Hints: get(hObject,'String') returns contents of MaxDiff as text
    5240 %        str2double(get(hObject,'String')) returns contents of MaxDiff as a double
    5241 
    5242 
    5243 function Nx_Callback(hObject, eventdata, handles)
    5244 % hObject    handle to Nx (see GCBO)
     5247% Hints: get(hObject,'String') returns contents of num_MaxDiff as text
     5248%        str2double(get(hObject,'String')) returns contents of num_MaxDiff as a double
     5249
     5250
     5251function num_Nx_Callback(hObject, eventdata, handles)
     5252% hObject    handle to num_Nx (see GCBO)
    52455253% eventdata  reserved - to be defined in a future version of MATLAB
    52465254% handles    structure with handles and user data (see GUIDATA)
    52475255
    5248 % Hints: get(hObject,'String') returns contents of Nx as text
    5249 %        str2double(get(hObject,'String')) returns contents of Nx as a double
    5250 
    5251 
    5252 function Ny_Callback(hObject, eventdata, handles)
    5253 % hObject    handle to Ny (see GCBO)
     5256% Hints: get(hObject,'String') returns contents of num_Nx as text
     5257%        str2double(get(hObject,'String')) returns contents of num_Nx as a double
     5258
     5259
     5260function num_Ny_Callback(hObject, eventdata, handles)
     5261% hObject    handle to num_Ny (see GCBO)
    52545262% eventdata  reserved - to be defined in a future version of MATLAB
    52555263% handles    structure with handles and user data (see GUIDATA)
    52565264
    5257 % Hints: get(hObject,'String') returns contents of Ny as text
    5258 %        str2double(get(hObject,'String')) returns contents of Ny as a double
     5265% Hints: get(hObject,'String') returns contents of num_Ny as text
     5266%        str2double(get(hObject,'String')) returns contents of num_Ny as a double
    52595267
    52605268
     
    52745282%set(handles.thresh_patch1,'Visible','off')
    52755283set(handles.thresh_text1,'Visible','off')
    5276 set(handles.MaxDiff,'Visible','off')
     5284set(handles.num_MaxDiff,'Visible','off')
    52775285set(handles.thresh_text2,'Visible','off')
    52785286set(handles.rho,'Style','edit')
     
    52895297end
    52905298if get(handles.PATCH2,'Value')
    5291     set(handles.MaxDiff,'Visible','on')
     5299    set(handles.num_MaxDiff,'Visible','on')
    52925300    set(handles.thresh_text2,'Visible','on')
    52935301end
     
    53035311for ichild=1:numel(hchild)
    53045312    object_style=get(hchild(ichild),'Style');
     5313    tag=get(hchild(ichild),'tag');
    53055314    check_input=1;%default
    53065315    switch object_style
    53075316        case 'edit'
    5308             input=str2double(get(hchild(ichild),'String'));
    5309             %deal with undefined input: retrieve the default value stored as UserData
    5310             if isnan(input)
    5311                 input=get(hchild(ichild),'UserData');
    5312                 set(hchild(ichild),'String',num2str(input))
    5313             end
     5317            switch(tag(1:4))
     5318                case 'num_'
     5319                    input=str2double(get(hchild(ichild),'String'));
     5320                    %deal with undefined input: retrieve the default value stored as UserData
     5321                    if isnan(input)
     5322                        input=get(hchild(ichild),'UserData');
     5323                        set(hchild(ichild),'String',num2str(input))
     5324                    end
     5325                case 'txt_'
     5326                    input=get(hchild(ichild),'String');
     5327            end
     5328            key=tag(5:end);
    53145329        case 'checkbox'
    5315             input=get(hchild(ichild),'Value'); 
     5330            input=get(hchild(ichild),'Value');
     5331            key=tag(7:end);
    53165332        otherwise
    5317                 check_input=0;
    5318                
     5333            check_input=0;         
    53195334    end
    53205335    if check_input
    5321         eval(['struct.' get(hchild(ichild),'tag') '=input;'])
    5322     end
    5323 end
     5336        key
     5337        eval(['struct.' key '=input;'])
     5338    end
     5339end
Note: See TracChangeset for help on using the changeset viewer.