Global Data Structure

%
% Fields of the global data structure, sometimes called "gdata", 
% sometimes called "rslice_object", sometimes called "rslice_data".
%
%     default_depth:
%         Depth (positive downward) in meters at which to take the 
%         first horizontal slice.
%     dim_type:
%         One of these possibilities.
%             'YX':  no vertical or temporal dimension.  Like 'h'.
%             'TYX':  no vertical dimension, like 'u_bar'.
%             'TZYX':  a full four dimensional dataset, like 'temp'.
%     hslice_on_sigma:
%         A flag.  If set, then the current variable should be sliced
%         along the sigma coordinate (much faster) than the other
%         case, which is slicing along a constant depth.
%     first_redraw:
%         There are a few things that are done differently if we've
%         already rendered a slice once, so we keep track of this 
%         thru a flag.  One of these things is setting the CLim 
%         property for the first rendering.
%     input_type:
%         Can be either 'file', 'directory', 'url', or 'derived'.
%         'file' and 'directory' mean that the data is being retrieved
%         from files on the local filesystem.  'url' means that an
%         opendap server is the data source.  'derived' means that
%         the data source exists only in the current matlab session.
%     interpolation_method:
%         Can be one of 
%             'griddata_lite':  
%                 A variation on the griddata algorithm.
%             'nearest':  
%                 Nearest neighbor
%         This controls how the slice values are interpolated from
%         the dataset.
%     max_num_timesteps:
%         The number of discrete time steps available for perusal in 
%         the current dataset.  This value is echoed in the rslice 
%         figure window.
%     ncfile_index:
%         A 1-based index into "ncfile_list".
%     ncfile_list:
%         A cell array.
%
%         switch ( input_type )
%         case 'derived'
%             Empty?
%         case 'directory'
%             Could be many values, possibly as many as there are files
%             within the intended directory.
%         case 'file'
%             Just one value, the full pathname of a single NetCDF 
%             file.
%         case 'url'
%             Just one value, the URL of the opendap dataset.
%         end
%
%     ncfile_start_index, ncfile_stop_index:
%         An array whose size is the same as ncfile_list, so only in
%         the case of 'directory' is it anything other than a single
%         value, which would be 0.  In the case of 'directory', then
%         each element corresponds to a netcdf file, specifically
%         where the first and last time step in that file fall into 
%         place in the aggregated time series.  For example, suppose 
%         that there are three netcdf files in the current directory.
%         File A has 5 timesteps, file B has 7 timesteps, and file C
%         has 9 timestep.  Then the values of the ncfile_start_index
%         would be [0 5 12] and the value of the ncfile_stop_index
%         would be [4 11 20].
%
%
%     rslice_grid:
%         A structure with five subfields.  These subfields are
%       
%         coordsys:
%             Either 'geographic' (if the input files have lat_rho
%             and lon_rho) or 'xy' otherwise (x_rho and y_rho).
%         roms_grid:
%             Structure as returned by m-file "roms_get_grid.m"
%         x, y:
%             Structures with metadata about the horizontal and 
%             vertical coordinates referenced by coordsys above.
%         angle:
%             Structure with metadata about the ROMS variable "angle".
%             If the coordsys is 'xy', then this is ignored.
%     sigma_index:
%         If slicing along the sigma coordinate, this index specifies
%         the index of the sigma coordinate.  The default is 0.  It
%         can be changed to xxx by typing "s=xxx" in the depth edit
%         box.
%     timestep:
%         The current time index.
%     varinfo:
%         A structure of information about the current variable.
%     varname:
%         The name of the dataset currently being displayed in the 
%         rslice figure window.
%     velocity:
%         A structure with two fields, 'u_velocity' and 'v_velocity'.
%         Each of these fields is in turn a structure of metadata about
%         their respective velocity dataset.
%     verbose:
%         This is a flag that can be set from the command line.  If
%         set to 1, then rslice will print out a bit more information
%         during its course of operation than otherwise.  It currently
%         is not well implemented, though.
%     vslice_data:
%         A matlab structure that is only present when a vertical slice
%         has been defined.  This structure has five fields.
%             vx, vz: 
%                 Arrays that define the horizontal and vertical 
%                 directions (vertical meaning down) along the vertical
%                 slice. 
%             vdata:
%                 Data from vertical slice variable at the locations
%                 defined by vx, vz.
%             control_pt_x, control_pt_y:
%                 Control points that defined the slice.  
%     z_type:
%         Either 's_rho' or 's_w', which are names of the sigma depth
%         coordinates.  's_w' is typically one more than 's_r'.  It
%         affects how the depths are calculated.
%
% GUI Controls    
%     close_menu:
%         A menu item under "File".  This closes out the current rslice
%         object.
%     default_depth:
%         If no depth is provided, then this is the depth we assume to
%         slice at.
%     depth_edit:
%         An editable text widget that controls either the depth or the
%         sigma coordinate at which the current data set is sliced. 
%         The default is sigma coordiate, which is designated with an
%         "s=" string prepended onto the numeric value.  Getting rid
%         of the prefix makes rslice interpret the value as a depth.
%     fastforward_pushbutton:
%         A pushbutton which will start an animation by continually 
%         advancing the time step until the end is reached.
%     file_menu:
%         A drop down menu that exposes the usual File options one
%         would expect in a File menu, such as open and close.
%     hslice_figure:
%         This is the same as the rslice field.  Don't use 
%         "hslice_figure".
%     horizontal_slice_axis:
%         This is the main axis that displays during rslice operations.
%     horizontal_slice_title:
%         Lost in space?
%     horizontal_slice_title2:
%         A bad name for a title string on the main rslice window.
%     horizontal_cmax_edit:
%         An editable text widget that displays the current maximum 
%         value of the rslice window color range.  This can be changed
%         manually, or by changing variables.
%     horizontal_cmin_edit:
%         An editable text widget that displays the current minimum 
%         value of the rslice window color range.  This can be changed
%         manually, or by changing variables.
%     horizontal_cmax_text:
%         A read-only text widget that just displays "CMax".  It refers
%         to the maximum value of the color range.
%     horizontal_cmn_text:
%         A read-only text widget that just displays "CMin".  It refers
%         to the minimal value of the color range.
%     hvoc_figure:
%         A handle for the horizontal velocity overlay control window.
%     max_sigma_level:
%         Number of sigma coordinates possible in the current variable.
%         For something like 'h', this is 0.
%     new_directory:
%         A menu item under the "File" menu.  A native matlab directory
%         browser window pops up, allowing the user to navigate to 
%         another directory source of ROMS files.
%     new_menu:
%         A menu item under the "File" menu.  A native matlab file
%         browser window pops up, allowing the user to navigate to a 
%         new ROMS file.
%     new_url_menu:
%         A menu item under the "File" menu.  A crude popup appears
%         that allows the user to type in a new URL to load.  Did I
%         say that it was crude?
%     original_xlim, original_ylim:
%         These are the original XLim and YLim properties of the first
%         rendering of a dataset.  They are used for "zoom back".
%     other_menu:
%         Drop down menu that contains other miscellaneous menu items.
%         Maybe "Miscellaneous" would have been a better name.
%     output:
%         Currently this is the same as the rslice field.  Don't use
%         this.
%     rslice:
%         This is the return parameter for the rslice m-file.  Thru 
%         this handle, all of the other gui widgets and fields can
%         be accessed.
%     rewind_pushbutton:
%         A pushbutton on the main rslice figure window which will 
%         start an animation by continually advancing the time step
%         BACKWARDS by one discrete unit until the beginning is 
%         reached.
%     sigma_index:
%         An index into the sigma layer coordinate.  0 is the bottom
%         layer in roms.
%     step_back_pushbutton:
%         A pushbutton which will advance the current time BACKWARDS by
%         one discrete time step.
%     step_forward_pushbutton:
%         A pushbutton which will advance the current time by one 
%         discrete time step.
%     stop_animation_button:
%         A pushbutton whose only job is to toggle a flag.  If this
%         is done during the middle of an animation (such as the
%         time step continually advancing), then the animation
%         will be broken.
%     timestep_edit:
%         An editable text widget that displays the current time index
%         (not time value) of the ROMS dataset.  It is zero-based.
%     timestep_text:
%         A text widget that displays the value of the current time 
%         step in human readable terms.
%     variable_menu:
%         A drop down menu that exposes the list of ROMS variables that
%         the user can choose to display.
%     velocity_overlay_tag:
%         A menu item under "Other".  This initiates a popup figure
%         window that the user will control to specify how the 
%         velocity overlay arrows will look.
%     vslice_figure:
%         A handle for the vertical slice figure window.
%     vslice_menu:
%         A menu item under "Other".  This initiates a vertical slice
%         operation on the dataset being currently displayed in the
%         rslice figure window.
%     vslice_vel_figure:
%         A handle for the vertical slice velocity figure window.
%     vslice_velocity_menu:
%         A menu item under "Other".  This initiates a vertical slice
%         operation on the vertical velocity fields, regardless of
%         what the current dataset it.  If there are no velocity 
%         fields, then this menu item is grayed out.
%     zoom_back_menu:
%         A menu item under "Other".  This "unzooms" by bringing the
%         field of view back to the original state.
%     zoom_menu:
%         A menu item under "Other".  This enables the usual zooming
%         feature, which is normally turned off.
%         
%