classdef GUI_CanvasMouseEvents < matlab.apps.AppBase
properties (Access = public)
CanvasMouseEvents matlab.ui.Figure
ax_2 matlab.ui.control.UIAxes
ax_1 matlab.ui.control.UIAxes
end
properties (Access = private)
mouseEvents = [];
canvas1 = [];
canvas2 = [];
end
methods (Access = private)
function Canvas1_SizeChangedFcn(app)
if ~isempty(app.canvas1)
left = -1; right = 11;
bottom = -1; top = 5;
app.canvas1.fit2view([left, bottom, right, top]);
end
end
function Canvas2_SizeChangedFcn(app)
if ~isempty(app.canvas2)
left = -1; right = 11;
bottom = -1; top = 5;
app.canvas2.fit2view([left, bottom, right, top]);
end
end
function deleteCallback(app)
choice = questdlg('Are you sure you want to exit?',...
'Exit','Exit','Cancel','Cancel');
switch choice
case 'Cancel'
return
end
app.delete();
end
end
methods (Access = private)
function startupFcn(app)
app.canvas1 = MyCanvas_2D(app.ax_1,app.CanvasMouseEvents);
app.canvas2 = MyCanvas_2D(app.ax_2,app.CanvasMouseEvents);
app.canvas1.Ruler(false); app.canvas1.Grid(false);
app.canvas2.Ruler(false); app.canvas2.Grid(false);
app.ax_1.Toolbar.Visible = 'off';
app.ax_1.Interactions = [];
app.ax_2.Toolbar.Visible = 'off';
app.ax_2.Interactions = [];
left = -1; right = 11;
bottom = -1; top = 5;
app.canvas1.fit2view([left, bottom, right, top]);
app.canvas2.fit2view([left, bottom, right, top]);
app.mouseEvents = MouseEvents(app.CanvasMouseEvents,app.canvas1);
app.CanvasMouseEvents.CloseRequestFcn = app.createCallbackFcn(@deleteCallback, false);
end
function CanvasMouseEventsSizeChanged(app, event)
win_pos = app.CanvasMouseEvents.Position;
win_width = win_pos(3);
win_height = win_pos(4);
canvas1_x = 8;
canvas1_y = (win_height / 2) + 4;
canvas1_width = win_width - 16;
canvas1_height = (win_height / 2) - 16;
app.ax_1.Position = [canvas1_x canvas1_y canvas1_width canvas1_height];
canvas2_x = 8;
canvas2_y = 8;
canvas2_width = win_width - 16;
canvas2_height = (win_height / 2) - 16;
app.ax_2.Position = [canvas2_x canvas2_y canvas2_width canvas2_height];
app.Canvas1_SizeChangedFcn();
app.Canvas2_SizeChangedFcn();
end
end
methods (Access = private)
function createComponents(app)
app.CanvasMouseEvents = uifigure('Visible', 'off');
app.CanvasMouseEvents.AutoResizeChildren = 'off';
app.CanvasMouseEvents.Color = [0 0 0];
app.CanvasMouseEvents.Position = [100 100 642 573];
app.CanvasMouseEvents.Name = 'CanvasMouseEvents';
app.CanvasMouseEvents.SizeChangedFcn = createCallbackFcn(app, @CanvasMouseEventsSizeChanged, true);
app.ax_1 = uiaxes(app.CanvasMouseEvents);
app.ax_1.Toolbar.Visible = 'off';
app.ax_1.XColor = 'none';
app.ax_1.XTickLabelRotationMode = 'manual';
app.ax_1.YColor = 'none';
app.ax_1.YTickLabelRotationMode = 'manual';
app.ax_1.ZTickLabelRotationMode = 'manual';
app.ax_1.Position = [16 283 602 278];
app.ax_2 = uiaxes(app.CanvasMouseEvents);
app.ax_2.Toolbar.Visible = 'off';
app.ax_2.XColor = 'none';
app.ax_2.XTickLabelRotationMode = 'manual';
app.ax_2.YColor = 'none';
app.ax_2.YTickLabelRotationMode = 'manual';
app.ax_2.ZTickLabelRotationMode = 'manual';
app.ax_2.Position = [16 6 602 278];
app.CanvasMouseEvents.Visible = 'on';
end
end
methods (Access = public)
function app = GUI_CanvasMouseEvents
createComponents(app)
registerApp(app, app.CanvasMouseEvents)
runStartupFcn(app, @startupFcn)
if nargout == 0
clear app
end
end
function delete(app)
delete(app.CanvasMouseEvents)
end
end
end