Mercurial > hg > ltpda
view m-toolbox/sltpda/loopgui.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 source
function varargout = loopgui(varargin) % LOOPGUI M-file for loopgui.fig % LOOPGUI, by itself, creates a new LOOPGUI or raises the existing % singleton*. % % H = LOOPGUI returns the handle to a new LOOPGUI or the handle to % the existing singleton*. % % LOOPGUI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in LOOPGUI.M with the given input arguments. % % LOOPGUI('Property','Value',...) creates a new LOOPGUI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before loopgui_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to loopgui_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help loopgui % Last Modified by GUIDE v2.5 12-Jun-2007 20:24:04 % Begin initialization code - DO NOT EDIT gui_Singleton = 0; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @loopgui_OpeningFcn, ... 'gui_OutputFcn', @loopgui_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before loopgui is made visible. function loopgui_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to loopgui (see VARARGIN) % Choose default command line output for loopgui handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes loopgui wait for user response (see UIRESUME) % uiwait(handles.main); set(handles.loopLevelSelect, 'String', {'1','2','3','4','5'}); set(handles.loopLevelSelect, 'Value', 1); % get my block handles myh = get_param(gcb, 'handle'); setappdata(handles.main, 'loopBlockHandle', myh); % parse model elements and get block list that % have parameters that can be looped over blockhandles = find_system(gcs, 'FindAll', 'on', 'type', 'block'); blocks = []; k = 1; for j=1:length(blockhandles) b = blockhandles(j); maskType = get(b, 'MaskType'); if ~strcmp(maskType, 'loop') maskParams = get(b, 'MaskNames'); get(b) if ~isempty(maskParams) name = get(b, 'Name'); if ~strcmp(name, 'variable') parent = get(b, 'Parent'); name = [parent '/' name]; blocks(k).handle = b; blocks(k).name = name; k = k+1; end end end end setappdata(handles.main, 'blocks', blocks); % Fill list bnames = []; for j=1:length(blocks) bnames = [bnames cellstr(blocks(j).name)]; end set(handles.blockList, 'String', bnames) % get current loop getLoop(handles); % set current value for selected block/param setCurrentValues(handles) % show current block settings showBlockSettings(handles) %-------------------------------------------------------------------------- % get the current loop and set lists accordingly % function getLoop(handles) myh = getappdata(handles.main, 'loopBlockHandle'); blocks = getappdata(handles.main, 'blocks'); set(handles.main, 'Name', get(myh, 'Name')) %--------- Set indices for lists % get mask values maskVals = get(myh, 'MaskValues'); bname = maskVals{1}; % find block in list which matches the current loop settings blistIdx = 1; for j=1:length(blocks) b = blocks(j); if strcmp(b.name, bname) blistIdx = j; end end set(handles.blockList, 'Value', blistIdx) % set params list setParamsList(handles) % set param to the key in loop block params = get(handles.paramList, 'String'); param = maskVals{3}; pidx = 1; for j=1:length(params) if strcmp(params{j}, param) pidx = j; end end set(handles.paramList, 'Value', pidx); %-------------------------------------------------------------------------- % set parameters list from currently selected block % function setParamsList(handles) % get block handle bhandle = getblockhandle(handles); % get mask params for this block maskparams = get(bhandle, 'MaskNames'); set(handles.paramList, 'String', maskparams); % --- Outputs from this function are returned to the command line. function varargout = loopgui_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 % --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in blockList. function blockList_Callback(hObject, eventdata, handles) % hObject handle to blockList (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns blockList contents as cell array % contents{get(hObject,'Value')} returns selected item from blockList set(handles.paramList, 'Value', 1); setParamsList(handles) setCurrentValues(handles) % --- Executes during object creation, after setting all properties. function blockList_CreateFcn(hObject, eventdata, handles) % hObject handle to blockList (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in paramList. function paramList_Callback(hObject, eventdata, handles) % hObject handle to paramList (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns paramList contents as cell array % contents{get(hObject,'Value')} returns selected item from paramList setCurrentValues(handles) %-------------------------------------------------------------------------- % Set values edit box to current value function setCurrentValues(handles) param = getparam(handles); bh = getblockhandle(handles); blocks = getappdata(handles.main, 'blocks'); % find relevant block for j=1:length(blocks) b = blocks(j); if b.handle == bh % get maskNames maskparams = get(bh, 'MaskNames'); for k=1:length(maskparams) if strcmp(maskparams{k}, param) validx = k; end end end end % get mask values maskvals = get(bh, 'MaskValues'); set(handles.paramValsEdit, 'String', maskvals{validx}) % --- Executes during object creation, after setting all properties. function paramList_CreateFcn(hObject, eventdata, handles) % hObject handle to paramList (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function paramValsEdit_Callback(hObject, eventdata, handles) % hObject handle to paramValsEdit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of paramValsEdit as text % str2double(get(hObject,'String')) returns contents of paramValsEdit as a double % --- Executes during object creation, after setting all properties. function paramValsEdit_CreateFcn(hObject, eventdata, handles) % hObject handle to paramValsEdit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in setLoopBtn. function setLoopBtn_Callback(hObject, eventdata, handles) % hObject handle to setLoopBtn (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % get block bh = getblockhandle(handles); bname = getblockname(handles); % get param param = getparam(handles); % get values vals = cellstr(get(handles.paramValsEdit, 'String')); level = get(handles.loopLevelSelect, 'Value'); setBlockSettings(handles, bh, bname, param, vals, 'on', level) %-------------------------------------------------------------------------- % get name of currently selected param function param = getparam(handles) params = get(handles.paramList, 'String'); param = params{get(handles.paramList, 'Value')}; %-------------------------------------------------------------------------- % get block name of currently selected block function bname = getblockname(handles) bnames = get(handles.blockList, 'String'); bname = bnames{get(handles.blockList, 'Value')}; %-------------------------------------------------------------------------- % get block handle of currently selected block function bh = getblockhandle(handles) % get possible blocks blocks = getappdata(handles.main, 'blocks'); % which block is selected blist = get(handles.blockList, 'String'); bsel = blist{get(handles.blockList, 'Value')}; % get handle for selected block for j=1:length(blocks) if strcmp(blocks(j).name, bsel) bh = blocks(j).handle; return end end %-------------------------------------------------------------------------- % Show current setting on GUI function showBlockSettings(handles) % get settings from block myh = getappdata(handles.main, 'loopBlockHandle'); % get mask values maskVals = get(myh, 'MaskValues') % set fields on gui set(handles.blockname, 'String', maskVals{1}); set(handles.blockhandle, 'String', maskVals{2}); set(handles.blockkey, 'String', maskVals{3}); set(handles.blockvals, 'String', maskVals{4}); level = str2num(maskVals{6}) if isempty(level) level = 1; end if level < 1 level = 1; end if level > 5 level = 5; end set(handles.loopLevelSelect, 'value', level); set(handles.blocklevel, 'String', maskVals{6}); %-------------------------------------------------------------------------- % Set current block settings to those selected function setBlockSettings(handles, bh, bname, key, vals, state, level) % get settings from block myh = getappdata(handles.main, 'loopBlockHandle'); maskvals = {bname num2str(bh,20) key cell2str(vals) state num2str(level)}; set(myh, 'MaskValues', maskvals); showBlockSettings(handles) %-------------------------------------------------------------------------- % Convert a cell array to a space separated list of strings function str = cell2str(c) str = []; for j=1:length(c) str = [str ' ' c{j}]; end str = strtrim(str); % --- Executes on button press in getLoopBtn. function getLoopBtn_Callback(hObject, eventdata, handles) % hObject handle to getLoopBtn (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) getLoop(handles); % --- Executes on selection change in loopLevelSelect. function loopLevelSelect_Callback(hObject, eventdata, handles) % hObject handle to loopLevelSelect (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns loopLevelSelect contents as cell array % contents{get(hObject,'Value')} returns selected item from loopLevelSelect % --- Executes during object creation, after setting all properties. function loopLevelSelect_CreateFcn(hObject, eventdata, handles) % hObject handle to loopLevelSelect (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in loopLevelSelect. function popupmenu4_Callback(hObject, eventdata, handles) % hObject handle to loopLevelSelect (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns loopLevelSelect contents as cell array % contents{get(hObject,'Value')} returns selected item from loopLevelSelect % --- Executes during object creation, after setting all properties. function popupmenu4_CreateFcn(hObject, eventdata, handles) % hObject handle to loopLevelSelect (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end