view m-toolbox/classes/@LTPDAworkbench/cb_importWBfromObjects.m @ 10:75007001cbfe
database-connection-manager
Check for binary only objects
author
Daniele Nicolodi <nicolodi@science.unitn.it>
date
Mon, 05 Dec 2011 16:20:06 +0100 (2011-12-05)
parents
f0afece42f48
children
line source
+ − % CB_IMPORTFROMOBJECT import pipelines from an object in the workspace.
+ − %
+ − % CALL: LTPDAworkbench.cb_importWBfromObjects
+ − %
+ − % M Hewitson 13-11-08
+ − %
+ − % $Id: cb_importWBfromObjects.m,v 1.4 2010/08/06 19:10:48 ingo Exp $
+ − %
+ − function cb_importWBfromObjects(varargin)
+ −
+ − wb = varargin{1};
+ −
+ − % Display an option dialog
+ − % - from workspace
+ − % - from file
+ − warning('off', 'MATLAB:JavaEDTAutoDelegation');
+ − cd = mpipeline.dialogs.FileOrWorkspaceDialog(wb.mp, true);
+ − cd.setVisible(true);
+ − warning('on', 'MATLAB:JavaEDTAutoDelegation');
+ −
+ − xml = '';
+ − if ~cd.isCancelled
+ −
+ − choice = cd.getChoice;
+ −
+ − if strcmp(choice, 'workspace')
+ −
+ − [objs, varnames] = getWorkspaceObjs();
+ −
+ − % check we have a least one object with an attached workbench
+ − haveWB = false;
+ − for kk=1:numel(objs)
+ − for ll=1:numel(objs{kk})
+ − if ~isempty(objs{kk}(ll).mdlfile)
+ − haveWB = true;
+ − end
+ − end
+ − end
+ −
+ − if ~haveWB
+ − utils.helper.errorDlg('The workspace contains no LTPDA objects with attached workbenches.', 'No workbench found');
+ − end
+ −
+ − % Add all objects to the workspace viewer that have an attached
+ − % workbench file.
+ − wd = mpipeline.dialogs.WorkspaceLister(wb.mp,true);
+ − for kk=1:numel(varnames)
+ − for ll=1:numel(objs{kk})
+ − objs{kk}(ll).mdlfile
+ − if ~isempty(objs{kk}(ll).mdlfile)
+ − wd.addObject(varnames(kk).name, varnames(kk).class, char(objs{kk}(ll)));
+ − end
+ − end
+ − end
+ −
+ − % launch the dialog
+ − warning('off', 'MATLAB:JavaEDTAutoDelegation');
+ − wd.setVisible(true);
+ − warning('on', 'MATLAB:JavaEDTAutoDelegation');
+ −
+ − % check what the user did
+ − if ~wd.isCancelled
+ − % get the selected object
+ − wsobj = wd.getSelection;
+ − obj = [];
+ − if ~isempty(wsobj)
+ − % look for the matching object in the MATLAB workspace
+ − for kk=1:numel(objs)
+ − if strcmp(varnames(kk).name, char(wsobj.getName)) && ...
+ − strcmp(varnames(kk).class, char(wsobj.getObjectclass))
+ − obj = objs{kk};
+ − end
+ − end
+ − end
+ − if ~isempty(obj)
+ − % get xml file
+ − xml = obj.mdlfile;
+ − end
+ − end
+ −
+ −
+ − elseif strcmp(choice, 'file')
+ −
+ − [filename, pathname] = uigetfile({'*.xml', 'Pick an XML object file'; '*.mat', 'Pick a MAT object file'});
+ − if isequal(filename,0) || isequal(pathname,0)
+ − else
+ − fname = fullfile(pathname, filename);
+ − try
+ − obj = ao(fname);
+ − xml = obj.mdlfile;
+ − if isempty(xml)
+ − error('### AO from file %s has no attached workspace.', fname);
+ − end
+ −
+ − catch
+ − lasterr
+ − error('### Failed to load an AO from the given file.');
+ − end
+ − end % End empty filename
+ − else
+ − error('### unknown choice');
+ − end
+ − end
+ −
+ − % Get the XML string and pass back to the workbench
+ − if ~isempty(xml)
+ − wb.mp.createPipelinesFromXMLstring(xml);
+ − end
+ −
+ − end
+ −
+ − %---------------- Get a list of LTPDA objects in the MATLAB workspace
+ − function [objs, varnames] = getWorkspaceObjs()
+ −
+ − % get base workspace variables
+ − ws_vars = evalin('base','whos');
+ −
+ − objs = {};
+ − varnames = [];
+ − for j=1:length(ws_vars)
+ − cmd = sprintf('obj = evalin(''base'', ''%s'');', ws_vars(j).name);
+ − eval(cmd)
+ − if isa(obj, 'ltpda_uo')
+ − for kk=1:numel(obj)
+ − objs = [objs {obj(kk)}];
+ − varnames = [varnames ws_vars(j)];
+ − end
+ − end
+ − end
+ − end
+ −