0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 % CB_SUBMIT callback executed when the user clicks on the 'Submit' button
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3 % M Hewitson
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 % $Id: cb_submit.m,v 1.5 2009/05/11 17:09:17 nicola Exp $
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 function cb_submit(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10 myh = varargin{1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 mainfig = varargin{end};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 status = findobj(mainfig.handle, 'Tag', 'RepoguiStatusTxt');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 submitButton = findobj('Tag', 'repoguiSubmitButton');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 % get object list
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 objlist = findobj(mainfig.handle, 'Tag', 'RepoguiObjs2SubmitList');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 objstr = get(objlist, 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 % Build sinfo structure
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 sinfo.conn = mainfig.connection;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 sinfo.experiment_title = get(findobj(mainfig.handle, 'Tag', 'RepoguiExperimentTitleEdit'), 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22 sinfo.experiment_description = get(findobj(mainfig.handle, 'Tag', 'RepoguiExperimentDescriptionEdit'), 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 sinfo.analysis_description = get(findobj(mainfig.handle, 'Tag', 'RepoguiAnalysisDescriptionEdit'), 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 sinfo.quantity = get(findobj(mainfig.handle, 'Tag', 'RepoguiQuantityEdit'), 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 sinfo.keywords = get(findobj(mainfig.handle, 'Tag', 'RepoguiKeywordsEdit'), 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 sinfo.reference_ids = get(findobj(mainfig.handle, 'Tag', 'RepoguiReferenceIDsEdit'), 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 sinfo.additional_comments = get(findobj(mainfig.handle, 'Tag', 'RepoguiAdditonalCommentsEdit'), 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 sinfo.additional_authors = get(findobj(mainfig.handle, 'Tag', 'RepoguiAdditionalAuthorsEdit'), 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 if ~isa(sinfo.conn, 'database')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31 error('### Please connect to a database before trying to submit.');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 objs = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 objname = '';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 if isempty(objstr)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 error('### There are no objects selected to be submitted.');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 % Remove all incorrect lines
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 jj = 1;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 while jj<=numel(objstr)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 try
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 cmd = sprintf('obj = evalin(''base'', ''%s'');', objstr{jj});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 eval(cmd);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 objs = [objs ; obj];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 jj = jj+1;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 catch
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 warning(['### The submission ignored the input on line ' num2str(jj) ', ''' objstr{jj} ''', because there''s no such variable, or it has a different class with respect to the first object selected.' ]) %#ok<WNTAG>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 objstr(jj) = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 % Put together the objects to submit
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 objs = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 for j=1:numel(objstr)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 if ~isempty(objname), objname = [objname ', ']; end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59 cmd = sprintf('obj = evalin(''base'', ''%s'');', objstr{j});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 eval(cmd);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 objname = [objname objstr{j}];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 objs = [objs ; obj];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 % Submit objects
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 try
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 set(submitButton,'String','Submitting...')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 set(status,'String','++ Submitting object(s)','ForeGroundcolor','r')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 drawnow
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 [ids, cid] = submit(objs, sinfo);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71 if isempty(ids)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 warning('!!! Failed to submit object: %s', objname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73 set(status,'String',sprintf('!!! Failed to submit object: %s', objname),'ForeGroundcolor','r');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 disp(sprintf('++ Submitted object(s) %s (ref id = %s, collection id = %d)', objname, mat2str(ids), cid));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76 set(status,'String',sprintf('++ Submitted object(s) %s (ref id = %s, collection id = %d)', objname, mat2str(ids), cid),'ForeGroundcolor','b');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78 set(submitButton,'String','Submit')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 catch
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80 set(status,'String',sprintf('!!! Failed to submit object: %s', objname));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81 set(submitButton,'String','Submit')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82 warning('!!! Failed to submit object: %s', objname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 rethrow(lasterror)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86 end