Home > functions > gui > preAnalysis > trial_extractor > vb_timeseries_viewer_callback.m

vb_timeseries_viewer_callback

PURPOSE ^

Callback function for timeseries viewer

SYNOPSIS ^

function [obj] = vb_timeseries_viewer_callback(obj, hObj)

DESCRIPTION ^

 Callback function for timeseries viewer
 [USAGE]
    [obj] = vb_timeseries_viewer_callback(obj, H);
 [IN]
     obj : vb_timeseries_viewer object
    hObj : handle of action component.
 [OUT]
     obj : vb_timeseries_viewer object

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [obj] = vb_timeseries_viewer_callback(obj, hObj)
0002 % Callback function for timeseries viewer
0003 % [USAGE]
0004 %    [obj] = vb_timeseries_viewer_callback(obj, H);
0005 % [IN]
0006 %     obj : vb_timeseries_viewer object
0007 %    hObj : handle of action component.
0008 % [OUT]
0009 %     obj : vb_timeseries_viewer object
0010 %
0011 % Copyright (C) 2011, ATR All Rights Reserved.
0012 % License : New BSD License(see VBMEG_LICENSE.txt)
0013 
0014 %
0015 % --- Previous check
0016 %
0017 if ~exist('obj', 'var')
0018     error('obj is a required parameter.');
0019 end
0020 if ~exist('hObj', 'var')
0021     error('hObj is a required parameter.');
0022 end
0023 
0024 %
0025 % --- Main Procedure
0026 %
0027 get(hObj, 'Tag'); % debug
0028 
0029 obj.event_number = obj.event_number + 1;
0030 
0031 H   = obj.H;
0032 
0033 Nsample = obj.Nsample;
0034 freq    = obj.freq;
0035 
0036 switch(hObj)
0037     case H.timeseries_slider
0038         obj = vb_timeseries_viewer_update_display_time_range(obj);
0039     case H.timepoint_current_text
0040         obj = vb_timeseries_viewer_specify_display_time(obj);
0041     case H.Yscale_slider
0042         % Get slider position
0043         val = 1-get(hObj, 'Value');
0044         window_len = val * 100;
0045         if window_len >= obj.total_time_sec
0046             window_len = obj.total_time_sec;
0047         end
0048         obj.window_len = window_len;
0049         % update range
0050         obj = vb_timeseries_viewer_specify_display_time(obj);
0051     case H.make_preview_file_push
0052 
0053         h = msgbox('Now creating preview file....', 'Please wait');
0054         bh = findall(h, 'Style', 'pushbutton');
0055         set(bh, 'Visible', 'off'); drawnow; pause(0.1);
0056         % Get measurement type('MEG' or 'EEG')
0057         MEGinfo = vb_continuous_file_get_meg_info(obj.org_file);
0058         measurement = vb_info_get_measurement(MEGinfo);
0059 
0060         % Set preview file to view measurement data
0061         if strcmpi(measurement, 'MEG')
0062             ext = '.meg.mat';
0063             func_name = 'vb_megfile_filter_ch_data';
0064             fieldname = 'new_meg';
0065         elseif strcmpi(measurement, 'EEG')
0066             ext = '.eeg.mat';
0067             func_name = 'vb_eegfile_filter_ch_data';
0068             fieldname = 'new_eeg';
0069         end
0070         
0071         org_file = vb_continuous_file_get_filename(obj.org_file);
0072         [base_path, base_filename] = vb_get_file_parts(strrep(org_file, ext, ''));
0073 
0074         preview_filename = [base_filename, '_50Hz', ext];
0075         proc_spec.(fieldname) = preview_filename;
0076         proc_spec.parm.fsamp = 50;
0077         try
0078             feval(func_name, org_file, proc_spec);
0079         catch
0080             errordlg(...
0081               ['Failed to make preview file:  ' base_path, '/', ...
0082                preview_filename, ...
0083                sprintf(...
0084                 '\nCheck directory permission.')], ...
0085               'Preview file');
0086         end
0087         if ishandle(h), delete(h); end
0088 
0089         preview_file = [base_path, '/', preview_filename];
0090         if exist(preview_file, 'file') == 2
0091             obj.preview_file = vb_continuous_file_new(preview_file, obj.data_ch_list);
0092             obj = vb_timeseries_viewer_plot_measurement_data(obj);
0093             % update display time range
0094             obj = vb_timeseries_viewer_update_display_time_range(obj);
0095         end
0096     case {H.ylimit_high_edit, H.ylimit_low_edit}
0097         if isnan(str2double(get(hObj, 'String')))
0098             errordlg('Invalid value was specified(Not a number). please input again.', 'Range');
0099             set(hObj, 'String', '');
0100             return;
0101         end
0102         high = str2double(get(H.ylimit_high_edit, 'String'));
0103         low  = str2double(get(H.ylimit_low_edit, 'String'));
0104         if ~isnan(high) && ~isnan(low)
0105             ylim(H.data_axes, [low, high]);
0106             range = ylim(H.data_axes);
0107             range = range * 0.98;
0108             Ydata = [range(1), range(1), range(2), range(2)];
0109             for k=1:length(obj.trial_patch_handles)
0110                 set(obj.trial_patch_handles(k), 'Ydata', Ydata);
0111             end
0112         end
0113     case {H.ylimit_trigger_high_edit, H.ylimit_trigger_low_edit}
0114         if isnan(str2double(get(hObj, 'String')))
0115             errordlg('Invalid value was specified(Not a number). please input again.', 'Range');
0116             set(hObj, 'String', '');
0117             return;
0118         end
0119         high = str2double(get(H.ylimit_trigger_high_edit, 'String'));
0120         low  = str2double(get(H.ylimit_trigger_low_edit, 'String'));
0121         ylim(H.trigger_axes, [low, high]);
0122         if ~isnan(high) && ~isnan(low)
0123             range = ylim(H.trigger_axes);
0124             Ydata = [range(1), range(1), range(2), range(2)];
0125             for k=1:length(obj.trigger_onset_patches_handle)
0126                 set(obj.trigger_onset_patches_handle(k), 'Ydata', Ydata);
0127             end
0128         end
0129     case {H.scale_minus_push, H.scale_plus_push}
0130         val  = get(H.Yscale_slider, 'Value');
0131         step = get(H.Yscale_slider, 'SliderStep');
0132         max_val = get(H.Yscale_slider, 'Max');
0133         min_val = get(H.Yscale_slider, 'Min');
0134         if hObj == H.scale_minus_push
0135             val = val - step(1);
0136             if val < min_val, val = min_val; end
0137         else
0138             val = val + step(1);
0139             if val > max_val, val = max_val; end
0140         end
0141         set(H.Yscale_slider, 'Value', val);
0142 
0143         % update range
0144         obj = vb_timeseries_viewer_callback(obj, H.Yscale_slider);
0145     case H.trigger_yrange_fix_check
0146         if get(hObj, 'Value')
0147             % Fix y range
0148             high = str2double(get(H.ylimit_trigger_high_edit, 'String'));
0149             low  = str2double(get(H.ylimit_trigger_low_edit, 'String'));
0150             % input current range to box
0151             if isnan(high) || isnan(low)
0152                 range = ylim(H.trigger_axes);
0153                 set(H.ylimit_trigger_low_edit, 'String', num2str(range(1)));
0154                 set(H.ylimit_trigger_high_edit, 'String', num2str(range(2)));
0155             end
0156             set(H.trigger_axes, 'YLimMode', 'manual');
0157         else
0158             set(H.trigger_axes, 'YLimMode', 'auto');
0159         end
0160     case H.trigger_min_max_value_push
0161         parm.min_value = obj.trigger_min;
0162         parm.max_value = obj.trigger_max;
0163         vb_edit_struct(parm, 'min/max value of trigger data');
0164     case H.trigger_axes
0165         point = get(hObj, 'currentpoint');
0166         vb_text_area('Y value', num2str(point(1,2)));
0167     otherwise
0168         if strcmp(get(hObj, 'Tag'), 'ext_trig_line')
0169             % clicked point
0170             point = get(H.trigger_axes, 'currentpoint');
0171             h = vb_text_area('Y value', num2str(point(1,2)));
0172         end
0173 
0174 end
0175 
0176 pre = guidata(obj.figure);
0177 if pre.event_number < obj.event_number
0178     guidata(obj.figure, obj);
0179 else
0180     obj = pre;
0181 end

Generated on Tue 27-Aug-2013 11:46:04 by m2html © 2005