📄 doevent.m
字号:
function theResult = doevent(self, theCommand, theMessage)% seagrid/doevent -- Event handler for "seagrid" object.% doevent(self, theCommand, theMessage) processes theCommand% and theMessage on behalf of self, a "seagrid" object. % Copyright (C) 1999 Dr. Charles R. Denham, ZYDECO.% All Rights Reserved.% Disclosure without explicit written consent from the% copyright owner does not constitute publication. % Version of 07-Apr-1999 20:44:42.% Updated 23-Apr-2001 16:00:02.if nargin < 1, help(mfilename), return, endif nargin < 2, theCommand = ''; endif nargin < 3, theMessage = ''; endswitch lower(theCommand)case 'callback' if ~isempty(gcbo) switch get(gcbo, 'Type') case {'uimenu', 'uicontrol'} theCommand = get(gcbo, 'Tag'); end endotherwiseendtheCommand = translate(self, theCommand);if nargout > 0, theResult = self; endif verbose(self) disp([' ## ' mfilename ' ' theCommand])endtheFigure = ps(self);switch lower(theCommand)case 'buttondownfcn' switch get(gcbo, 'Type') case 'surface' theMaskTool = psget(self, 'itsMaskTool'); if isequal(get(gcbo, 'Tag'), 'masktool') feval('grid2mask', theCommand); result = feval('grid2mask', 'mask'); theMask = isnan(result); theMask = ~~theMask; theLand = theMask; theWater = ~theLand; psset(self, 'itsMask', theMask) psset(self, 'itsWater', theWater) psset(self, 'itsLand', theLand) bathy = psget(self, 'itsGriddedBathymetry'); end endcase {'deletedepths', 'setalltozero'} theMaskTool = psget(self, 'itsMaskTool'); if any(theMaskTool) domasktool(self) % Delete it. end psset(self, 'itsGriddedBathymetry', []) psset(self, 'itsBathymetryFlag', 0) h = findobj(gcf, 'Type', 'uimenu', 'Tag', 'Grid Depths'); set(h, 'Checked', 'off') doupdate(self, 1)case 'deletemask' theMaskTool = psget(self, 'itsMaskTool'); if any(theMaskTool) domasktool(self) % Delete it. end psset(self, 'itsMask', []) psset(self, 'itsLand', []) psset(self, 'itsWater', []) psset(self, 'itsMaskingFlag', 0) psset(self, 'itsMaskToolFlag', 0) h = findobj(gcf, 'Type', 'uimenu', 'Tag', 'Land Mask'); set(h, 'Checked', 'off') doupdate(self, 1)case {'depths', 'landmask', 'depthsandlandmask'} switch lower(theCommand) case 'depths' psset(self, 'itsBathymetryFlag', 1) case 'landmask' psset(self, 'itsMaskingFlag', 1) case 'depthsandlandmask' psset(self, 'itsBathymetryFlag', 1) psset(self, 'itsMaskingFlag', 1) end psset(self, 'itsMaskToolFlag', 1) needsUpdate = 1; doupdate(self, needsUpdate)case 'settoallland' theMask = psget(self, 'itsMask'); if any(any(theMask)) theMaskTool = psget(self, 'itsMaskTool'); if any(theMaskTool), domasktool(self), end theMask = psget(self, 'itsMask'); theMask = ~zeros(size(theMask)); % All Land. theLand = theMask; theWater = ~theLand; psset(self, 'itsMask', theMask) psset(self, 'itsLand', theLand) psset(self, 'itsWater', theWater) psset(self, 'itsMaskingFlag', 0) h = findobj(theFigure, 'Type', 'uimenu', 'Label', 'Land Mask'); set(h, 'Checked', 'off') doupdate(self, 0) endcase 'settoallwater' theMask = psget(self, 'itsMask'); if any(any(theMask)) theMaskTool = psget(self, 'itsMaskTool'); if any(theMaskTool), domasktool(self), end theMask = psget(self, 'itsMask'); theMask = ~~zeros(size(theMask)); % All water. theLand = theMask; theWater = ~theLand; psset(self, 'itsMask', theMask) psset(self, 'itsLand', theLand) psset(self, 'itsWater', theWater) psset(self, 'itsMaskingFlag', 0) h = findobj(theFigure, 'Type', 'uimenu', 'Label', 'Land Mask'); set(h, 'Checked', 'off') doupdate(self, 0) endcase {'corner', 'down', 'motion', 'up'} getboundary(self, theCommand, theMessage)case 'help' dohelp(self)case 'aboutseagrid' help_about(self)case 'bugs' help_bugs(self)case 'depthsdisplay' help_depths(self)case 'converttoecom' help_ecom(self)case 'converttoroms' help_roms(self)% case 'converttoscrum'% help_scrum(self)case 'futurework' help_future(self)case 'general' help_general(self)case 'gettingstarted' help_start(self)case 'wwwhomepage' sgwebcase 'loading' help_loading(self)case 'mathematics' help_math(self)case 'masking' help_masking(self)case 'menus' help_menus(self)case 'orthogonalitydisplay' help_orthogonality(self)case 'points' help_points(self)case 'private' help_private(self)case 'projection' help_projection(self)case 'saving' help_saving(self)case 'setupdialog' help_setup_dialog(self)case 'spacing' help_spacing(self)case 'units' help_units(self)case 'updating' help_updating(self)case 'version' version(self)case 'warranty' help_warranty(self)case 'wwwhomepage' web(self)case 'zooming' help_zooming(self)case 'setup' dosetup(self) doupdate(self)case 'new' seagridcase 'coastline' h = findobj('Type', 'line', 'Tag', 'coastline'); showhide(h)case {'bathymetry', 'bathymetricpoints'} h = findobj('Type', 'line', 'Tag', 'bathymetry'); showhide(h)case 'depths' h = findobj('Type', 'line', 'Tag', 'griddepths'); showhide(h)case 'mask' h = findobj('Type', 'line', 'Tag', 'landmask'); showhide(h)case 'coastlinefile' [theFile, thePath] = uigetfile('*.*', 'Select a Coastline File:'); if ~any(theFile), return, end if thePath(end) ~= filesep, thePath = [thePath filesep]; end theCoastlineFile = [thePath theFile]; psset(self, 'itsCoastlineFile', theCoastlineFile) getcoastline(self) getlines(self) doticks(self)case 'bathymetryfile' [theFile, thePath] = uigetfile('*.*', 'Select a Bathymetry File:'); if ~any(theFile), return, end if thePath(end) ~= filesep, thePath = [thePath filesep]; end theBathymetryFile = [thePath theFile]; psset(self, 'itsBathymetryFile', theBathymetryFile) getbathymetry(self)case 'seagridfile' [theFile, thePath] = uigetfile('*.mat', 'Select SeaGrid Input:'); if ~any(theFile), return, end if thePath(end) ~= filesep, thePath = [thePath filesep]; end theSeaGridInputFile = [thePath theFile]; psset(self, 'itsSeaGridInputFile', theSeaGridInputFile) doload(self, theSeaGridInputFile) thePoints = psget(self, 'itsPoints'); if length(thePoints) >= 4 set(gca, 'ButtonDownFcn', '', 'UserData', []) endcase 'boundaryfile' [theFile, thePath] = uigetfile('*.*', 'Select a Boundary File:'); if ~any(theFile), return, end if thePath(end) ~= filesep, thePath = [thePath filesep]; end theBoundaryFile = [thePath theFile]; psset(self, 'itsBoundaryFile', theBoundaryFile) thePoints = load(theBoundaryFile);% Corrected on 01/14/2000 to project loaded boundary.% Mike Whitney <whitney@neward.cms.udel.edu>. lon = thePoints(:,1); lat = thePoints(:,2); theProjection = psget(self, 'itsProjection'); switch theProjection % Needs cleaning up. case {'none', 'Geographic'} theProjection = 'Geographic'; x = lon; y = lat; otherwise sg_proj(theProjection) [x, y] = sg_ll2xy(lon, lat); x = real(x); y = real(y); end thePoints(:,1) = x; thePoints(:,2) = y; psset(self, 'itsPoints', thePoints) doupdate(self, 1)case 'boundaryfile_XXX' [theFile, thePath] = uigetfile('*.*', 'Select a Boundary File:'); if ~any(theFile), return, end if thePath(end) ~= filesep, thePath = [thePath filesep]; end theBoundaryFile = [thePath theFile]; psset(self, 'itsBoundaryFile', theBoundaryFile) thePoints = load(theBoundaryFile); psset(self, 'itsPoints', thePoints) doupdate(self, 1)case 'ecomoutput_XXX' if (0) [theFile, thePath] = uiputfile('ecom.out', 'Save As Ecom File:'); if ~any(theFile), return, end if thePath(end) ~= filesep, thePath = [thePath filesep]; end theEcomFile = [thePath theFile]; psset(self, 'itsEcomFile', theEcomFile) endcase 'scrumoutput_XXX' if (0) [theFile, thePath] = uiputfile('scrum.out', 'Save As Scrum File:'); if ~any(theFile), return, end if thePath(end) ~= filesep, thePath = [thePath filesep]; end theScrumFile = [thePath theFile]; psset(self, 'itsScrumFile', theScrumFile) endcase 'save' theSeaGridOutputFile = psget(self, 'itsSeaGridOutputFile'); dosave(self, theSeaGridOutputFile)case 'saveas' dosave(self)case 'saveasjpeg' figure(ps(self)) fig2jpegcase 'reverttosaved' theSeaGridOutputFile = psget(self, 'itsSeaGridOutputFile'); doload(self, theSeaGridOutputFile) case 'controlpoints' % Show control-points. h = psget(self, 'itsSpacers'); set([h{1} h{2}], 'Visible', 'off') h = psget(self, 'itsPoints'); set(h, 'Visible', 'on') psset(self, 'itsPointFlag', 1) psset(self, 'itsSpacerFlag', 0) h = findobj('Type', 'line', 'Tag', 'edge');% theButtonDownFcn = 'psevent(ps(theFigure), ''down'')'; theButtonDownFcn = 'psevent down'; if any(h), set(h, 'ButtonDownFcn', theButtonDownFcn), end case 'spacers' % Show spacers. h = psget(self, 'itsPoints'); set(h, 'Visible', 'off') h = psget(self, 'itsSpacers'); h = [h{1}(2:end-1) h{2}(2:end-1)]; % Ends not visible. set(h, 'Visible', 'on') psset(self, 'itsPointFlag', 0) psset(self, 'itsSpacerFlag', 1) h = findobj('Type', 'line', 'Tag', 'edge'); theButtonDownFcn = ''; if any(h), set(h, 'ButtonDownFcn', theButtonDownFcn), endcase 'spacercount' % Enter spacer counts. getspacers(self)case 'spacingsetup' % Enter spacing functions. getspacings(self) case 'orthogonality' theOrthogonalityFlag = psget(self, 'itsOrthogonalityFlag'); if isempty(theOrthogonalityFlag), theOrthogonalityFlag = 0; end switch theOrthogonalityFlag case 0 theOrthogonalityFlag = 1; set(gcbo, 'Checked', 'on') otherwise theOrthogonalityFlag = 0; set(gcbo, 'Checked', 'off') end psset(self, 'itsOrthogonalityFlag', theOrthogonalityFlag) doupdate(self)case 'coriolis-XXX' disp([' ## ' theCommand ' ' theMessage])case 'roll' doroll(self)case 'axesequal' axis equalcase 'margin' zoomsafe(0.9)case 'graticule' switch psget(self, 'itsGraticule') case 'on' psset(self, 'itsGraticule', 'off') set(gcbo, 'Checked', 'off') case 'off' psset(self, 'itsGraticule', 'on') set(gcbo, 'Checked', 'on') otherwise end dograticule(self)case 'menubar' switch get(theFigure, 'MenuBar') case 'figure' set(theFigure, 'MenuBar', 'none') otherwise set(theFigure, 'MenuBar', 'figure') endcase 'zoomin' dograticule(self, 'off') zoomsafe(2) doticks(self)case 'zoomout' dograticule(self, 'off') zoomsafe(0.5) doticks(self)case 'nozoom' dograticule(self, 'off') zoomsafe out doticks(self)case 'flat' shading flat refreshcase 'interp' shading interpcase 'print' printsafe(gcf, '-v')case 'degrees' psset(self, 'itsMapUnits', 'degrees') doticks(self)case 'kilometers' psset(self, 'itsMapUnits', 'kilometers') doticks(self)case 'projected' psset(self, 'itsMapUnits', 'projected') doticks(self)case 'showdetails' assignin('base', 'ans', self) evalin('base', 'ans')case 'verbose' switch get(gcbo, 'Checked') case 'on' verbose(self, ~~0) set(gcbo, 'Checked', 'off') otherwise verbose(self, ~~1) set(gcbo, 'Checked', 'on') endcase 'refreshscreen' refresh(ps(self))case 'update' doupdate(self, 1)case 'resizefcn' doticks(self)case {'closerequestfcn', 'quit'} doquit(self)otherwise doevent(super(self), theCommand, theMessage) % Very important.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -