Fix. Default password should be [] not an empty string
line source
+ − function varargout = sltpda_control(varargin)
+ − % SLTPDA_CONTROL M-file for sltpda_control.fig
+ − % SLTPDA_CONTROL, by itself, creates a new SLTPDA_CONTROL or raises the existing
+ − % singleton*.
+ − %
+ − % H = SLTPDA_CONTROL returns the handle to a new SLTPDA_CONTROL or the handle to
+ − % the existing singleton*.
+ − %
+ − % SLTPDA_CONTROL('CALLBACK',hObject,eventData,handles,...) calls the local
+ − % function named CALLBACK in SLTPDA_CONTROL.M with the given input arguments.
+ − %
+ − % SLTPDA_CONTROL('Property','Value',...) creates a new SLTPDA_CONTROL or raises the
+ − % existing singleton*. Starting from the left, property value pairs are
+ − % applied to the GUI before sltpda_control_OpeningFunction gets called. An
+ − % unrecognized property name or invalid value makes property application
+ − % stop. All inputs are passed to sltpda_control_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 sltpda_control
+ −
+ − % Last Modified by GUIDE v2.5 04-May-2007 09:13:16
+ −
+ − % Begin initialization code - DO NOT EDIT
+ − gui_Singleton = 1;
+ − gui_State = struct('gui_Name', mfilename, ...
+ − 'gui_Singleton', gui_Singleton, ...
+ − 'gui_OpeningFcn', @sltpda_control_OpeningFcn, ...
+ − 'gui_OutputFcn', @sltpda_control_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 sltpda_control is made visible.
+ − function sltpda_control_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 sltpda_control (see VARARGIN)
+ −
+ − % Choose default command line output for sltpda_control
+ − handles.output = hObject;
+ −
+ − % Update handles structure
+ − guidata(hObject, handles);
+ −
+ − % UIWAIT makes sltpda_control wait for user response (see UIRESUME)
+ − % uiwait(handles.main);
+ −
+ − % load logo and display in axes
+ − logo = imread('images/sltpda.jpg');
+ − image(logo, 'Parent', handles.logoAxes)
+ − set(handles.logoAxes,'Visible', 'off');
+ −
+ −
+ − % make a timer object which gets the currently selected SIMULINK model
+ − csyst = timer();
+ − set(csyst, 'TimerFcn', {@setCurrentModel,handles.currentModelTxt});
+ − set(csyst, 'Period', 0.5, 'ExecutionMode', 'FixedRate');
+ − start(csyst);
+ − setappdata(handles.main, 'csyst', csyst);
+ −
+ − % % make a timer object which gets the parameters for the current block
+ − % cbt = timer();
+ − % set(cbt, 'TimerFcn', {@setCurrentBlock,handles});
+ − % set(cbt, 'Period', 0.5, 'ExecutionMode', 'FixedRate');
+ − % start(cbt);
+ − % setappdata(handles.main, 'cbt', cbt);
+ −
+ − % setup loops
+ − loops = [];
+ − setappdata(handles.main, 'loops', loops);
+ −
+ −
+ −
+ − % --- Outputs from this function are returned to the command line.
+ − function varargout = sltpda_control_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 during object creation, after setting all properties.
+ − function main_CreateFcn(hObject, eventdata, handles)
+ − % hObject handle to main (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles empty - handles not created until after all CreateFcns called
+ −
+ −
+ − % --- Executes on button press in openToolboxBtn.
+ − function openToolboxBtn_Callback(hObject, eventdata, handles)
+ − % hObject handle to openToolboxBtn (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − open('sltpda.mdl')
+ −
+ −
+ −
+ − % --- Executes on button press in openModel.
+ − function openModel_Callback(hObject, eventdata, handles)
+ − % hObject handle to openModel (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − % Pop-up dialog box to choose model file
+ − [filename, pathname] = uigetfile({'*.mdl', 'sLTPDA Model File';
+ − '*.xml', 'LTPDA XML AO File'},...
+ − 'MDL-file input',...
+ − 'MultiSelect', 'on');
+ −
+ − if filename ~= 0
+ − % Loop over selected files
+ − if iscellstr(filename)
+ − nfiles = length(filename);
+ − for f=1:nfiles
+ − [path, name, ext, vers] = fileparts(char(filename(f)));
+ − switch ext
+ − case '.mdl'
+ − infile = fullfile(pathname, char(filename(f)));
+ − case '.xml'
+ − % make mdl file from ao
+ − a = ao(char(filename(f)));
+ − mdlfilename = get(a, 'mdlfilename');
+ − mdlfilein = get(a, 'mdlfile');
+ − idx = strfind(mdlfilein, '\n');
+ − % convert mdlfile to a file
+ − fd = fopen(mdlfilename, 'w+');
+ − for j=1:length(idx)-1
+ − i1 = idx(j)+2;
+ − i2 = idx(j+1)-1;
+ − fprintf(fd, '%s\n', mdlfilein(i1:i2));
+ − end
+ − fprintf(fd, '}\n');
+ − fclose(fd);
+ −
+ − infile = mdlfilename;
+ − otherwise
+ − error('### unknown file type.');
+ − end
+ − open_system(infile);
+ − end
+ − else
+ − [path, name, ext, vers] = fileparts(char(filename));
+ − switch ext
+ − case '.mdl'
+ − infile = fullfile(pathname, char(filename));
+ − case '.xml'
+ − % make mdl file from ao
+ − a = ao(char(filename));
+ − mdlfilename = get(a, 'mdlfilename');
+ − mdlfilein = get(a, 'mdlfile');
+ − idx = strfind(mdlfilein, '\n');
+ − % convert mdlfile to a file
+ − fd = fopen(mdlfilename, 'w+');
+ − for j=1:length(idx)-1
+ − i1 = idx(j)+2;
+ − i2 = idx(j+1)-1;
+ − fprintf(fd, '%s\n', mdlfilein(i1:i2));
+ − end
+ − fprintf(fd, '}\n');
+ − fclose(fd);
+ −
+ − infile = mdlfilename;
+ − otherwise
+ − error('### unknown file type.');
+ − end
+ − open_system(infile);
+ − end
+ − end
+ −
+ − % --- Executes on button press in runModel.
+ − function runModel_Callback(hObject, eventdata, handles)
+ − % hObject handle to runModel (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − % get current model name
+ − model = get(handles.currentModelTxt, 'String');
+ − sltpda_execute_loops(model);
+ −
+ − % --- Executes during object creation, after setting all properties.
+ − function currentModelTxt_CreateFcn(hObject, eventdata, handles)
+ − % hObject handle to currentModelTxt (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles empty - handles not created until after all CreateFcns called
+ −
+ − %--------------------------------------------------------------------------
+ − %
+ − function setCurrentModel(obj, event, handles)
+ −
+ − try
+ − set(handles, 'String', gcs);
+ − catch
+ − set(handles, 'String', '');
+ − end
+ −
+ −
+ − % --- Executes on button press in writeMfileBtn.
+ − function writeMfileBtn_Callback(hObject, eventdata, handles)
+ − % hObject handle to writeMfileBtn (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − % get model
+ − model = get(handles.currentModelTxt, 'String');
+ − % get m-file name
+ − [filename, pathname, filteridx] = uiputfile('*.m', 'Save m-file as', [model '_mfile_.m']);
+ −
+ − if ~isempty(filename)
+ − mfile = fullfile(pathname, filename);
+ − if sltpda_verify_model(model)
+ − % parse model file
+ − cmds = sltpda_parse_model(model);
+ − % write m file
+ − sltpda_cmds2m(model, cmds, mfile);
+ − % edit
+ − edit(mfile);
+ − end
+ − end
+ −
+ − %--------------------------------------------------------------------------
+ − % set the current block parameters
+ − %
+ − function setCurrentBlock(handles)
+ −
+ − bh = get_param(gcb, 'handle');
+ − cmd = getCmdFromHandle(bh, handles);
+ − setappdata(handles.main, 'currentBlock', cmd)
+ −
+ − try
+ − set(handles.parametersHeaderTxt, 'String', ['Parameters for ' gcb]);
+ −
+ − % get parameters from cmd structure
+ − pl = cmd.plist;
+ − plist = [];
+ − for j=1:length(pl.params)
+ − p = pl.params(j);
+ − plist = [plist cellstr(p.key)];
+ − end
+ − set(handles.paramsList, 'String', plist);
+ −
+ − catch
+ − set(handles.parametersHeaderTxt, 'String', 'Parameters');
+ − end
+ −
+ − % --- Executes when user attempts to close main.
+ − function main_CloseRequestFcn(hObject, eventdata, handles)
+ − % hObject handle to main (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − % cbt = getappdata(handles.main, 'cbt');
+ − % stop(cbt);
+ − % delete(cbt);
+ −
+ − csyst = getappdata(handles.main, 'csyst');
+ − stop(csyst);
+ − delete(csyst);
+ −
+ − % Hint: delete(hObject) closes the figure
+ − delete(hObject);
+ −
+ −
+ − % --- Executes on button press in editLoopsBtn.
+ − function editLoopsBtn_Callback(hObject, eventdata, handles)
+ − % hObject handle to editLoopsBtn (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ −
+ − % --- Executes on selection change in paramsList.
+ − function paramsList_Callback(hObject, eventdata, handles)
+ − % hObject handle to paramsList (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 paramsList contents as cell array
+ − % contents{get(hObject,'Value')} returns selected item from paramsList
+ −
+ − keys = get(hObject, 'String');
+ − key = keys{get(hObject,'Value')};
+ −
+ − % get the current block
+ − cmd = getappdata(handles.main, 'currentBlock')
+ −
+ − p = find(cmd.plist, key)
+ −
+ − if isnumeric(p)
+ − set(handles.paramEdit, 'String', num2str(p));
+ − elseif ischar(p)
+ − set(handles.paramEdit, 'String', p);
+ − elseif isa(p, 'specwin')
+ − set(handles.paramEdit, 'String', p.name)
+ − else
+ − warning('!!! unknown parameter type.');
+ − end
+ −
+ −
+ − % --- Executes during object creation, after setting all properties.
+ − function paramsList_CreateFcn(hObject, eventdata, handles)
+ − % hObject handle to paramsList (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 paramEdit_Callback(hObject, eventdata, handles)
+ − % hObject handle to paramEdit (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 paramEdit as text
+ − % str2double(get(hObject,'String')) returns contents of paramEdit as a double
+ −
+ −
+ − % --- Executes during object creation, after setting all properties.
+ − function paramEdit_CreateFcn(hObject, eventdata, handles)
+ − % hObject handle to paramEdit (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 selection change in loopList.
+ − function loopList_Callback(hObject, eventdata, handles)
+ − % hObject handle to loopList (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 loopList contents as cell array
+ − % contents{get(hObject,'Value')} returns selected item from loopList
+ −
+ −
+ − % --- Executes during object creation, after setting all properties.
+ − function loopList_CreateFcn(hObject, eventdata, handles)
+ − % hObject handle to loopList (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
+ −
+ − %--------------------------------------------------------------------------
+ − % get cmd from handle
+ − function cmd = getCmdFromHandle(blockhandle, handles)
+ −
+ − model = get(handles.currentModelTxt, 'String')
+ − if sltpda_verify_model(model)
+ − % parse model file
+ − cmds = sltpda_parse_model(model);
+ − for j=1:length(cmds)
+ − if cmds(j).handle == blockhandle
+ − cmd = cmds(j);
+ − break;
+ − end
+ − end
+ − end
+ −
+ −
+ − % --- Executes on button press in loadCurrentBlock.
+ − function loadCurrentBlock_Callback(hObject, eventdata, handles)
+ − % hObject handle to loadCurrentBlock (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − setCurrentBlock(handles);
+ −
+ −
+ − % --- Executes on button press in addLoopBtn.
+ − function addLoopBtn_Callback(hObject, eventdata, handles)
+ − % hObject handle to addLoopBtn (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − contents = get(handles.paramsList,'String');
+ − key = contents{get(handles.paramsList,'Value')};
+ −
+ − % Find this key in current block
+ − cmd = getappdata(handles.main, 'currentBlock')
+ −
+ − % make new loop
+ − loop.block = cmd.name;
+ − loop.handle = cmd.handle;
+ − loop.key = key;
+ − loop.values = get(handles.paramEdit, 'String');
+ − loop.on = 1;
+ −
+ − % get existing loops
+ − loops = getappdata(handles.main, 'loops');
+ −
+ − % add this loop
+ − if ~isempty(loop.values)
+ − loops = [loops loop];
+ − setappdata(handles.main, 'loops', loops);
+ − end
+ −
+ −
+ − % set list
+ − setLoopList(handles);
+ −
+ −
+ − %--------------------------------------------------------------------------
+ − % set loops into list
+ − function setLoopList(handles)
+ −
+ − loops = getappdata(handles.main, 'loops');
+ −
+ − % build list of strings
+ − objlist = [];
+ − for j=1:length(loops)
+ − l = loops(j);
+ − if l.on
+ − str = [sprintf('%s: %s ', l.block, l.key) num2str(l.values) ' on'];
+ − else
+ − str = [sprintf('%s: %s ', l.block, l.key) num2str(l.values) ' off'];
+ − end
+ − objlist = strvcat(objlist, str);
+ −
+ − end
+ −
+ − set(handles.loopList, 'String', objlist);
+ − set(handles.loopList, 'Value', 1);
+ −
+ −
+ − % --- Executes on button press in pzmodelGuiBtn.
+ − function pzmodelGuiBtn_Callback(hObject, eventdata, handles)
+ − % hObject handle to pzmodelGuiBtn (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − pzmodel_helper;
+ −
+ −
+ − % --- Executes on button press in clearLoopsBtn.
+ − function clearLoopsBtn_Callback(hObject, eventdata, handles)
+ − % hObject handle to clearLoopsBtn (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − setappdata(handles.main, 'loops', []);
+ −
+ − % set list
+ − setLoopList(handles);
+ −
+ −
+ − % --- Executes on button press in executeLoopsChk.
+ − function executeLoopsChk_Callback(hObject, eventdata, handles)
+ − % hObject handle to executeLoopsChk (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − % Hint: get(hObject,'Value') returns toggle state of executeLoopsChk
+ −
+ −
+ − % --- Executes on button press in deleteLoops.
+ − function deleteLoops_Callback(hObject, eventdata, handles)
+ − % hObject handle to deleteLoops (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ −
+ − % --- Executes on button press in loopOnOff.
+ − function loopOnOff_Callback(hObject, eventdata, handles)
+ − % hObject handle to loopOnOff (see GCBO)
+ − % eventdata reserved - to be defined in a future version of MATLAB
+ − % handles structure with handles and user data (see GUIDATA)
+ −
+ − loops = getappdata(handles.main, 'loops');
+ − vals = get(handles.loopList,'Value');
+ −
+ − for j=1:vals
+ − if loops(j).on
+ − loops(j).on = 0;
+ − else
+ − loops(j).on = 1;
+ − end
+ − end
+ −
+ − setappdata(handles.main, 'loops', loops);
+ − setLoopList(handles);