source: Roms_tools/Visualization_tools/roms_gui.m @ 1

Last change on this file since 1 was 1, checked in by cholod, 13 years ago

import Roms_Agrif

File size: 46.3 KB
Line 
1function varargout = roms_gui(varargin)
2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3%
4%% ROMS_GUI Application M-file for roms_gui.fig
5%
6%  Visualization of ROMS model outputs
7%
8%  Further Information: 
9%  http://www.brest.ird.fr/Roms_tools/
10
11%  This file is part of ROMSTOOLS
12%
13%  ROMSTOOLS is free software; you can redistribute it and/or modify
14%  it under the terms of the GNU General Public License as published
15%  by the Free Software Foundation; either version 2 of the License,
16%  or (at your option) any later version.
17%
18%  ROMSTOOLS is distributed in the hope that it will be useful, but
19%  WITHOUT ANY WARRANTY; without even the implied warranty of
20%  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21%  GNU General Public License for more details.
22%
23%  You should have received a copy of the GNU General Public License
24%  along with this program; if not, write to the Free Software
25%  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
26%  MA  02111-1307  USA
27%
28%  Copyright (c) 2002-2006 by Pierrick Penven
29%  e-mail:Pierrick.Penven@ird.fr 
30%
31%  Updated 02-Nov-2006 by Pierrick Penven (Yorig)
32%
33%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
34
35% ------------------------------------------------------------
36% LAUNCH GUI
37% ------------------------------------------------------------
38if nargin == 0
39  warning off
40  fig = openfig(mfilename,'reuse');
41  warning on
42  % Use system color scheme for figure:
43  set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));
44  % Generate a structure of handles to pass to callbacks, and store it.
45  handles = guihandles(fig); 
46  hisfile_callback(fig, [], handles, varargin)
47  if nargout > 0
48    varargout{1} = fig;
49  end
50elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
51  try
52    [varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
53  catch
54    disp(lasterr);
55  end
56end
57return
58% ------------------------------------------------------------
59% Callback for the Close button
60% ------------------------------------------------------------
61function varargout = close_Callback(h, eventdata, handles, varargin)
62delete(handles.figure1)
63return
64% ------------------------------------------------------------
65% ------------------------------------------------------------
66
67%% ------------------------------------------------------------
68% ------------------------------------------------------------
69%   Reset everything
70% ------------------------------------------------------------
71% ------------------------------------------------------------
72function handles = reset_handles(h,handles)
73handles.hisfile='';
74handles.gridfile='';
75handles.L=[];
76handles.M=[];
77handles.N=[];
78handles.T=[];
79handles.hmax=[];
80handles.ng=[];
81handles.coastfile=[];
82handles.vname='zeta';
83handles.vlevel=-10;
84handles.pltstyle=1;
85handles.lonmin=-99;
86handles.tindex=1;
87handles.lonmax=99;
88handles.latmin=-99;
89handles.latmax=99;
90handles.cstep=0;
91handles.cscale=1;
92handles.cunit=0.1;
93handles.colmin=[];
94handles.colmax=[];
95handles.ncol=10;
96handles.coef=1;
97handles.gridlevs=0;
98handles.day=[];
99handles.month=[];
100handles.year=[];
101handles.thedate='';
102handles.rempts=[1 1 1 1];
103handles.units='';
104handles.longname='';
105handles.townfile=[];
106handles.isobath='0 500 1000';
107handles.skipanim=1;
108handles.plot=1;
109handles.Yorig=NaN;
110set(handles.slidercscale,'Value',handles.cscale/20);
111set(handles.editcoef,'String',num2str(handles.coef))
112set(handles.editlonmin,'String',num2str(round(handles.lonmin*10)/10))
113set(handles.editlonmax,'String',num2str(round(handles.lonmax*10)/10))
114set(handles.editlatmin,'String',num2str(round(handles.latmin*10)/10))
115set(handles.editlatmax,'String',num2str(round(handles.latmax*10)/10))
116guidata(h,handles)
117return
118% ------------------------------------------------------------
119% ------------------------------------------------------------
120
121% ------------------------------------------------------------
122% -------------------- OPEN FILES ----------------------------
123% ------------------------------------------------------------
124% Callback for Open History file
125% ------------------------------------------------------------
126function varargout = hisfile_callback(h, eventdata, handles, varargin)
127% Use UIGETFILE to allow for the selection of a custom address book.
128
129[filename, pathname] = uigetfile( ...
130        {'*.nc', 'All netcdf-Files (*.nc)'; ...
131                '*.*','All Files (*.*)'}, ...
132        'SELECT A ROMS HISTORY NETCDF FILE');
133% If "Cancel" is selected then return
134if isequal([filename,pathname],[0,0])
135  return
136% Otherwise construct the fullfilename and Check and load the file.
137else
138  handles=reset_handles(h,handles);
139  handles.hisfile = fullfile(pathname,filename);
140  nc=netcdf(handles.hisfile,'nowrite');
141  if isempty(nc)
142     disp('Warning : this is not a netcdf file !!!')
143     handles.hisfile='';
144     return
145  else
146    pm=nc{'pm'};
147    if isempty(pm)
148      close(nc)
149      guidata(h,handles)
150      gridfile_callback(h, eventdata, handles, varargin)
151      return
152    end
153    close(nc)
154    hisfile=handles.hisfile;
155    gridfile=handles.gridfile;
156    handles = reset_handles(h,handles);
157    handles.hisfile=hisfile;
158    handles.gridfile=gridfile;
159    guidata(h,handles)
160    handles=update_listbox(h, eventdata, handles, varargin);
161  end
162end
163return
164% ------------------------------------------------------------
165% Callback for Open Grid file
166% ------------------------------------------------------------
167function varargout = gridfile_callback(h, eventdata, handles, varargin)
168% Use UIGETFILE to allow for the selection of a custom address book.
169[filename, pathname] = uigetfile( ...
170        {'*.nc', 'All netcdf-Files (*.nc)'; ...
171                '*.*','All Files (*.*)'}, ...
172        'SELECT A ROMS GRID NETCDF FILE');
173% If "Cancel" is selected then return
174if isequal([filename,pathname],[0,0])
175  return
176% Otherwise construct the fullfilename and Check and load the file.
177else
178  handles.gridfile = fullfile(pathname,filename);
179  nc=netcdf(handles.gridfile,'nowrite');
180  if isempty(nc)
181     disp('Warning : this is not a netcdf file !!!')
182     handles.gridfile='';
183     return
184  else
185    close(nc)
186    guidata(h,handles)
187    handles=update_listbox(h, eventdata, handles, varargin);
188  end
189end
190return
191% ------------------------------------------------------------
192% Callback for Open Coastfile
193% ------------------------------------------------------------
194function varargout = coastfile_callback(h, eventdata, handles, varargin)
195% Use UIGETFILE to allow for the selection of a custom address book.
196[filename, pathname] = uigetfile( ...
197        {'*.mat', 'All MAT-Files (*.mat)'; ...
198                '*.*','All Files (*.*)'}, ...
199        'SELECT A GHRR COASTLINE FILE');
200% If "Cancel" is selected then return
201if isequal([filename,pathname],[0,0])
202  return
203% Otherwise construct the fullfilename and Check and load the file.
204else
205  handles.coastfile = fullfile(pathname,filename);
206  if handles.plot==1
207    inplot(h, eventdata, handles, varargin);
208  else
209    disp('Push ''PLOT'' button')
210  end
211  guidata(h,handles)
212end
213return
214% ------------------------------------------------------------
215% Callback for remove the coastline
216% ------------------------------------------------------------
217function varargout = remcoast_Callback(h, eventdata, handles, varargin)
218handles.coastfile=[];
219if handles.plot==1
220  inplot(h, eventdata, handles, varargin);
221else
222  disp('Push ''PLOT'' button')
223end
224guidata(h,handles)
225return
226% ------------------------------------------------------------
227% Callback for Open Townfile
228% ------------------------------------------------------------
229function varargout = townfile_callback(h, eventdata, handles, varargin)
230% Use UIGETFILE to allow for the selection of a custom address book.
231[filename, pathname] = uigetfile( ...
232        {'*.dat', 'All MAT-Files (*.dat)'; ...
233                '*.*','All Files (*.*)'}, ...
234        'SELECT A ASCII TOWN FILE');
235% If "Cancel" is selected then return
236if isequal([filename,pathname],[0,0])
237  return
238% Otherwise construct the fullfilename and Check and load the file.
239else
240  handles.townfile = fullfile(pathname,filename);
241  if handles.plot==1
242    inplot(h, eventdata, handles, varargin);
243  else
244    disp('Push ''PLOT'' button')
245  end
246  guidata(h,handles)
247end
248return
249% ------------------------------------------------------------
250% Callback for remove the towns
251% ------------------------------------------------------------
252function varargout = remtowns_Callback(h, eventdata, handles, varargin)
253handles.townfile=[];
254if handles.plot==1
255  inplot(h, eventdata, handles, varargin);
256else
257  disp('Push ''PLOT'' button')
258end
259guidata(h,handles)
260return
261% ------------------------------------------------------------
262% ------------------------------------------------------------
263% ------------------------------------------------------------
264% ------------------------------------------------------------
265
266% ------------------------------------------------------------
267% Callback for update button
268% ------------------------------------------------------------
269function varargout = update_Callback(h, eventdata, handles, varargin)
270% Stub for Callback of the uicontrol handles.pushbutton1.
271handles=update_listbox(h, eventdata, handles, varargin);
272guidata(h,handles)
273return
274% ------------------------------------------------------------
275% Update the variable list box
276% ------------------------------------------------------------
277function handles = update_listbox(h, eventdata, handles, varargin)
278% Updates the listbox to show the printable variables
279vname2=[];
280index_selected=[];
281hisfile=handles.hisfile;
282nc=netcdf(hisfile,'nowrite');
283Vars = var(nc);
284Varnames = [ncnames(Vars)];
285nvar=length(Vars);
286ndims=0*(1:nvar);
287myindex=0;
288lwrd=length(handles.vname);
289for i=1:nvar
290  vname=char(Varnames(i));
291  myvar=nc{vname};
292  ndims(i)=length(dim(myvar));
293  if ndims(i)>2
294    if isempty(vname2)
295      vname2=vname;
296    end
297    myindex=myindex+1;
298    if length(vname)==lwrd
299      if vname==handles.vname
300        index_selected=myindex;
301      end
302    end
303  end
304end
305if isempty(index_selected)
306  disp([handles.vname,' not found...'])
307  index_selected=1;
308  handles.vname=vname2;
309  if isempty(handles.vname)
310    error('No variable with a least 2 dimensions found')
311  end
312end
313handles.colmin=[];
314handles.colmax=[];
315set(handles.editcolmin,'String',num2str(handles.colmin))
316set(handles.editcolmax,'String',num2str(handles.colmax))
317handles.units=nc{handles.vname}.units(:);
318set(handles.editunits,'String',num2str(handles.units))
319handles.longname=nc{handles.vname}.long_name(:);
320set(handles.editlongname,'String',num2str(handles.longname))
321handles.coef=1;
322set(handles.editcoef,'String',num2str(handles.coef))
323set(handles.listvar,'String',Varnames(ndims>2));
324set(handles.listvar,'Value',index_selected)
325close(nc)
326if isempty(handles.gridfile)
327  handles.gridfile=handles.hisfile;
328end
329nc=netcdf(handles.hisfile,'nowrite');
330handles.N=length(nc('s_rho'));
331handles.T=length(nc('time'));
332if handles.T==0
333  disp('Warning no time dimension found.. looking for tclm_time')
334  handles.T=length(nc('tclm_time'));
335end
336if handles.T==0
337  error('Warning no time dimension found')
338end
339close(nc)
340nc=netcdf(handles.gridfile,'nowrite');
341handles.L=length(nc('xi_rho'));
342handles.M=length(nc('eta_rho'));
343handles.hmax=max(max((nc{'h'}(:))));
344lat=rempoints(readlat(nc),handles.rempts);
345lon=rempoints(readlon(nc),handles.rempts);
346handles.lonmin=min(min(lon));
347handles.lonmax=max(max(lon));
348handles.latmin=min(min(lat));   
349handles.latmax=max(max(lat));
350set(handles.editlonmin,'String',num2str(round(handles.lonmin*10)/10))
351set(handles.editlonmax,'String',num2str(round(handles.lonmax*10)/10))
352set(handles.editlatmin,'String',num2str(round(handles.latmin*10)/10))
353set(handles.editlatmax,'String',num2str(round(handles.latmax*10)/10))
354close(nc)
355if handles.plot==1
356  inplot(h, eventdata, handles, varargin);
357else
358  disp('Push ''PLOT'' button')
359end
360guidata(h,handles)
361return
362% ------------------------------------------------------------
363% Callback for variable listbox
364% ------------------------------------------------------------
365function varargout = listvar_Callback(h, eventdata, handles, varargin)
366% Stub for Callback of the uicontrol handles.listvar.
367list_entries = get(handles.listvar,'String');
368index_selected = get(handles.listvar,'Value');
369if length(index_selected) ~= 1
370        errordlg('You must select 1 variables','Incorrect Selection','modal')
371else
372  varname = list_entries{index_selected(1)};
373  handles.vname=varname;
374  handles.colmin=[];
375  set(handles.editcolmin,'String',num2str(handles.colmin));
376  handles.colmax=[];
377  set(handles.editcolmax,'String',num2str(handles.colmax));
378  nc=netcdf(handles.hisfile,'nowrite');
379  handles.units=nc{handles.vname}.units(:);
380  set(handles.editunits,'String',num2str(handles.units))
381  handles.longname=nc{handles.vname}.long_name(:);
382  set(handles.editlongname,'String',num2str(handles.longname))
383  close(nc)
384  handles.coef=1;
385  set(handles.editcoef,'String',num2str(handles.coef))
386  if handles.plot==1
387    inplot(h, eventdata, handles, varargin);
388  else
389    disp('Push ''PLOT'' button')
390  end
391  guidata(h,handles)
392end
393return
394% ------------------------------------------------------------
395% Callback for derived variable listbox
396% ------------------------------------------------------------
397function varargout = listdvar_Callback(h, eventdata, handles, varargin)
398list_entries = get(handles.listdvar,'String');
399index_selected = get(handles.listdvar,'Value');
400if length(index_selected) ~= 1
401        errordlg('You must select 1 variables','Incorrect Selection','modal')
402else
403  varname = list_entries{index_selected(1)};
404  if ~isempty(varname)
405    handles.vname=varname;
406    handles.colmin=[];
407    set(handles.editcolmin,'String',num2str(handles.colmin));
408    handles.colmax=[];
409    set(handles.editcolmax,'String',num2str(handles.colmax));
410    handles.units='';
411    set(handles.editunits,'String',num2str(handles.units))
412    handles.longname='';
413    set(handles.editlongname,'String',num2str(handles.vname))
414    handles.coef=1;
415    set(handles.editcoef,'String',num2str(handles.coef))
416    if handles.plot==1
417      inplot(h, eventdata, handles, varargin);
418    else
419      disp('Push ''PLOT'' button')
420    end
421    guidata(h,handles)
422  end
423end
424return
425% ------------------------------------------------------------
426% ------------------------------------------------------------
427% ------------------------------------------------------------
428% ------------------------------------------------------------
429
430% ------------------------------------------------------------
431% vertical levels
432% ------------------------------------------------------------
433function varargout = upvlevel_Callback(h, eventdata, handles, varargin)
434% Stub for Callback of the pushbutton 'up vertical level'
435if handles.vlevel < 0.
436   handles.vlevel=handles.vlevel+100;
437   if handles.vlevel >= 0.
438     handles.vlevel=handles.N;
439   end
440else
441   handles.vlevel=handles.vlevel + 1;
442   if handles.vlevel >= handles.N
443     handles.vlevel=handles.N;
444   end
445end
446set(handles.editvlev,'String',num2str(handles.vlevel))
447if handles.plot==1
448  inplot(h, eventdata, handles, varargin);
449else
450  disp('Push ''PLOT'' button')
451end
452guidata(h,handles)
453return
454% ------------------------------------------------------------
455function varargout = downvlevel_Callback(h, eventdata, handles, varargin)
456% Stub for Callback of the pushbutton 'down vertical level'
457if handles.vlevel < 1
458   handles.vlevel=handles.vlevel-100;
459   if handles.vlevel <= -handles.hmax
460     handles.vlevel=round(100-handles.hmax);
461   end
462else
463   handles.vlevel=handles.vlevel - 1;
464   if handles.vlevel < 1
465     handles.vlevel=handles.vlevel-100;
466     if handles.vlevel <= 100-handles.hmax
467       handles.vlevel=round(100-handles.hmax);
468     end
469   end
470end
471set(handles.editvlev,'String',num2str(handles.vlevel))
472if handles.plot==1
473  inplot(h, eventdata, handles, varargin);
474else
475  disp('Push ''PLOT'' button')
476end
477guidata(h,handles)
478return
479% ------------------------------------------------------------
480function varargout = editvlev_Callback(h, eventdata, handles, varargin)
481% Stub for Callback of the vlevel text box
482handles.vlevel = str2num(get(handles.editvlev,'String'));
483if handles.vlevel >= handles.N
484  handles.vlevel=handles.N;
485  set(handles.editvlev,'String',num2str(handles.vlevel))
486end
487if handles.vlevel <= 100-handles.hmax
488  handles.vlevel=round(100-handles.hmax);
489  set(handles.editvlev,'String',num2str(handles.vlevel))
490end
491if handles.plot==1
492  inplot(h, eventdata, handles, varargin);
493else
494  disp('Push ''PLOT'' button')
495end
496guidata(h,handles)
497return
498% ------------------------------------------------------------
499% end vertical levels
500% ------------------------------------------------------------
501
502% ------------------------------------------------------------
503% plot style (pcolor, contourf, etc..)
504% ------------------------------------------------------------
505function varargout = pcolor_Callback(h, eventdata, handles, varargin)
506handles.pltstyle=1;
507if handles.plot==1
508  inplot(h, eventdata, handles, varargin);
509else
510  disp('Push ''PLOT'' button')
511end
512guidata(h,handles)
513return
514% ------------------------------------------------------------
515function varargout = contourf_Callback(h, eventdata, handles, varargin)
516handles.pltstyle=2;
517if handles.plot==1
518  inplot(h, eventdata, handles, varargin);
519else
520  disp('Push ''PLOT'' button')
521end
522guidata(h,handles)
523return
524% ------------------------------------------------------------
525function varargout = contour_Callback(h, eventdata, handles, varargin)
526handles.pltstyle=3;
527if handles.plot==1
528  inplot(h, eventdata, handles, varargin);
529else
530  disp('Push ''PLOT'' button')
531end
532guidata(h,handles)
533return
534% ------------------------------------------------------------
535function varargout = graycontour_Callback(h, eventdata, handles, varargin)
536handles.pltstyle=4;
537if handles.plot==1
538  inplot(h, eventdata, handles, varargin);
539else
540  disp('Push ''PLOT'' button')
541end
542guidata(h,handles)
543return
544% ------------------------------------------------------------
545function varargout = seawifs_Callback(h, eventdata, handles, varargin)
546handles.pltstyle=5;
547if handles.plot==1
548  inplot(h, eventdata, handles, varargin);
549else
550  disp('Push ''PLOT'' button')
551end
552guidata(h,handles)
553return
554% ------------------------------------------------------------
555% end plotbutton style
556% ------------------------------------------------------------
557
558% ------------------------------------------------------------
559% lon min
560% ------------------------------------------------------------
561function varargout = uplonmin_Callback(h, eventdata, handles, varargin)
562% Stub for Callback of the pushbutton 'up longitude minimum'
563handles.lonmin=handles.lonmin + 1;
564if handles.lonmin >= handles.lonmax
565  handles.lonmin=handles.lonmax-0.01;
566end
567set(handles.editlonmin,'String',num2str(round(handles.lonmin*10)/10))
568if handles.plot==1
569  inplot(h, eventdata, handles, varargin);
570else
571  disp('Push ''PLOT'' button')
572end
573guidata(h,handles)
574return
575% ------------------------------------------------------------
576function varargout = downlonmin_Callback(h, eventdata, handles, varargin)
577% Stub for Callback of the pushbutton 'down longitude minimum'
578handles.lonmin=handles.lonmin - 1;
579set(handles.editlonmin,'String',num2str(round(handles.lonmin*10)/10))
580if handles.plot==1
581  inplot(h, eventdata, handles, varargin);
582else
583  disp('Push ''PLOT'' button')
584end
585guidata(h,handles)
586return
587% ------------------------------------------------------------
588function varargout = editlonmin_Callback(h, eventdata, handles, varargin)
589% Stub for Callback of the lonmin text box
590handles.lonmin = str2num(get(handles.editlonmin,'String'));
591if handles.lonmin >= handles.lonmax
592  handles.lonmin=handles.lonmax-0.01;
593  set(handles.editlonmin,'String',num2str(handles.lonmin))
594end
595if handles.plot==1
596  inplot(h, eventdata, handles, varargin);
597else
598  disp('Push ''PLOT'' button')
599end
600guidata(h,handles)
601return
602% ------------------------------------------------------------
603%  end lon min
604% ------------------------------------------------------------
605
606% ------------------------------------------------------------
607% lon max
608% ------------------------------------------------------------
609function varargout = uplonmax_Callback(h, eventdata, handles, varargin)
610% Stub for Callback of the pushbutton 'up longitude maximum'
611handles.lonmax=handles.lonmax + 1;
612set(handles.editlonmax,'String',num2str(round(handles.lonmax*10)/10))
613if handles.plot==1
614  inplot(h, eventdata, handles, varargin);
615else
616  disp('Push ''PLOT'' button')
617end
618guidata(h,handles)
619return
620% ------------------------------------------------------------
621function varargout = downlonmax_Callback(h, eventdata, handles, varargin)
622% Stub for Callback of the pushbutton 'down longitude maximum'
623handles.lonmax=handles.lonmax - 1;
624if handles.lonmax <= handles.lonmin
625  handles.lonmax=handles.lonmin+0.01;
626end
627set(handles.editlonmax,'String',num2str(round(handles.lonmax*10)/10))
628if handles.plot==1
629  inplot(h, eventdata, handles, varargin);
630else
631  disp('Push ''PLOT'' button')
632end
633guidata(h,handles)
634return
635% ------------------------------------------------------------
636function varargout = editlonmax_Callback(h, eventdata, handles, varargin)
637% Stub for Callback of the lonmax text box
638handles.lonmax = str2num(get(handles.editlonmax,'String'));
639if handles.lonmax <= handles.lonmin
640  handles.lonmax=handles.lonmax+0.01;
641  set(handles.editlonmax,'String',num2str(handles.lonmax))
642end
643if handles.plot==1
644  inplot(h, eventdata, handles, varargin);
645else
646  disp('Push ''PLOT'' button')
647end
648guidata(h,handles)
649return
650% ------------------------------------------------------------
651%  end lon max
652% ------------------------------------------------------------
653
654% ------------------------------------------------------------
655% lat min
656% ------------------------------------------------------------
657function varargout = uplatmin_Callback(h, eventdata, handles, varargin)
658% Stub for Callback of the pushbutton 'up latitude minimum'
659handles.latmin=handles.latmin + 1;
660if handles.latmin >= handles.latmax
661  handles.latmin=handles.latmax-0.01;
662end
663set(handles.editlatmin,'String',num2str(round(handles.latmin*10)/10))
664if handles.plot==1
665  inplot(h, eventdata, handles, varargin);
666else
667  disp('Push ''PLOT'' button')
668end
669guidata(h,handles)
670return
671% ------------------------------------------------------------
672function varargout = downlatmin_Callback(h, eventdata, handles, varargin)
673% Stub for Callback of the pushbutton 'down latitude minimum'
674handles.latmin=handles.latmin - 1;
675set(handles.editlatmin,'String',num2str(round(handles.latmin*10)/10))
676if handles.plot==1
677  inplot(h, eventdata, handles, varargin);
678else
679  disp('Push ''PLOT'' button')
680end
681guidata(h,handles)
682return
683% ------------------------------------------------------------
684function varargout = editlatmin_Callback(h, eventdata, handles, varargin)
685% Stub for Callback of the latmin text box
686handles.latmin = str2num(get(handles.editlatmin,'String'));
687if handles.latmin >= handles.latmax
688  handles.latmin=handles.latmax-0.01;
689  set(handles.editlatmin,'String',num2str(handles.latmin))
690end
691if handles.plot==1
692  inplot(h, eventdata, handles, varargin);
693else
694  disp('Push ''PLOT'' button')
695end
696guidata(h,handles)
697return
698% ------------------------------------------------------------
699%  end lat min
700% ------------------------------------------------------------
701
702% ------------------------------------------------------------
703% lat max
704% ------------------------------------------------------------
705function varargout = uplatmax_Callback(h, eventdata, handles, varargin)
706% Stub for Callback of the pushbutton 'up latitude maximum'
707handles.latmax=handles.latmax + 1;
708set(handles.editlatmax,'String',num2str(round(handles.latmax*10)/10))
709if handles.plot==1
710  inplot(h, eventdata, handles, varargin);
711else
712  disp('Push ''PLOT'' button')
713end
714guidata(h,handles)
715return
716% ------------------------------------------------------------
717function varargout = downlatmax_Callback(h, eventdata, handles, varargin)
718% Stub for Callback of the pushbutton 'down latitude maximum'
719handles.latmax=handles.latmax - 1;
720if handles.latmax <= handles.latmin
721  handles.latmax=handles.latmin+0.01;
722end
723set(handles.editlatmax,'String',num2str(round(handles.latmax*10)/10))
724if handles.plot==1
725  inplot(h, eventdata, handles, varargin);
726else
727  disp('Push ''PLOT'' button')
728end
729guidata(h,handles)
730return
731% ------------------------------------------------------------
732function varargout = editlatmax_Callback(h, eventdata, handles, varargin)
733% Stub for Callback of the latmax text box
734handles.latmax = str2num(get(handles.editlatmax,'String'));
735if handles.latmax <= handles.latmin
736  handles.latmax=handles.latmax+0.01;
737  set(handles.editlatmax,'String',num2str(handles.latmax))
738end
739if handles.plot==1
740  inplot(h, eventdata, handles, varargin);
741else
742  disp('Push ''PLOT'' button')
743end
744guidata(h,handles)
745return
746% ------------------------------------------------------------
747%  end lat max
748% ------------------------------------------------------------
749% ------------------------------------------------------------
750%  zoom in
751% ------------------------------------------------------------
752function varargout = zoom_in_Callback(h, eventdata, handles, varargin)
753handles.latmin=handles.latmin + 1;
754handles.latmax=handles.latmax - 1;
755handles.lonmin=handles.lonmin + 1;
756handles.lonmax=handles.lonmax - 1;
757if handles.lonmax <= handles.lonmin
758  handles.lonmax=handles.lonmax+1;
759  handles.lonmin=handles.lonmin-1;
760end
761if handles.latmax <= handles.latmin
762  handles.latmax=handles.latmax+1;
763  handles.latmin=handles.latmin-1;
764end
765set(handles.editlatmin,'String',num2str(round(handles.latmin*10)/10))
766set(handles.editlatmax,'String',num2str(round(handles.latmax*10)/10))
767set(handles.editlonmin,'String',num2str(round(handles.lonmin*10)/10))
768set(handles.editlonmax,'String',num2str(round(handles.lonmax*10)/10))
769if handles.plot==1
770  inplot(h, eventdata, handles, varargin);
771else
772  disp('Push ''PLOT'' button')
773end
774guidata(h,handles)
775return
776% ------------------------------------------------------------
777%  end zoom in
778% ------------------------------------------------------------
779% ------------------------------------------------------------
780%  zoom out
781% ------------------------------------------------------------
782function varargout = zoom_out_Callback(h, eventdata, handles, varargin)
783handles.latmin=handles.latmin - 1;
784handles.latmax=handles.latmax + 1;
785handles.lonmin=handles.lonmin - 1;
786handles.lonmax=handles.lonmax + 1;
787set(handles.editlatmin,'String',num2str(round(handles.latmin*10)/10))
788set(handles.editlatmax,'String',num2str(round(handles.latmax*10)/10))
789set(handles.editlonmin,'String',num2str(round(handles.lonmin*10)/10))
790set(handles.editlonmax,'String',num2str(round(handles.lonmax*10)/10))
791if handles.plot==1
792  inplot(h, eventdata, handles, varargin);
793else
794  disp('Push ''PLOT'' button')
795end
796guidata(h,handles)
797return
798% ------------------------------------------------------------
799%  end zoom out
800% ------------------------------------------------------------
801
802% ------------------------------------------------------------
803% tindex
804% ------------------------------------------------------------
805function varargout = uptindex_Callback(h, eventdata, handles, varargin)
806handles.tindex=handles.tindex + 1;
807if handles.tindex >= handles.T
808  handles.tindex=handles.T;
809end
810set(handles.edittindex,'String',num2str(handles.tindex))
811if handles.plot==1
812  inplot(h, eventdata, handles, varargin);
813else
814  disp('Push ''PLOT'' button')
815end
816guidata(h,handles)
817return
818% ------------------------------------------------------------
819function varargout = downtindex_Callback(h, eventdata, handles, varargin)
820handles.tindex=handles.tindex - 1;
821if handles.tindex <= 1
822  handles.tindex=1;
823end
824set(handles.edittindex,'String',num2str(handles.tindex))
825if handles.plot==1
826  inplot(h, eventdata, handles, varargin);
827else
828  disp('Push ''PLOT'' button')
829end
830guidata(h,handles)
831return
832% ------------------------------------------------------------
833function varargout = edittindex_Callback(h, eventdata, handles, varargin)
834handles.tindex = floor(str2num(get(handles.edittindex,'String')));
835if handles.tindex <= 1
836  handles.tindex=1;
837  set(handles.edittindex,'String',num2str(handles.tindex))
838end
839if handles.tindex >= handles.T
840  handles.tindex=handles.T;
841  set(handles.edittindex,'String',num2str(handles.tindex))
842end
843if handles.plot==1
844  inplot(h, eventdata, handles, varargin);
845else
846  disp('Push ''PLOT'' button')
847end
848guidata(h,handles)
849return
850% ------------------------------------------------------------
851%  end tindex
852% ------------------------------------------------------------
853
854% ------------------------------------------------------------
855% cstep
856% ------------------------------------------------------------
857function varargout = upcstep_Callback(h, eventdata, handles, varargin)
858% Stub for Callback of the pushbutton 'up cstep'
859handles.cstep=handles.cstep + 1;
860set(handles.editcstep,'String',num2str(handles.cstep))
861if handles.plot==1
862  inplot(h, eventdata, handles, varargin);
863else
864  disp('Push ''PLOT'' button')
865end
866guidata(h,handles)
867return
868% ------------------------------------------------------------
869function varargout = downcstep_Callback(h, eventdata, handles, varargin)
870% Stub for Callback of the pushbutton 'down cstep'
871handles.cstep=handles.cstep - 1;
872if handles.cstep <= 0
873  handles.cstep=0;
874end
875set(handles.editcstep,'String',num2str(handles.cstep))
876if handles.plot==1
877  inplot(h, eventdata, handles, varargin);
878else
879  disp('Push ''PLOT'' button')
880end
881guidata(h,handles)
882return
883% ------------------------------------------------------------
884function varargout = editcstep_Callback(h, eventdata, handles, varargin)
885% Stub for Callback of the cstep text box
886handles.cstep = floor(str2num(get(handles.editcstep,'String')));
887if handles.cstep <= 0
888  handles.cstep=0;
889  set(handles.editcstep,'String',num2str(handles.cstep))
890end
891if handles.plot==1
892  inplot(h, eventdata, handles, varargin);
893else
894  disp('Push ''PLOT'' button')
895end
896guidata(h,handles)
897return
898% ------------------------------------------------------------
899%  end cstep
900% ------------------------------------------------------------
901
902% ------------------------------------------------------------
903% cscale
904% ------------------------------------------------------------
905function varargout = slidercscale_Callback(h, eventdata, handles, varargin)
906% Stub for Callback of the cscale slider
907handles.cscale = 100*get(handles.slidercscale,'Value');
908set(handles.editcscale,'String',num2str(handles.cscale,3))
909if handles.plot==1
910  inplot(h, eventdata, handles, varargin);
911else
912  disp('Push ''PLOT'' button')
913end
914guidata(h,handles)
915return
916% ------------------------------------------------------------
917function varargout = editcscale_Callback(h, eventdata, handles, varargin)
918% Stub for Callback of the cscale text box
919handles.cscale = str2num(get(handles.editcscale,'String'));
920if handles.cscale <= 0.01
921  handles.cscale=0.01;
922  set(handles.editcscale,'String',num2str(handles.cscale))
923end
924if handles.cscale >= 100
925  handles.cscale=100;
926  set(handles.editcscale,'String',num2str(handles.cscale))
927end
928set(handles.slidercscale,'Value',handles.cscale/100)
929if handles.plot==1
930  inplot(h, eventdata, handles, varargin);
931else
932  disp('Push ''PLOT'' button')
933end
934guidata(h,handles)
935return
936% ------------------------------------------------------------
937% end cscale
938% ------------------------------------------------------------
939
940% ------------------------------------------------------------
941% cunit
942% ------------------------------------------------------------
943function varargout = upcunit_Callback(h, eventdata, handles, varargin)
944% Stub for Callback of the pushbutton 'up cunit'
945handles.cunit=handles.cunit + 0.01;
946set(handles.editcunit,'String',num2str(handles.cunit))
947if handles.plot==1
948  inplot(h, eventdata, handles, varargin);
949else
950  disp('Push ''PLOT'' button')
951end
952guidata(h,handles)
953return
954% ------------------------------------------------------------
955function varargout = downcunit_Callback(h, eventdata, handles, varargin)
956% Stub for Callback of the pushbutton 'down cunit'
957handles.cunit=handles.cunit - 0.01;
958if handles.cunit <= 0.01
959  handles.cunit=0.01;
960end
961set(handles.editcunit,'String',num2str(handles.cunit))
962if handles.plot==1
963  inplot(h, eventdata, handles, varargin);
964else
965  disp('Push ''PLOT'' button')
966end
967guidata(h,handles)
968return
969% ------------------------------------------------------------
970function varargout = editcunit_Callback(h, eventdata, handles, varargin)
971% Stub for Callback of the cunit text box
972handles.cunit = str2num(get(handles.editcunit,'String'));
973
974if handles.cunit < 0.01
975  handles.cunit=0.01;
976  set(handles.editcunit,'String',num2str(handles.cunit))
977end
978if handles.plot==1
979  inplot(h, eventdata, handles, varargin);
980else
981  disp('Push ''PLOT'' button')
982end
983guidata(h,handles)
984return
985% ------------------------------------------------------------
986%  end cunit
987% ------------------------------------------------------------
988
989% ------------------------------------------------------------
990% ncol
991% ------------------------------------------------------------
992function varargout = upncol_Callback(h, eventdata, handles, varargin)
993% Stub for Callback of the pushbutton 'up ncol'
994handles.ncol=handles.ncol + 1;
995set(handles.editncol,'String',num2str(handles.ncol))
996if handles.plot==1
997  inplot(h, eventdata, handles, varargin);
998else
999  disp('Push ''PLOT'' button')
1000end
1001guidata(h,handles)
1002return
1003% ------------------------------------------------------------
1004function varargout = downncol_Callback(h, eventdata, handles, varargin)
1005% Stub for Callback of the pushbutton 'down ncol'
1006handles.ncol=handles.ncol - 1;
1007if handles.ncol <= 2
1008  handles.ncol=2;
1009end
1010set(handles.editncol,'String',num2str(handles.ncol))
1011if handles.plot==1
1012  inplot(h, eventdata, handles, varargin);
1013else
1014  disp('Push ''PLOT'' button')
1015end
1016guidata(h,handles)
1017return
1018% ------------------------------------------------------------
1019function varargout = editncol_Callback(h, eventdata, handles, varargin)
1020% Stub for Callback of the ncol text box
1021handles.ncol = floor(str2num(get(handles.editncol,'String')));
1022if handles.ncol <= 2
1023  handles.ncol=2;
1024  set(handles.editncol,'String',num2str(handles.ncol))
1025end
1026if handles.plot==1
1027  inplot(h, eventdata, handles, varargin);
1028else
1029  disp('Push ''PLOT'' button')
1030end
1031guidata(h,handles)
1032return
1033% ------------------------------------------------------------
1034%  end ncol
1035% ------------------------------------------------------------
1036
1037% ------------------------------------------------------------
1038%  colmin
1039% ------------------------------------------------------------
1040function varargout = editcolmin_Callback(h, eventdata, handles, varargin)
1041% Stub for Callback of the ncol text box
1042handles.colmin = str2num(get(handles.editcolmin,'String'));
1043if handles.colmin >= handles.colmax
1044  handles.colmin=handles.colmax-0.01;
1045  set(handles.editcolmin,'String',num2str(handles.colmin))
1046end
1047if handles.plot==1
1048  inplot(h, eventdata, handles, varargin);
1049else
1050  disp('Push ''PLOT'' button')
1051end
1052guidata(h,handles)
1053return
1054% ------------------------------------------------------------
1055%  end colmin
1056% ------------------------------------------------------------
1057
1058% ------------------------------------------------------------
1059%  colmax
1060% ------------------------------------------------------------
1061function varargout = editcolmax_Callback(h, eventdata, handles, varargin)
1062% Stub for Callback of the ncol text box
1063handles.colmax = str2num(get(handles.editcolmax,'String'));
1064if handles.colmax <= handles.colmin
1065  handles.colmax=handles.colmin+0.01;
1066  set(handles.editcolmax,'String',num2str(handles.colmax))
1067end
1068if handles.plot==1
1069  inplot(h, eventdata, handles, varargin);
1070else
1071  disp('Push ''PLOT'' button')
1072end
1073guidata(h,handles)
1074return
1075% ------------------------------------------------------------
1076%  end colmax
1077% ------------------------------------------------------------
1078
1079% ------------------------------------------------------------
1080%  resetcolors
1081% ------------------------------------------------------------
1082function varargout = resetcolors_Callback(h, eventdata, handles, varargin)
1083% Stub for Callback of the uicontrol handles.pushbutton25.
1084handles.colmax = [];
1085handles.colmin = [];
1086if handles.plot==1
1087  inplot(h, eventdata, handles, varargin);
1088else
1089  disp('Push ''PLOT'' button')
1090end
1091guidata(h,handles)
1092return
1093% ------------------------------------------------------------
1094%  end resetcolors
1095% ------------------------------------------------------------
1096
1097% ------------------------------------------------------------
1098%  boundary points
1099% ------------------------------------------------------------
1100function varargout = editnptsW_Callback(h, eventdata, handles, varargin)
1101% Stub for Callback of the uicontrol handles.editnptsW.
1102handles.rempts(1)=floor(min([((handles.L-4)/2)  ...
1103                         abs(str2num(get(handles.editnptsW,'String')))]));
1104set(handles.editnptsW,'String',num2str(handles.rempts(1)))
1105if handles.plot==1
1106  inplot(h, eventdata, handles, varargin);
1107else
1108  disp('Push ''PLOT'' button')
1109end
1110guidata(h,handles)
1111return
1112% ------------------------------------------------------------
1113function varargout = editnptsE_Callback(h, eventdata, handles, varargin)
1114% Stub for Callback of the uicontrol handles.editnptsE.
1115handles.rempts(2)=floor(min([((handles.L-4)/2)  ...
1116                         abs(str2num(get(handles.editnptsE,'String')))]));
1117set(handles.editnptsE,'String',num2str(handles.rempts(2)))
1118if handles.plot==1
1119  inplot(h, eventdata, handles, varargin);
1120else
1121  disp('Push ''PLOT'' button')
1122end
1123guidata(h,handles)
1124return
1125% ------------------------------------------------------------
1126function varargout = editnptsS_Callback(h, eventdata, handles, varargin)
1127% Stub for Callback of the uicontrol handles.editnptsS.
1128handles.rempts(3)=floor(min([((handles.M-4)/2)  ...
1129                         abs(str2num(get(handles.editnptsS,'String')))]));
1130set(handles.editnptsS,'String',num2str(handles.rempts(3)))
1131if handles.plot==1
1132  inplot(h, eventdata, handles, varargin);
1133else
1134  disp('Push ''PLOT'' button')
1135end
1136guidata(h,handles)
1137return
1138% ------------------------------------------------------------
1139function varargout = editnptsN_Callback(h, eventdata, handles, varargin)
1140% Stub for Callback of the uicontrol handles.editnptsN.
1141handles.rempts(4)=floor(min([((handles.M-4)/2)  ...
1142                         abs(str2num(get(handles.editnptsN,'String')))]));
1143set(handles.editnptsN,'String',num2str(handles.rempts(4)))
1144if handles.plot==1
1145  inplot(h, eventdata, handles, varargin);
1146else
1147  disp('Push ''PLOT'' button')
1148end
1149guidata(h,handles)
1150return
1151% ------------------------------------------------------------
1152%  end boundary points
1153% ------------------------------------------------------------
1154
1155% ------------------------------------------------------------
1156%  isobath
1157% ------------------------------------------------------------
1158function varargout = editisobath_Callback(h, eventdata, handles, varargin)
1159handles.isobath=get(handles.editisobath,'String');
1160if handles.plot==1
1161  inplot(h, eventdata, handles, varargin);
1162else
1163  disp('Push ''PLOT'' button')
1164end
1165guidata(h,handles)
1166return
1167% ------------------------------------------------------------
1168%  end isobath
1169% ------------------------------------------------------------
1170
1171% ------------------------------------------------------------
1172%  coeff
1173% ------------------------------------------------------------
1174function varargout = editcoef_Callback(h, eventdata, handles, varargin)
1175handles.coef=str2num(get(handles.editcoef,'String'));
1176guidata(h,handles)
1177resetcolors_Callback(h, eventdata, handles, varargin);
1178return
1179% ------------------------------------------------------------
1180%  end coeff
1181% ------------------------------------------------------------
1182
1183% ------------------------------------------------------------
1184%  Number of embedded levels
1185% ------------------------------------------------------------
1186function varargout = editnlev_Callback(h, eventdata, handles, varargin)
1187handles.gridlevs=str2num(get(handles.editnlev,'String'));
1188if handles.plot==1
1189  inplot(h, eventdata, handles, varargin);
1190else
1191  disp('Push ''PLOT'' button')
1192end
1193guidata(h,handles)
1194return
1195% ------------------------------------------------------------
1196%  end number of embedded levels
1197% ------------------------------------------------------------
1198
1199% ------------------------------------------------------------
1200% ------------------------------------------------------------
1201% ------------------------------------------------------------
1202% ------------------------------------------------------------
1203%  Hold plot in the gui
1204% ------------------------------------------------------------
1205function holdplot_Callback(h, eventdata, handles, varargin)
1206handles.plot=0;
1207guidata(h,handles)
1208return
1209% ------------------------------------------------------------
1210%  Restore plot in the gui
1211% ------------------------------------------------------------
1212function plotbutton_Callback(h, eventdata, handles, varargin)
1213handles.plot=1;
1214guidata(h,handles)
1215inplot(h, eventdata, handles, varargin);
1216return
1217% ------------------------------------------------------------
1218%  Do a plotbutton in the GUI
1219% ------------------------------------------------------------
1220function varargout = inplot(h, eventdata, handles, varargin)
1221horizslice(handles.hisfile,handles.vname,handles.tindex,...
1222           handles.vlevel,handles.rempts,handles.coef,handles.gridlevs,...
1223           handles.colmin,handles.colmax,handles.lonmin,handles.lonmax,...
1224           handles.latmin,handles.latmax,handles.ncol,...
1225           handles.pltstyle,handles.isobath,handles.cstep,...
1226           handles.cscale,handles.cunit,handles.coastfile,...
1227           handles.townfile,handles.gridfile,h,handles,...
1228           handles.Yorig)
1229return
1230% ------------------------------------------------------------
1231%  Do a plotbutton outside of the GUI
1232% ------------------------------------------------------------
1233function varargout = outplot_Callback(h, eventdata, handles, varargin)
1234figure(1)
1235horizslice(handles.hisfile,handles.vname,handles.tindex,...
1236           handles.vlevel,handles.rempts,handles.coef,handles.gridlevs,...
1237           handles.colmin,handles.colmax,handles.lonmin,handles.lonmax,...
1238           handles.latmin,handles.latmax,handles.ncol,...
1239           handles.pltstyle,handles.isobath,handles.cstep,...
1240           handles.cscale,handles.cunit,handles.coastfile,...
1241           handles.townfile,handles.gridfile,[],[],...
1242           handles.Yorig)
1243return
1244% ------------------------------------------------------------
1245%  Print
1246% ------------------------------------------------------------
1247function varargout = print_Callback(h, eventdata, handles, varargin)
1248outplot_Callback(h, eventdata, handles, varargin)
1249[day,month,year,imonth,thedate]=...
1250get_date(handles.hisfile,handles.tindex,handles.Yorig);
1251if handles.vname(1)=='*'
1252  fname=[handles.vname(2:3),...
1253         num2str(day),month,num2str(year),...
1254         '_z',num2str(handles.vlevel),'.eps'];
1255else
1256  fname=[handles.vname,num2str(day),month,num2str(year),...
1257         '_z',num2str(handles.vlevel),'.eps'];
1258end
1259disp(['EPS file : ',fname])
1260eval(['print -painter -depsc2 ',fname])
1261return
1262% ------------------------------------------------------------
1263% ------------------------------------------------------------
1264
1265% ------------------------------------------------------------
1266% ------------------------------------------------------------
1267%    Animation
1268% ------------------------------------------------------------
1269% ------------------------------------------------------------
1270function varargout = animation_Callback(h, eventdata, handles, varargin)
1271animation(handles)
1272
1273return
1274function varargout = editskipanim_Callback(h, eventdata, handles, varargin)
1275handles.skipanim=floor(abs(str2num(get(handles.editskipanim,'String'))));
1276set(handles.editskipanim,'String',num2str(handles.skipanim))
1277guidata(h,handles)
1278return
1279% ------------------------------------------------------------
1280% ------------------------------------------------------------
1281
1282% ------------------------------------------------------------
1283% --------------------- SPECIAL PLOTS ------------------------
1284% ------------------------------------------------------------
1285% ------------------------------------------------------------
1286%    Vertical section
1287% ------------------------------------------------------------
1288function varargout = vsection_Callback(h, eventdata, handles, varargin)
1289[lon1,lat1,lon2,lat2]=get_mouse(handles);
1290figure(1)
1291vertslice(handles.hisfile,handles.gridfile,[lon1 lon2],[lat1 lat2],...
1292          handles.vname,handles.tindex,handles.coef,[],[],...
1293          handles.ncol,[],[],[],[],handles.pltstyle,[],[],...
1294          handles.Yorig)
1295return
1296% ------------------------------------------------------------
1297%    Hovmuller diagram
1298% ------------------------------------------------------------
1299function varargout = hovmull_Callback(h, eventdata, handles, varargin)
1300[lon1,lat1,lon2,lat2]=get_mouse(handles);
1301figure(1)
1302hovmuller(handles.hisfile,handles.gridfile,[lon1 lon2],[lat1 lat2],...
1303          handles.vname,[1:handles.T],handles.vlevel,handles.coef,...
1304          [],[],handles.ncol,[],[],[],[],handles.pltstyle)
1305return
1306% ------------------------------------------------------------
1307%    Time series
1308% ------------------------------------------------------------
1309function varargout = tseries_Callback(h, eventdata, handles, varargin)
1310[lon0,lat0]=get_mouse_1(handles);
1311figure(1)
1312time_series(handles.hisfile,handles.gridfile,lon0,lat0,...
1313            handles.vname,handles.vlevel,handles.coef)
1314return
1315% ------------------------------------------------------------
1316%    Vertical profile
1317% ------------------------------------------------------------
1318function varargout = vprofile_Callback(h, eventdata, handles, varargin)
1319[lon0,lat0]=get_mouse_1(handles);
1320figure(1)
1321vert_profile(handles.hisfile,handles.gridfile,lon0,lat0,...
1322             handles.vname,handles.tindex,handles.coef,...
1323             handles.Yorig)
1324return
1325% ------------------------------------------------------------
1326%    View bathymetry
1327% ------------------------------------------------------------
1328function varargout = viewtopo_Callback(h, eventdata, handles, varargin)
1329handles.vname='h';
1330handles.vlevel=0;
1331if handles.plot==1
1332  inplot(h, eventdata, handles, varargin);
1333else
1334  disp('Push ''PLOT'' button')
1335end
1336guidata(h,handles)
1337return
1338% ------------------------------------------------------------
1339% ------------------------------------------------------------
1340
1341% ------------------------------------------------------------
1342%  Year origin
1343% ------------------------------------------------------------
1344function edit_Yorig_Callback(h, eventdata, handles, varargin)
1345handles.Yorig=str2num(get(handles.edit_Yorig,'String'));
1346if handles.plot==1
1347  inplot(h, eventdata, handles, varargin);
1348else
1349  disp('Push ''PLOT'' button')
1350end
1351guidata(h,handles)
1352% ------------------------------------------------------------
1353% ------------------------------------------------------------
1354
1355
1356
1357% ------------------------------------------------------------
1358% ------------------------------------------------------------
1359% ------------------------------------------------------------
1360% ------------------------------------------------------------
1361% ------------------------------------------------------------
1362% ---------------------------   fin   ------------------------
1363% ------------------------------------------------------------
1364% ------------------------------------------------------------
1365
1366
1367
Note: See TracBrowser for help on using the repository browser.