⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dddrag.m

📁 这个是时间序列分析的可视化工具
💻 M
字号:
function dddrag
%dddrag     Implement the dragging functionality of dragndrop interface

source = gcbo;
hFig = get(source,'Parent');    %This restricts the application to uicontrols and axes
%Check the parent.  If it's an axes, not a figure, we do a little
%manipulation.  This allows you to drag an axes by grabbing one of it's
%lines.
if strcmp(get(hFig,'Type'),'axes')
    source = hFig;              %Assign the parent axes to source
    hFig = get(hFig,'Parent');
end;


%% Let user drag ...
%dragrect works with rect specified in pixels.  Odd, since it returns
%values in the host figure's units.
un = get(source ,'Units');
set(source,'Units','pixels');
rect = [get(source,'Position')];
finalrect = dragrect(rect);
set(source,'Units',un);

%For testing only - move the block to the drop location
%set(gcbo,'Position',finalrect(1,:));        %Main button

%% Figure out where we landed
current_object = hittest;   % Tells us what object we were over when letting go

%% Special case handling for current_object
% We get messed up if current_object is an axes child, since it won't be on
% the list of valid targets.  Replace current_object with the parent
if strcmp(get(get(current_object,'Parent'),'type'),'axes')
    current_object = get(current_object,'Parent');
end;

%% Get the dragndrop object from the figure
dd = getappdata(hFig,'dragndrop');          %Get object
Drops = get(dd,'DropHandles');              % Handles to drop targets

%% What did we hit?
hit_ind = find(current_object == Drops);    % Index into Drops of target we hit

%% Did we hit a drop target? If not, exit
if isempty(hit_ind)
    notvalid    % Indicate to user that this wasn't valid.
    return
end;

% Is our drop target valid for this source?
DropValidDrag = get(dd,'DropValidDrag');
validdrag = DropValidDrag{hit_ind};         % Valid drag sources for this target

if ~ismember(source,validdrag)
    notvalid
    return
end;

%Evaluate callback
DropCallbacks = get(dd,'DropCallbacks');
feval(DropCallbacks{hit_ind},source,Drops(hit_ind));


function notvalid
% Indicate to the user that the source can't be dropped here.
ptr = get(gcf,'Pointer');
P = no_icon;
set(gcf,'Pointer','custom');
set(gcf,'PointerShapeCData',P,'PointerShapeHotSpot',[9 9]);
pause(.2)
set(gcf,'Pointer',ptr);


function P = no_icon;
% Create icon for mouse pointer indicating target isn't valid
P=[ 2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2
    2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2
    2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2
    2     2     2     2     2     2     2     1     1     2     2     2     1     2     2     2
    2     2     2     2     2     1     1     2     2     1     1     1     2     2     2     2
    2     2     2     2     1     2     2     2     2     2     1     1     2     2     2     2
    2     2     2     2     1     2     2     2     2     1     2     1     2     2     2     2
    2     2     2     1     2     2     2     2     1     2     2     2     1     2     2     2
    2     2     2     1     2     2     2     1     2     2     2     2     1     2     2     2
    2     2     2     2     1     2     1     2     2     2     2     1     2     2     2     2
    2     2     2     2     1     1     2     2     2     2     2     1     2     2     2     2
    2     2     2     2     1     1     1     2     2     1     1     2     2     2     2     2
    2     2     2     1     2     2     2     1     1     2     2     2     2     2     2     2
    2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2
    2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2
    2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -