0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 function pan4import(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3 % ========================================================================
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4 % =============== Panel to import data from the workspace ================
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 % ========================================================================
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 % $Id: pan4import.m,v 1.8 2008/08/30 12:27:08 nicola Exp $
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 global LTPDAinvar
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 ImportObjList='';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 UpdateListbox();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 currPanel = varargin{1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 panelDimens = get(currPanel, 'Position');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 backColor = get(currPanel, 'BackgroundColor');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 DataPanPos = [20 panelDimens(4)-470 panelDimens(3)-40 450];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 hDataPanel = uipanel(...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 'Title','Data currently in the workspace',...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 'BackgroundColor',[1,1,1],...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22 'FontSize',7,...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 'Units','pixels',...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 'Position',DataPanPos);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 nbuttons = 3;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 buttonWidth = (DataPanPos(3)-10*(nbuttons+1))/nbuttons;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 buttonPos = [10 DataPanPos(4)-45 buttonWidth 25];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 hPlotButton = uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Plot','FontSize',8,'Visible','on','Callback','','Style','pushbutton','enable','off');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 buttonPos(1) = buttonPos(1)+buttonWidth+10;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31 hRefreshButton = uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Refresh','FontSize',8,'Visible','on','Callback',@UpdateListbox,'Style','pushbutton','enable','on');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 buttonPos(1) = buttonPos(1)+buttonWidth+10;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33 hImportButton = uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Import','FontSize',8,'Visible','on','Callback',@ImportCallback,'Style','pushbutton','enable','on');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 % buttonPos(1) = buttonPos(1)+buttonWidth+10;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 % hExploreButton = uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Explore','FontSize',8,'Visible','on','UserData',ImportObjList,'Callback',@hExploreButtonCallback,'Style','pushbutton','enable','off');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36 % buttonPos(1) = buttonPos(1)+buttonWidth+10;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 % hSaveOutButton = uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Save','FontSize',8,'Visible','on','Enable','off','Callback',@SaveOutputCallback,'Style','pushbutton');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 % clear nbuttons buttonWidth buttonPos
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 textWidth = (DataPanPos(3)-10*(3))/2;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 textPos = [10 DataPanPos(4)-80 textWidth 25];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 uicontrol('Parent',hDataPanel,'BackgroundColor',get(hDataPanel,'BackgroundColor'),'HorizontalAlignment','center','Position',textPos,'String','Objects:','FontName','Times New Roman','FontSize',8,'FontWeight','normal','Visible','on','Style','text');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 clear textWidth textPos
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 nlists = 2;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 listWidth = (DataPanPos(3)-10*(nlists+1))/nlists;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 listPos = [10 DataPanPos(4)-315 listWidth 240];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 ImportObjList = uicontrol('Parent',hDataPanel,'BackgroundColor',[0.95,0.95,0.95],'HorizontalAlignment','center','Position',listPos,'String',listInput,'Value',[],'Max',10,'Min',0,'FontSize',8,'FontWeight','normal','Visible','on','Enable','on','Tag','ImportObjList','Callback',@hImportListCallback,'Style','listbox');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 listPos(1) = listPos(1)+listWidth+10;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 % Info panel:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 uicontrol('Parent',hDataPanel,'BackgroundColor',[0.94,0.94,1],'Style','text','HorizontalAlignment', 'left','Fontsize', 7,'Units','pixels','Position',listPos,'Tag','infoPanel');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 hImportListCallback(ImportObjList,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 clear DataPanPos nlists listWidth listPos
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 %%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59 function UpdateListbox(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 % Updates the listbox of objects in the current workspace
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 listInput = evalin('base','who');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 for i=numel(listInput):-1:1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 obj = evalin('base',listInput{i});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 if ~isa(obj,'ltpda_uo') || isa(obj,'cell'), listInput(i)=[]; end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 if isempty(listInput)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 listInput = 'No LTPDA objects currently in the MATLAB workspace';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71 set(findobj('Tag', 'ImportObjList'),'Enable', 'off','Value',[],'String',listInput)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73 set(findobj('Tag', 'ImportObjList'),'Enable', 'on','Value',[],'String',listInput)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 %%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81 function hImportListCallback(hObject, varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82 % This callback is called whenever the user click upon one of the
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 % objects in the workspace
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85 if ~isempty(varargin{1}) && varargin{1}==1 && ~isa(listInput,'char')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86 % This is a call only to update the info panel
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 87 val = get(hObject, 'Value');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 88 if length(val) == 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 89 objLines = get(hObject, 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 90 if isempty(objLines)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 91 objtxt = '';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 92 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 93 objname = objLines{val};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 94 obj = evalin('base',objname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 95 objtxt = display(obj);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 96 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 97 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 98 objtxt = '';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 99 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 100 set(findobj('Tag', 'infoPanel'), 'String', objtxt)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 101 elseif ~isa(listInput,'char')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 102 if strcmp(get(gcf,'SelectionType'),'normal')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 103 val = get(hObject, 'Value');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 104 if length(val) == 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 105 objLines = get(hObject, 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 106 objname = objLines{val};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 107 obj = evalin('base',objname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 108 objtxt = display(obj);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 109 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 110 objtxt = '';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 111 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 112 set(findobj('Tag', 'infoPanel'), 'String', objtxt)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 113 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 114 if strcmp(get(gcf,'SelectionType'),'open') && ~isempty(get(hObject, 'String'))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 115 val = get(hObject, 'Value');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 116 objLines = get(hObject, 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 117 objname = objLines{val};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 118 obj = evalin('base',objname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 119 try %#ok<ALIGN>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 120 figure
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 121 plot(obj);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 122 catch
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 123 close(gcf)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 124 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 125 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 126 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 127
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 128 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 129 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 130
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 131 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 132 function ImportCallback(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 133 % This callback is called whenever the user click the 'Import' button
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 134
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 135 objList = findobj('Tag', 'ImportObjList');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 136 val = get(objList, 'Value');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 137 objLines = get(objList, 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 138 for i = 1:numel(val)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 139 objname = objLines{val(i)};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 140 obj = evalin('base',objname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 141 nobj = numel(obj);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 142 if nobj>1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 143 for jj=1:nobj
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 144 objj = {obj(jj) , 0};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 145 LTPDAinvar = [LTPDAinvar;objj];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 146 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 147 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 148 obj = {obj , 0};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 149 LTPDAinvar = [LTPDAinvar;obj];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 150 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 151 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 152 set(findobj('Tag', 'ImportObjList'),'Value',[])
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 153
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 154 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 155 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 156
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 157 %%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 158 end