source: trunk/src/activate.m @ 627

Last change on this file since 627 was 627, checked in by sommeria, 11 years ago

a few bugs repaired, display of the local mouse indication in a separate window

File size: 2.8 KB
Line 
1% 'activate': emulate the mouse selection of a GUI element, for demo
2%-----------------------------------------------------------------------
3% function activate(FigTag,PanelTag,ObjectTag,Value)
4%
5% INPUT:
6% FigTag: tag name of the GUI figure (e.g; 'uvmat')
7% PanelTag: tag name of a uipanel containing the element, =[] if no panel
8% ObjectTag: tag name of the element
9% Position=[x y] coordinates set for the mouse relative to the object (default =[] corresponds to the centre [0.5 0.5]
10% Value: value set to the element, for instance string to select on a menu
11
12function activate(FigTag,PanelTag,ObjectTag,Position,Value)
13hFig=findobj(allchild(0),'tag',FigTag);
14set(0,'CurrentFigure',hFig)
15% xx=double(get(hFig,'CurrentCharacter')); %get the keyboard character
16% if isequal(xx,27) % key escape
17%     pause
18% end
19handles=guidata(hFig);
20unit_0=get(0,'Unit');
21unit=get(hFig,'Unit');
22set(hFig,'Unit',unit_0)
23FramePos=get(hFig,'Position');% position of the figure
24set(hFig,'Unit',unit)
25if isempty(PanelTag)
26    hPanel=hFig;
27    hObject=handles.(ObjectTag);
28else
29    hPanel=findobj(hFig,'tag',PanelTag);
30    unit=get(hPanel,'Unit');
31    set(hPanel,'Unit',unit_0)
32    FramePos=FramePos+get(hPanel,'Position');
33    set(hPanel,'Unit',unit)
34end
35if ~exist('Position','var')
36    Position=[];
37end
38if isempty(Position)
39    Position=[0.5 0.5];
40end
41if ~exist('Value','var')
42    Value=[];
43end
44hObject=handles.(ObjectTag);
45if isempty(hObject)
46    disp(['Object' ObjectTag ' not found'])
47else
48    if exist('Value','var')
49        if isempty(PanelTag)
50            Param.(ObjectTag)=Value;
51        else
52            Param.(PanelTag).(ObjectTag)=Value;
53        end
54        errormsg=fill_GUI(Param,hFig);
55        if ~isempty(errormsg)
56            disp(errormsg)
57        end
58%         if isequal(get(handles.(ObjectTag),'Style'),'pushbutton')
59%             set(handles.(ObjectTag),'Value',Value)
60%         end
61    end
62    unit=get(hObject,'Unit');
63    set(hObject,'Unit',unit_0);
64    Pos=get(hObject,'Position');
65    set(hObject,'Unit',unit)
66    CurrentPointerLoc=get(0,'PointerLocation');
67    NewPointerLoc=FramePos(1:2)+Pos(1:2)+Position.*Pos(3:4);
68    set(0,'PointerLocation',FramePos(1:2)+Pos(1:2)+Position.*Pos(3:4)) 
69    for ipos=1:10
70        set(0,'PointerLocation',CurrentPointerLoc+0.1*ipos*(NewPointerLoc-CurrentPointerLoc))
71        pause(0.2)
72    end
73    if strcmp(get(hObject,'Style'),'axes')
74        mouse_down(hFig,[])
75        mouse_up(hFig,[])
76    else
77    BackgroundColor=get(hObject,'BackgroundColor');
78    set(hObject,'BackgroundColor',[1 1 0])% mark activation of the object
79    drawnow
80    feval(FigTag,[ObjectTag '_Callback'],hObject,[],handles);
81        pause(2)
82    set(hObject,'BackgroundColor',BackgroundColor)
83    end
84end
85%%%%text display
86if isempty(Value)
87disp(['mouse select ' ObjectTag ' in ' FigTag ' ' PanelTag])
88else
89    disp(['set ' Value ' in ' FigTag ' ' PanelTag ' ' ObjectTag])
90end
Note: See TracBrowser for help on using the repository browser.