[Master Index]
[Index for Toolbox]
tessellation_handler
(Toolbox/tessellation_handler.m in BrainStorm 2.0 (Alpha))
Function Synopsis
varargout = tessellation_handler(varargin)
Help Text
TESSELLATION_HANDLER - : Basic Viewing of tessellation objects in BrainStorm format; GUI Manager
function varargout = tessellation_handler(varargin)
FIG = TESSELLATION_HANDLER launch tessellation_handler GUI.
TESSELLATION_HANDLER('callback_name', ...) invoke the named callback.
Cross-Reference Information
This function calls
This function is called by
Listing of function C:\BrainStorm_2001\Toolbox\tessellation_handler.m
function varargout = tessellation_handler(varargin)
%TESSELLATION_HANDLER - : Basic Viewing of tessellation objects in BrainStorm format; GUI Manager
% function varargout = tessellation_handler(varargin)
% FIG = TESSELLATION_HANDLER launch tessellation_handler GUI.
% TESSELLATION_HANDLER('callback_name', ...) invoke the named callback.
%<autobegin> ---------------------- 26-May-2004 11:34:36 -----------------------
% --------- Automatically Generated Comments Block Using AUTO_COMMENTS ---------
%
% CATEGORY: Visualization
%
% Alphabetical list of external functions (non-Matlab):
% toolbox\bst_color_scheme.m
% toolbox\bst_layout.m
% toolbox\find_brainstorm_files.m
% toolbox\get_user_directory.m
% toolbox\tessellation_handler.m NOTE: Routine calls itself explicitly
%
% Subfunctions in this file, in order of occurrence in file:
% varargout = TessellationFilesList_Callback(h, eventdata, handles, varargin)
% varargout = EnvelopeList_Callback(h, eventdata, handles, varargin)
% varargout = ImportFiles_Callback(h, eventdata, handles, varargin)
% varargout = RenameEnvelope_Callback(h, eventdata, handles, varargin)
% varargout = CurrentEnvelope_Callback(h, eventdata, handles, varargin)
% varargout = DeleteEnvelope_Callback(h, eventdata, handles, varargin)
% varargout = DownsizeEnvelope_Callback(h, eventdata, handles, varargin)
% varargout = ConcatenateEnvelopes_Callback(h, eventdata, handles, varargin)
% varargout = ViewEnvelope_Callback(h, eventdata, handles, varargin)
% varargout = SwapFaces_Callback(h, eventdata, handles, varargin)
% varargout = Save_Callback(h, eventdata, handles, varargin)
% varargout = SaveAs_Callback(h, eventdata, handles, varargin)
% varargout = HDone_Callback(h, eventdata, handles, varargin)
%
% Application data and their calls in this file:
% 'Comment'
% 'TessellationFiles'
% 'TileType'
% 'nFaces'
% 'nVertices'
%
% setappdata(fig,'TessellationFiles',TessFiles);
% setappdata(fig,'TileType','T');
% setappdata(handles.figure1,'Comment',Comment)
% setappdata(handles.figure1,'nFaces',nFaces)
% setappdata(handles.figure1,'nVertices',nVertices)
%
% TessFiles = getappdata(handles.figure1,'TessellationFiles');
% nFaces = getappdata(handles.figure1,'nFaces');
% nVertices = getappdata(handles.figure1,'nVertices');
%
% Figure Files opened by this function:
% mfilename
%
% Format of strings below: Type:Style:Tag, "String", CallBack Type and Call
% <automatic> callback is <Tag>_Callback by Matlab default
%
% Callbacks by figure tessellation_handler.fig
% uicontrol:frame:frame1 "" uses Callback for <automatic>
% uicontrol:frame:frame4 "" uses Callback for <automatic>
% uicontrol:listbox:EnvelopeList "" uses Callback for <automatic>
% uicontrol:popupmenu:TessellationFilesList "N/A" uses Callback for <automatic>
% uicontrol:pushbutton:ConcatenateEnvelopes "Concatenate" uses Callback for <automatic>
% uicontrol:pushbutton:DeleteEnvelope "Delete" uses Callback for <automatic>
% uicontrol:pushbutton:DownsizeEnvelope "Downsize" uses Callback for <automatic>
% uicontrol:pushbutton:HDone "Done" uses Callback for <automatic>
% uicontrol:pushbutton:ImportFiles "Import" uses Callback for <automatic>
% uicontrol:pushbutton:pushbutton16 "Cancel" uses Callback for <automatic>
% uicontrol:pushbutton:RenameEnvelope "Rename" uses Callback for <automatic>
% uicontrol:pushbutton:Save "Save" uses Callback for <automatic>
% uicontrol:pushbutton:SaveAs "Save as" uses Callback for <automatic>
% uicontrol:pushbutton:SwapFaces "Swap faces" uses Callback for <automatic>
% uicontrol:pushbutton:ViewEnvelope "View" uses Callback for <automatic>
% uicontrol:text:FacesVertices "n/a Faces - n/a Vertices" uses Callback for ''
% uicontrol:text:HowManyEnvelopes "Envelope(s)" uses Callback for
% tessellation_handler('text2_Callback',gcbo,[],guidata(gcbo))
% uicontrol:text:HowManyFiles "Tessellation File(s)" uses Callback for
% tessellation_handler('text1_Callback',gcbo,[],guidata(gcbo))
%
% At Check-in: $Author: Mosher $ $Revision: 7 $ $Date: 5/26/04 10:02a $
%
% This software is part of BrainStorm Toolbox Version 2.0 (Alpha) 24-May-2004
%
% Principal Investigators and Developers:
% ** Richard M. Leahy, PhD, Signal & Image Processing Institute,
% University of Southern California, Los Angeles, CA
% ** John C. Mosher, PhD, Biophysics Group,
% Los Alamos National Laboratory, Los Alamos, NM
% ** Sylvain Baillet, PhD, Cognitive Neuroscience & Brain Imaging Laboratory,
% CNRS, Hopital de la Salpetriere, Paris, France
%
% See BrainStorm website at http://neuroimage.usc.edu for further information.
%
% Copyright (c) 2004 BrainStorm by the University of Southern California
% This software distributed under the terms of the GNU General Public License
% as published by the Free Software Foundation. Further details on the GPL
% license can be found at http://www.gnu.org/copyleft/gpl.html .
%
% FOR RESEARCH PURPOSES ONLY. THE SOFTWARE IS PROVIDED "AS IS," AND THE
% UNIVERSITY OF SOUTHERN CALIFORNIA AND ITS COLLABORATORS DO NOT MAKE ANY
% WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
% MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, NOR DO THEY ASSUME ANY
% LIABILITY OR RESPONSIBILITY FOR THE USE OF THIS SOFTWARE.
%<autoend> ------------------------ 26-May-2004 11:34:36 -----------------------
% Last Modified by GUIDE v2.0 11-Nov-2003 09:12:32
if nargin == 0 % LAUNCH GUI
% Open and make the GUI look good
fig = openfig(mfilename,'reuse');
setappdata(fig,'TileType','T');
bst_color_scheme(fig);
bst_layout('align',fig,2,2,4);
set(fig,'visible','on')
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
% Look for tessellation files in current subject folder
Users = get_user_directory;
SubjectPath = fileparts(fullfile(Users.SUBJECTS,Users.CurrentData.SubjectFile));
TessFiles = find_brainstorm_files('tess',SubjectPath);
if isempty(TessFiles)
TessFiles = {'N/A'};
set(handles.TessellationFilesList,'Enable','off')
nEnvelopes = 0;
else
set(handles.TessellationFilesList,'Enable','on')
nEnvelopes = length(TessFiles);
end
set(handles.TessellationFilesList,'String',TessFiles,'Value',1,'Max',nEnvelopes)
set(handles.HowManyFiles,'String',sprintf('%d Tessellation file(s)',nEnvelopes))
% Store tessellation files
setappdata(fig,'TessellationFiles',TessFiles);
% Display info about first tessellation in list
TessellationFilesList_Callback(fig,[],handles)
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.
% --------------------------------------------------------------------
function varargout = TessellationFilesList_Callback(h, eventdata, handles, varargin)
% Display information about selected tessellation file
set(handles.figure1,'pointer','watch')
drawnow
set(handles.EnvelopeList,'Value',1)
TessFiles = getappdata(handles.figure1,'TessellationFiles');
iFile = get(handles.TessellationFilesList,'Value'); % Which file is selected ?
if strcmpi(TessFiles{iFile},'N/A') % No file available, return
set(fig,'pointer','arrow')
return
end
Users = get_user_directory;
SubjectPath = fileparts(fullfile(Users.SUBJECTS,Users.CurrentData.SubjectFile));
cd(SubjectPath)
load(TessFiles{iFile},'Comment','Faces','Vertices')
if isempty(Comment)
% empty tessellation file - delete
ButtonName=questdlg('This file is apparently empty - would you like to remove it from disk?', ...
'DataBase Cleaning', ...
'Yes','No','No');
switch(ButtonName)
case 'No'
set(fig,'pointer','arrow')
return
case 'Yes'
switch(upper(computer))
case('PCWIN')
dos(sprintf('del %s', TessFiles{iFile}));
case ('UNIX')
unix(sprintf('rm %s %s', TessFiles{iFile}));
end
tessellation_handler
end
else
set(handles.EnvelopeList,'string',Comment)
for k = 1:length(Faces);
nFaces(k) = size(Faces{k},1);
end
clear Faces
for k = 1:length(Vertices);
nVertices(k) = size(Vertices{k},2);
end
clear Vertices
setappdata(handles.figure1,'Comment',Comment)
setappdata(handles.figure1,'nFaces',nFaces)
setappdata(handles.figure1,'nVertices',nVertices)
set(handles.HowManyEnvelopes,'String',sprintf('%d Envelope(s)',length(Comment)));
set(handles.EnvelopeList,'Max',length(Comment),'Value',1)
EnvelopeList_Callback(h,[],handles); % Get info from first envelope in list
end
set(handles.figure1,'pointer','arrow')
% --------------------------------------------------------------------
function varargout = EnvelopeList_Callback(h, eventdata, handles, varargin)
% Display info related to selected envelope in tessellation file
iCurrent = get(handles.EnvelopeList,'Value'); % what's the current envelope ?
nFaces = getappdata(handles.figure1,'nFaces');
nVertices = getappdata(handles.figure1,'nVertices');
try
if length(nFaces) == length(nVertices) % several envelopes of different tissues are stored (pre-MMII convention)
set(handles.FacesVertices,'String',sprintf('%d Faces - %d Vertices',nFaces(iCurrent),nVertices(iCurrent)))
else % Variations of the same envelope: number of faces and vertices is the same for all variations
set(handles.FacesVertices,'String',sprintf('%d Faces - %d Vertices',nFaces(1),nVertices(1)))
end
catch
set(handles.EnvelopeList,'Value', min(iCurrent));
EnvelopeList_Callback(h, eventdata, handles)
return
end
% --------------------------------------------------------------------
function varargout = ImportFiles_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = RenameEnvelope_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = CurrentEnvelope_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = DeleteEnvelope_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = DownsizeEnvelope_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = ConcatenateEnvelopes_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = ViewEnvelope_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = SwapFaces_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = Save_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = SaveAs_Callback(h, eventdata, handles, varargin)
% --------------------------------------------------------------------
function varargout = HDone_Callback(h, eventdata, handles, varargin)
Produced by color_mat2html, a customized BrainStorm 2.0 (Alpha) version of mat2html on Tue Oct 12 12:05:14 2004
Cross-Directory links are: ON