diff m-toolbox/m/gui/gltpda/pan4import.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/m/gui/gltpda/pan4import.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,158 @@
+function pan4import(varargin)
+
+% ========================================================================
+% =============== Panel to import data from the workspace ================
+% ========================================================================
+%
+%  $Id: pan4import.m,v 1.8 2008/08/30 12:27:08 nicola Exp $
+
+global LTPDAinvar
+
+ImportObjList='';
+UpdateListbox();
+
+currPanel   = varargin{1};
+panelDimens = get(currPanel, 'Position');
+backColor   = get(currPanel, 'BackgroundColor');
+
+    DataPanPos   = [20 panelDimens(4)-470 panelDimens(3)-40 450];
+  hDataPanel    =  uipanel(...
+                      'Title','Data currently in the workspace',...
+                      'BackgroundColor',[1,1,1],...
+                      'FontSize',7,...
+                      'Units','pixels',...
+                      'Position',DataPanPos);
+   
+    nbuttons    = 3;
+    buttonWidth = (DataPanPos(3)-10*(nbuttons+1))/nbuttons;
+    buttonPos   = [10 DataPanPos(4)-45 buttonWidth 25];
+  hPlotButton   =   uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Plot','FontSize',8,'Visible','on','Callback','','Style','pushbutton','enable','off');
+    buttonPos(1) = buttonPos(1)+buttonWidth+10;
+  hRefreshButton =   uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Refresh','FontSize',8,'Visible','on','Callback',@UpdateListbox,'Style','pushbutton','enable','on');
+    buttonPos(1) = buttonPos(1)+buttonWidth+10;
+  hImportButton =   uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Import','FontSize',8,'Visible','on','Callback',@ImportCallback,'Style','pushbutton','enable','on');
+%     buttonPos(1) = buttonPos(1)+buttonWidth+10;
+%   hExploreButton =  uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Explore','FontSize',8,'Visible','on','UserData',ImportObjList,'Callback',@hExploreButtonCallback,'Style','pushbutton','enable','off');
+%     buttonPos(1) = buttonPos(1)+buttonWidth+10;
+%   hSaveOutButton =  uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Save','FontSize',8,'Visible','on','Enable','off','Callback',@SaveOutputCallback,'Style','pushbutton');
+%     clear nbuttons buttonWidth buttonPos
+
+
+    textWidth = (DataPanPos(3)-10*(3))/2;
+    textPos   = [10 DataPanPos(4)-80 textWidth 25];
+  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');
+    clear textWidth textPos
+
+    nlists    = 2;
+    listWidth = (DataPanPos(3)-10*(nlists+1))/nlists;
+    listPos   = [10 DataPanPos(4)-315 listWidth 240];
+  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');
+    listPos(1) = listPos(1)+listWidth+10;
+  % Info panel:
+  uicontrol('Parent',hDataPanel,'BackgroundColor',[0.94,0.94,1],'Style','text','HorizontalAlignment', 'left','Fontsize', 7,'Units','pixels','Position',listPos,'Tag','infoPanel');
+    hImportListCallback(ImportObjList,1)
+    clear DataPanPos nlists listWidth listPos
+
+        
+%%
+    %----------------------------------------------------------------------
+    function UpdateListbox(varargin)
+    % Updates the listbox of objects in the current workspace
+    
+        listInput = evalin('base','who');
+        
+        for i=numel(listInput):-1:1
+            obj = evalin('base',listInput{i});
+            if ~isa(obj,'ltpda_uo') || isa(obj,'cell'), listInput(i)=[]; end
+        end
+        
+        if isempty(listInput)
+            listInput = 'No LTPDA objects currently in the MATLAB workspace';
+            set(findobj('Tag', 'ImportObjList'),'Enable', 'off','Value',[],'String',listInput)
+        else
+            set(findobj('Tag', 'ImportObjList'),'Enable', 'on','Value',[],'String',listInput)
+        end
+        
+    end
+    %----------------------------------------------------------------------
+
+%%
+    %----------------------------------------------------------------------
+    function hImportListCallback(hObject, varargin)
+    % This callback is called whenever the user click upon one of the
+    % objects in the workspace
+    
+        if ~isempty(varargin{1}) && varargin{1}==1 && ~isa(listInput,'char')
+              % This is a call only to update the info panel
+                val = get(hObject, 'Value');
+                if length(val) == 1
+                    objLines = get(hObject, 'String');
+                    if isempty(objLines)
+                        objtxt = '';
+                    else
+                        objname = objLines{val};
+                        obj = evalin('base',objname);
+                        objtxt = display(obj);
+                    end
+                else
+                    objtxt = '';
+                end
+                set(findobj('Tag', 'infoPanel'), 'String', objtxt)
+        elseif ~isa(listInput,'char')
+            if strcmp(get(gcf,'SelectionType'),'normal')
+                val = get(hObject, 'Value');
+                if length(val) == 1
+                    objLines = get(hObject, 'String');
+                    objname = objLines{val};
+                    obj = evalin('base',objname);
+                    objtxt = display(obj);
+                else
+                    objtxt = '';
+                end
+                set(findobj('Tag', 'infoPanel'), 'String', objtxt)
+            end
+            if strcmp(get(gcf,'SelectionType'),'open') && ~isempty(get(hObject, 'String'))
+                val = get(hObject, 'Value');
+                objLines = get(hObject, 'String');
+                objname = objLines{val};
+                obj = evalin('base',objname);
+                try %#ok<ALIGN>
+                    figure
+                    plot(obj);
+                catch
+                    close(gcf)
+                end
+            end
+        end
+         
+    end
+    %----------------------------------------------------------------------
+
+    %----------------------------------------------------------------------
+    function ImportCallback(varargin)
+    % This callback is called whenever the user click the 'Import' button
+
+        objList = findobj('Tag', 'ImportObjList');
+        val     = get(objList, 'Value');
+        objLines   = get(objList, 'String');
+        for i = 1:numel(val)
+            objname = objLines{val(i)};
+            obj = evalin('base',objname);
+            nobj = numel(obj);
+            if nobj>1
+                for jj=1:nobj
+                    objj = {obj(jj) , 0};
+                    LTPDAinvar = [LTPDAinvar;objj];
+                end
+            else
+                obj = {obj , 0};
+                LTPDAinvar = [LTPDAinvar;obj];
+            end
+        end
+        set(findobj('Tag', 'ImportObjList'),'Value',[])
+             
+    end
+    %----------------------------------------------------------------------
+
+%%
+end
\ No newline at end of file