📄 diaopensegy.m
字号:
function varargout = DIAOpenSEGY(varargin)% DIAOPENSEGY Application M-file for DIAOpenSEGY.fig% FIG = DIAOPENSEGY launch DIAOpenSEGY GUI.% DIAOPENSEGY('callback_name', ...) invoke the named callback.% Last Modified by GUIDE v2.0 12-Jun-2002 10:25:58if ((nargin == 0)|isstruct(varargin{1})) % LAUNCH GUI fig = openfig(mfilename,'reuse'); % Use system color scheme for figure: set(fig,'Color',get(0,'defaultUicontrolBackgroundColor')); % Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig); guidata(fig, handles); data = guihandles(fig); % initialize it to contain handles if nargin==0; data.JUMP.jump=5; data.JUMP.enable=1; data.TRACEHEADER.name='offset'; data.TRACEHEADER.min=1; data.TRACEHEADER.max=1e+9; data.TRACEHEADER.enable=0; data.TIMERANGE.min=1; data.TIMERANGE.max=5; data.TIMERANGE.enable=0; data.pathname=''; data.filename=''; guidata(fig,data); else data.JUMP=varargin{1}.JUMP; data.TRACEHEADER=varargin{1}.TRACEHEADER; data.TIMERANGE=varargin{1}.TIMERANGE; if isfield(varargin{1},'pathname');data.pathname=varargin{1}.pathname;end if isfield(varargin{1},'filename');data.filename=varargin{1}.filename;end end guidata(fig,data); set(fig,'HandleVisibility','On') DIAOpenSEGY('actionUpdateGUI',fig,handles) set(fig,'HandleVisibility','CallBack') % Wait for callbacks to run and window to be dismissed: uiwait(fig); if nargout > 0 data=guidata(fig); SEGYFILE.JUMP=data.JUMP; SEGYFILE.TRACEHEADER=data.TRACEHEADER; SEGYFILE.TIMERANGE=data.TIMERANGE; if isfield(data,'SegyHeader') SEGYFILE.SegyHeader=data.SegyHeader; end if isfield(data,'filename'),SEGYFILE.filename=data.filename;end if isfield(data,'pathname'),SEGYFILE.pathname=data.pathname;end varargout{1} = SEGYFILE; end closereq elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK try if (nargout) [varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard else feval(varargin{:}); % FEVAL switchyard end catch disp(lasterr); endend%| ABOUT CALLBACKS:%| GUIDE automatically appends subfunction prototypes to this file, and %| sets objects' callback properties to call them through the FEVAL %| switchyard above. This comment describes that mechanism.%|%| Each callback subfunction declaration has the following form:%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)%|%| The subfunction name is composed using the object's Tag and the %| callback type separated by '_', e.g. 'slider2_Callback',%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.%|%| H is the callback object's handle (obtained using GCBO).%|%| EVENTDATA is empty, but reserved for future use.%|%| HANDLES is a structure containing handles of components in GUI using%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This%| structure is created at GUI startup using GUIHANDLES and stored in%| the figure's application data using GUIDATA. A copy of the structure%| is passed to each callback. You can store additional information in%| this structure at GUI startup, and you can change the structure%| during callbacks. Call guidata(h, handles) after changing your%| copy to replace the stored original so that subsequent callbacks see%| the updates. Type "help guihandles" and "help guidata" for more%| information.%|%| VARARGIN contains any extra arguments you have passed to the%| callback. Specify the extra arguments by editing the callback%| property in the inspector. By default, GUIDE sets the property to:%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))%| Add any extra arguments after the last argument, before the final%| closing parenthesis.function actionUpdateGUI(h,handles)data=guidata(h);% RESET FILEMAME,PATHNAME if FILE DOES NOT EXISTif isfield(data,'filename') if exist([data.pathname,data.filename])~=2 data=rmfield(data,'filename'); data=rmfield(data,'pathname'); endend % CHECK THAT A FILENAME I SET, and disbale if not.if isfield(data,'filename'), cbEnable='on'; set(handles.eFilename,'String',[data.pathname,data.filename]);else cbEnable='off'; set(handles.eFilename,'String','');endset(findobj('style','checkbox'),'enable',cbEnable)% JUMPset(handles.cbJump,'Value',data.JUMP.enable);data.Jump.value=get(handles.cbJump,'Value');if ((get(handles.cbJump,'Value')==1)&(isfield(data,'filename'))), enableJump='on'; data.JUMP.enable=1;else, enableJump='off'; data.JUMP.enable=0;endset(handles.eJump,'Enable',enableJump) set(handles.eJump,'String',data.JUMP.jump) % TraceHeaderset(handles.cbTraceHeader,'Value',data.TRACEHEADER.enable);data.TraceHeader.value=get(handles.cbTraceHeader,'Value');if ((get(handles.cbTraceHeader,'Value')==1)&(isfield(data,'filename'))), enableTraceHeader='on'; data.TRACEHEADER.enable=1;else, enableTraceHeader='off'; data.TRACEHEADER.enable=0;endhnames=get(handles.popTraceHeader,'string');selected=get(handles.popTraceHeader,'value');for i=1:length(hnames) if strcmp(hnames{i},data.TRACEHEADER.name), set(handles.popTraceHeader,'Value',i); endendset(handles.popTraceHeader,'Enable',enableTraceHeader) set(handles.eTraceHeaderMin,'Enable',enableTraceHeader) set(handles.eTraceHeaderMin,'String',data.TRACEHEADER.min)set(handles.eTraceHeaderMax,'Enable',enableTraceHeader) set(handles.eTraceHeaderMax,'String',data.TRACEHEADER.max) % TimeRangeset(handles.cbTimeRange,'Value',data.TIMERANGE.enable);data.TimeRange.value=get(handles.cbTimeRange,'Value');if ((get(handles.cbTimeRange,'Value')==1)&(isfield(data,'filename'))), enableTimeRange='on'; data.TIMERANGE.enable=1;else, data.TIMERANGE.enable=0; enableTimeRange='off'; endset(handles.eTimeRangeMin,'Enable',enableTimeRange) set(handles.eTimeRangeMin,'String',data.TIMERANGE.min)set(handles.eTimeRangeMax,'Enable',enableTimeRange) set(handles.eTimeRangeMax,'String',data.TIMERANGE.max)guidata(h,data)% --------------------------------------------------------------------function varargout = eFilename_Callback(h, eventdata, handles, varargin)% --------------------------------------------------------------------function varargout = pbSelectFile_Callback(h, eventdata, handles, varargin)data=guidata(h);[filename, pathname] = uigetfile('*.su;*.SU;*.sgy;*.SGY;*.seg*;*.SEGY', 'Pick a SEGY or SU file'); if isequal(filename,0)|isequal(pathname,0) disp('File not found') return else disp(['File ', pathname, filename, ' found']) set(handles.eFilename,'String',[pathname,filename]) data.pathname=pathname; data.filename=filename; endguidata(h,data)actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = cbJump_Callback(h, eventdata, handles, varargin)data=guidata(h);data.JUMP.enable=get(h,'Value');guidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = eJump_Callback(h, eventdata, handles, varargin)data=guidata(h);if ~isempty(str2num(get(h,'String')));data.JUMP.jump=str2num(get(h,'String'));endguidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = cbTraceHeader_Callback(h, eventdata, handles, varargin)data=guidata(h);data.TRACEHEADER.enable=get(h,'Value');guidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = popTraceHeader_Callback(h, eventdata, handles, varargin)data=guidata(h);hnames=get(h,'string');selected=get(h,'value');data.TRACEHEADER.name=hnames{selected};guidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = eTraceHeaderMin_Callback(h, eventdata, handles, varargin)data=guidata(h);if ~isempty(str2num(get(h,'String')));data.TRACEHEADER.min=str2num(get(h,'String'));endif data.TRACEHEADER.min>data.TRACEHEADER.max data.TRACEHEADER.min=data.TRACEHEADER.max;endguidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = eTraceHeaderMax_Callback(h, eventdata, handles, varargin)data=guidata(h);if ~isempty(str2num(get(h,'String')));data.TRACEHEADER.max=str2num(get(h,'String'));endif data.TRACEHEADER.max<data.TRACEHEADER.min data.TRACEHEADER.max=data.TRACEHEADER.min;endguidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = cbTimeRange_Callback(h, eventdata, handles, varargin)data=guidata(h);data.TIMERANGE.enable=get(h,'Value');guidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = eTimeRangeMin_Callback(h, eventdata, handles, varargin)data=guidata(h);if ~isempty(str2num(get(h,'String')));data.TIMERANGE.min=str2num(get(h,'String'));endif data.TIMERANGE.min>data.TIMERANGE.max; data.TIMERANGE.min=data.TIMERANGE.max;endguidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = eTimeRangeMax_Callback(h, eventdata, handles, varargin)data=guidata(h);if ~isempty(str2num(get(h,'String')));data.TIMERANGE.max=str2num(get(h,'String'));endif data.TIMERANGE.max<data.TIMERANGE.min data.TIMERANGE.max=data.TIMERANGE.min;endguidata(h,data);actionUpdateGUI(h,handles)% --------------------------------------------------------------------function varargout = pbReadSegy_Callback(h, eventdata, handles, varargin)uiresume% --------------------------------------------------------------------function varargout = pbCancel_Callback(h, eventdata, handles, varargin)data=guidata(h);if isfield(data,'filename'), data=rmfield(data,'filename'); endif isfield(data,'pathname'), data=rmfield(data,'pathname'); endguidata(h,data);uiresume% --------------------------------------------------------------------function varargout = pbGUIEditSegyHeader_Callback(h, eventdata, handles, varargin)data=guidata(h);% GET SEGY HEDER FROM FILE, UNLESS WE ALLREADY GOT ITif isfield(data,'SegyHeader')==0 data.SegyHeader=GetSegyHeader([data.pathname,data.filename]);end% EDIT THE SEGY HEADERdata.SegyHeader=GUIEditSegyHeader(data.SegyHeader);guidata(h,data);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -