diff m-toolbox/m/gui/gltpda/pan5output.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/pan5output.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,304 @@
+function pan5output(varargin)
+
+% ========================================================================
+% ====================== Panel for the outputs ===========================
+% ========================================================================
+% This is the GUI m-file to show that the panel relative to the outputs
+%
+%  $Id: pan5output.m,v 1.17 2008/12/16 19:30:26 nicola Exp $
+
+global LTPDAoutvar
+
+InputObjList=''; OutputObjList='';
+UpdateListbox();
+set(gcf,'NextPlot','new');
+
+currPanel   = varargin{1};
+panelDimens = get(currPanel, 'Position');
+backColor   = get(currPanel, 'BackgroundColor');
+
+    DataPanPos   = [20 panelDimens(4)-320 panelDimens(3)-40 285];
+  hDataPanel    =  uipanel(...
+                      'Title','Data Control Panel',...
+                      'BackgroundColor',[1,1,1],...
+                      'FontSize',7,...
+                      'Units','pixels',...
+                      'Position',DataPanPos);
+    nbuttons    = 5;
+    buttonWidth = (DataPanPos(3)-10*(nbuttons+1))/nbuttons;
+    buttonPos   = [10 DataPanPos(4)-45 buttonWidth 25];
+    % 'Export to workspace' button:
+  uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Export to workspace','FontSize',8,'Visible','on','Callback',@hExportButtonCallback,'Style','pushbutton','enable','on');
+    buttonPos(1) = buttonPos(1)+buttonWidth+10;
+    % 'Remove' button:
+  uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Remove','FontSize',8,'Visible','on','Callback',@hRemoveButtonCallback,'Style','pushbutton','enable','on');
+    buttonPos(1) = buttonPos(1)+buttonWidth+10;
+    % 'Send to repository' button:
+  uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Send to repository','FontSize',8,'Visible','on','Callback',@hClearButtonCallback,'Style','pushbutton','enable','off');
+    buttonPos(1) = buttonPos(1)+buttonWidth+10;
+    % 'Explore' button:
+  uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Explore','FontSize',8,'Visible','on','UserData',InputObjList,'Callback',@hExploreButtonCallback,'Style','pushbutton','enable','on');
+%     buttonPos(1) = buttonPos(1)+buttonWidth+10;
+%   hSaveOutButton =  uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Save workspace','FontSize',8,'Visible','on','Enable','on','Callback',@SaveWorkspaceCallback,'Style','pushbutton');
+    buttonPos(1) = buttonPos(1)+buttonWidth+10;
+    % 'Clear all output' button:
+  uicontrol('Parent',hDataPanel,'Units','pixels','HorizontalAlignment','center','Position',buttonPos,'String','Clear output','FontSize',8,'Visible','on','Enable','on','Callback',{@AskConfirm,'clear'},'Style','pushbutton');
+    clear nbuttons buttonWidth buttonPos
+
+
+    ntexts    = 2;
+    textWidth = (DataPanPos(3)-10*(ntexts+1))/ntexts;
+    textPos   = [10 DataPanPos(4)-80 textWidth 25];
+  % hListAOText   =   uicontrol('Parent',hDataPanel,'BackgroundColor',get(hDataPanel,'BackgroundColor'),'HorizontalAlignment','center','Position',textPos,'String','Input:','FontName','Times New Roman','FontSize',8,'FontWeight','normal','Visible','on','Style','text');
+    textPos(1) = textPos(1)+textWidth+10;
+  hResultAOText   =   uicontrol('Parent',hDataPanel,'BackgroundColor',get(hDataPanel,'BackgroundColor'),'HorizontalAlignment','center','Position',textPos,'String','Output:','FontName','Times New Roman','FontSize',8,'FontWeight','normal','Visible','on','Style','text');
+    clear ntexts textWidth textPos
+
+
+    nlists    = 2;
+    listWidth = (DataPanPos(3)-10*(nlists+1))/nlists;
+    listPos   = [10 DataPanPos(4)-275 listWidth 200];
+  % Info panel:
+  uicontrol('Parent',hDataPanel,'BackgroundColor',[0.94,0.94,1],'Style','listbox','HorizontalAlignment', 'left','Fontsize', 8,'Units','pixels','Position',listPos,'Tag','infoPanel');
+    listPos(1) = listPos(1)+listWidth+10;
+  OutputObjList   =   uicontrol('Parent',hDataPanel,'BackgroundColor',[0.95,0.95,0.95],'HorizontalAlignment','center','Position',listPos,'String',listResults,'Value',[],'Max',10,'Min',1,'FontSize',8,'FontWeight','normal','Visible','on','Callback',@hResultListCallback,'Tag','OutputObjList','Style','listbox');
+    hResultListCallback(OutputObjList,1)
+    clear DataPanPos nlists listWidth listPos
+    
+    
+%%
+    %----------------------------------------------------------------------
+    function UpdateListbox(varargin)
+    % Updates the LTPDAoutvar listbox
+
+         %==================================
+         % Update the list of results AOs
+         xx = size(LTPDAoutvar,1);
+         listResults = cell(xx,1);
+         if xx>0
+             for j=1:xx
+                 listResults{j,1} = num2str(j);
+                 [rows,columns] = size(LTPDAoutvar{j,1});
+                 if (rows>1 && columns==1) || (rows==1 && columns>1), listResults{j,1} = [listResults{j,1}, ' .(Vector ',num2str(rows),'x',num2str(columns),') '];
+                 elseif rows>1 && columns>1, listResults{j,1} = [listResults{j,1}, ' .(Matrix ',num2str(rows),'x',num2str(columns),') '];
+                 end
+                 switch class(LTPDAoutvar{j,1})
+                    case 'ao'
+                       anobject  = LTPDAoutvar{j,1};
+                       aoname    = anobject.name;
+                       aocreated = char(anobject.created);
+                       listResults{j,1} = [listResults{j,1}, ' . AO .' , aoname , '__' , aocreated];
+                    case 'plist'
+                       paramNumb = nparams(LTPDAoutvar{j,1});
+                       objcreated = char(LTPDAoutvar{j,1}.created);
+                       listResults{j,1}=[listResults{j,1}, ' . PLIST .',num2str(paramNumb),' params','__',objcreated];
+                    case {'pzmodel','miir','mfir'}
+                       objcreated = char(LTPDAoutvar{j,1}.created);
+                       listResults{j,1}=[listResults{j,1}, ' . ',upper(class(LTPDAoutvar{j,1})),' .__',objcreated];
+                    case 'double'
+                       if numel(LTPDAoutvar{j,1})==1, objclass  = ' . Scalar .__ ';
+                       elseif size(LTPDAoutvar{j,1},1)==1 || size(LTPDAoutvar{j,1},2)==1, objclass = ' . Vector .__ ';
+                       else objclass = ' . Matrix .__ ';
+                       end
+                       listResults{j,1}=[listResults{j,1}, objclass, mat2str(LTPDAoutvar{j,1})];
+                    otherwise
+                       listResults{j,1}=[listResults{j,1}, ' . ',class(LTPDAoutvar{j,1})];
+                 end
+             end
+             for j=xx:-1:1, if isempty(listResults{j,1}), listResults(j,:)=[]; end; end
+         else
+             listResults{1,1}='The workspace is empty';
+         end
+         
+         OutputObjList = findobj('Tag','OutputObjList');
+         if ~isempty(OutputObjList)
+             set(OutputObjList,'Value',1)
+             set(OutputObjList,'String',listResults)
+         end
+         
+         %==================================
+
+    end
+    %----------------------------------------------------------------------
+
+    %----------------------------------------------------------------------
+    function hResultListCallback(hObject, varargin)
+    % This callback is called whenever the user double click upon one of
+    % the AOs in use.
+        if ~isempty(varargin{1}) && varargin{1}==1 && size(LTPDAoutvar,1)>0
+                val = get(hObject, 'Value');
+                if length(val) == 1
+                    objLines = get(hObject, 'String');
+                    if isempty(objLines)
+                        objtxt = '';
+                    else
+                        objnumb = str2double(deblank(strtok(objLines{val})));
+                        objtxt = display(LTPDAoutvar{objnumb});
+                    end
+                else
+                    objtxt = '';
+                end
+                set(findobj('Tag', 'infoPanel'), 'String', objtxt)
+        elseif size(LTPDAoutvar,1)>0
+            if strcmp(get(gcf,'SelectionType'),'normal')
+                val = get(hObject, 'Value');
+                if length(val) == 1
+                    objLines = get(hObject, 'String');
+                    objnumb = str2double(deblank(strtok(objLines{val})));
+                    objtxt = display(LTPDAoutvar{objnumb});
+                else
+                    objtxt = '';
+                end
+                set(findobj('Tag', 'infoPanel'), 'String', objtxt)
+            end
+            if strcmp(get(gcf,'SelectionType'),'open') && ~isempty(get(hObject, 'String'))
+                try %#ok<ALIGN>
+                    currIndex = get(hObject,'Value');
+                    figure
+                    plot(LTPDAoutvar{currIndex,1});
+                catch
+                    close(gcf)
+                end
+            end
+        end
+         
+    end
+    %----------------------------------------------------------------------
+
+%%
+%     %----------------------------------------------------------------------
+%     function SaveWorkspaceCallback(varargin)
+%     % Callback function: run when the user click the "Clear all data"
+%     % button
+% 
+%          try
+%              [FileName,PathName,FilterIndex] = uiputfile('*.mat','Save Workspace As');
+%              if ~isa(FileName,'double'), save(strcat(PathName,FileName),'LTPDAoutvar'); disp('Workspace saved'); end
+%              disp('Output saved')
+%          catch
+%          end
+%     end
+%     %----------------------------------------------------------------------
+
+    %----------------------------------------------------------------------
+    function AskConfirm(varargin)
+    % Whenever the user click the Reset Parameters button
+    
+         if strcmp(varargin{3},'close'), set(gcf,'Visible','off'); end
+         
+       % Ask for confirmation:
+         screenSize = get(0,'ScreenSize');
+         backColor   = [1 1 1];
+         position   = [(screenSize(3)-250)/2,(screenSize(4)-160)/2,250,160];
+         confirmFig = figure('Position',position,'Name','Please confirm','Tag','ConfirmReset','Resize','off','NumberTitle','off','Toolbar','none','Menubar','none');
+       % Text
+         uicontrol('Parent',confirmFig,'BackgroundColor',backColor,'HorizontalAlignment','center','Position',[0 position(4)-40 position(3) 20],'String','Are you sure?','FontName','Times New Roman','FontSize',13,'FontWeight','normal','Visible','on','Style','text');
+       % Button Yes
+         dimension = position;
+         logosize = [77 95];
+         dimension = [50 , dimension(4)-logosize(2)-50 , logosize];
+         yesbut = axes('Parent',confirmFig,'Units','pixels','Position',dimension,'Tag','Yes');
+         image(imread('buttonyes2.jpg'),'Parent',yesbut,'ButtonDownFcn','set(findobj(''Tag'',''ConfirmReset''),''UserData'',0); uiresume;','Tag','YesButton');
+         axis(yesbut,'off');
+       % Button No
+         dimension = position;
+         logosize = [77 95];
+         dimension = [127 , dimension(4)-logosize(2)-50 , logosize];
+         nobut = axes('Parent',confirmFig,'Units','pixels','Position',dimension,'Tag','No');
+         image(imread('buttonno2.jpg'),'Parent',nobut,'ButtonDownFcn','set(findobj(''Tag'',''ConfirmReset''),''UserData'',1); uiresume;','Tag','NoButton');
+         axis(nobut,'off');
+
+         uiwait;
+         
+         if get(confirmFig,'UserData'), delete(confirmFig); set(findobj('Tag','LTPDAGUI'),'Visible','on'); return; end
+         
+         if strcmp(varargin{3},'close')
+            delete(confirmFig);
+            disp('Closing LTPDA GUI...');
+            delete(timerfindall);
+            clear global LTPDAinvar LTPDAoutvar;
+            setappdata(0,'ltpda_repo_user',''); setappdata(0,'ltpda_repo_pass','');
+            closereq
+         elseif strcmp(varargin{3},'clear')
+            delete(confirmFig);
+            LTPDAoutvar={};
+            set(OutputObjList,'Value',1)
+            set(findobj('Tag', 'infoPanel'), 'String', '')
+            set_param(find_system(bdroot,'FindAll','on','Type','Annotation','Tag','ltpda model'),'UserData','');
+            UpdateListbox();
+         end
+         
+    end
+    %----------------------------------------------------------------------
+    
+    %----------------------------------------------------------------------
+    function hRemoveButtonCallback(varargin)   
+    % Callback function: run when the user click the "Remove data" button
+
+           index_selected = get(OutputObjList,'Value');
+           listObjs = get(OutputObjList,'String');
+           if ~strcmp(listObjs,'The memory is empty')
+               for i=1:numel(index_selected)
+                   objSelect = str2double(strtok(listObjs{index_selected(i),1},'.'));
+                   LTPDAoutvar(objSelect,:) = [];
+               end
+               UpdateListbox();
+           end
+           set(findobj('Tag', 'infoPanel'), 'String', '')
+
+    end
+    %----------------------------------------------------------------------
+
+    %----------------------------------------------------------------------
+    function hExportButtonCallback(varargin)   
+    % Callback function: run when the user click the "Remove data" button
+
+         currSelObjs   = get(OutputObjList,'Value');
+         listObjs = get(OutputObjList,'String');
+         if ~strcmp(listObjs,'The memory is empty')
+             selectedObjs  = {};
+             for i=1:numel(currSelObjs)
+                 objSelect = str2double(strtok(listObjs{currSelObjs(i),1},'.'));
+                 selectedObjs = [selectedObjs,LTPDAoutvar(objSelect,1)];
+             end
+             if ~isempty(selectedObjs)
+                 for i=1:numel(selectedObjs)
+                     objName = [class(selectedObjs{i}),'_',selectedObjs{i}.name];
+                     objName = genvarname(objName,evalin('base','who'));
+                     assignin('base', objName, selectedObjs{i});
+                     disp(['Saved to workspace with name ',objName])
+                 end
+             end
+         end
+         
+    end
+    %----------------------------------------------------------------------
+
+    %----------------------------------------------------------------------
+    function hExploreButtonCallback(varargin)   
+    % Callback function: run when the user click the "Update list" button
+
+         currSelObjs   = get(OutputObjList,'Value');
+         listObjs = get(OutputObjList,'String');
+         if ~strcmp(listObjs,'The memory is empty')
+             selectedObjs  = {};
+             for i=1:numel(currSelObjs)
+                 objSelect = str2double(strtok(listObjs{currSelObjs(i),1},'.'));
+                 selectedObjs = [selectedObjs,LTPDAoutvar(objSelect,1)];
+             end
+
+             if ~isempty(selectedObjs)
+                 ltpda_explorer(selectedObjs);
+             else
+                 ltpda_explorer(LTPDAoutvar);
+             end
+
+             UpdateListbox();
+         end
+
+    end
+    %----------------------------------------------------------------------
+
+
+%%
+end
\ No newline at end of file