0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 function g_LoadInputParamCallback(currPanel,varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2 % This callback is called whenever the user selects an Input block. The
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3 % callback draws the panel to set the only parameter associated to this
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4 % type of block: the ordinal number of AO.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 global LTPDAinvar selBlocks
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 backColor = get(currPanel, 'BackgroundColor');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 panelDimens = get(currPanel, 'Position');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 if length(LTPDAinvar)<1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 % Text: 'Please load at least one AO in memory'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 uicontrol('Parent',currPanel,'BackgroundColor',backColor,'Units','pixels','HorizontalAlignment','center','Position',[(panelDimens(4)-200)/2 panelDimens(4)-100 200 30],'String','Please load at least one AO in memory','Visible','on','Style','text');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 % Button: 'Add data'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 uicontrol('Parent',currPanel,'Units','pixels','HorizontalAlignment','center','Position',[(panelDimens(4)-200)/2 panelDimens(4)-150 200 30],'String','Add data','FontSize',guiFontSize+1,'Visible','on','Enable','on','Callback',@AddButtonCallback,'Style','pushbutton');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 % Text: 'Obj input:'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 uicontrol('Parent',currPanel,'BackgroundColor',backColor,'Units','pixels','HorizontalAlignment','left','Position',[100 panelDimens(4)-60 80 20],'String','Object input:','Visible','on','Style','text');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 % Edit field:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 children = get_param(gcb,'Blocks');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 inputblock = strcat(gcb,'/',children{1});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22 currAOinput = get_param(inputblock,'Value');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 uicontrol('Parent',currPanel,'Units','pixels','HorizontalAlignment','center','Position',[190 panelDimens(4)-57 50 20],'String',currAOinput,'Visible','on','Enable','on','Callback',@InputEditCallback,'Tag','inputEditField','Style','edit');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 % Text: 'Objs list:'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 uicontrol('Parent',currPanel,'BackgroundColor',backColor,'Units','pixels','HorizontalAlignment','left','Position',[20 panelDimens(4)-135 50 20],'String','Object list:','Visible','on','Style','text');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 % Popup input objs list:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 xx = size(LTPDAinvar,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 listInput = cell(xx,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 for j=1:xx
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31 switch class(LTPDAinvar{j,1})
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 case 'ao'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33 anobject = LTPDAinvar{j,1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 aoname = anobject.name;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 aocreated = char(anobject.created);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36 listInput{j,1} = [num2str(j) , ' . AO .' , aoname , '__' , aocreated];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 case 'plist'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 paramNumb = nparams(LTPDAinvar{j,1});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 objcreated = char(LTPDAinvar{j,1}.created);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40 listInput{j,1}=[num2str(j),' . PLIST .',num2str(paramNumb),' params','__',objcreated];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 case 'specwin'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 listInput{j,1}=[num2str(j),' . SPECWIN .','__','no creation time'];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 case 'pzmodel'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 objcreated = char(LTPDAinvar{j,1}.created);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 listInput{j,1}=[num2str(j),' . PZMODEL .','__',objcreated];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 if isa(LTPDAinvar{j,1},'ltpda_uo')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 objclass = class(LTPDAinvar{j,1});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 if ~isempty(LTPDAinvar{j,1}), listInput{j,1}=[num2str(j),' . ',objclass]; end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 for j=xx:-1:1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 if isempty(listInput{j,1})
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 listInput(j,:)=[];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 inputPopup = uicontrol('Parent',currPanel,'Units','pixels','HorizontalAlignment','center','Position',[80 panelDimens(4)-130 500 20],'String',listInput,'Visible','on','Enable','on','Callback',@InputPopupCallback,'Tag','inputPopupField','Style','popup');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 % Set the popup list on the proper line:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 for ii = 1:size(listInput,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 if str2double(deblank(strtok(listInput{ii}))) == str2double(currAOinput), break; end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 set(inputPopup,'Value',ii);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 function InputEditCallback(hObject, varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71 % This callback is called whenever the user modify the input parameter
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 % associated to an Input block
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 if ~isempty(varargin{1}), newValue = varargin{1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 else newValue = str2double(get(hObject,'String'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77 % Check it's an integer:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78 newValue = round(newValue);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 % Check if the value is acceptable, ie:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80 % - if it's <length(LTPDAinvar)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81 if newValue>length(LTPDAinvar)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82 newValue=length(LTPDAinvar);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84 % - if it's a LTPDA valid object:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85 if ~isa(LTPDAinvar{newValue,1},'ltpda_uo')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86 children = get_param(gcbh,'Blocks');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 87 inputblock = strcat(strcat(get(gcbh,'Path'),'/',get(gcbh,'Name')),'/',children{1});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 88 oldValue = get_param(inputblock,'Value');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 89 set(findobj('Tag','inputEditField'),'String',oldValue);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 90 return
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 91 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 92
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 93 set(hObject,'String',num2str(newValue));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 94
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 95 % Set the popup list on the proper line:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 96 inputPopup = findobj('Tag','inputPopupField');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 97 listInput = get(inputPopup,'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 98 for mm = 1:size(listInput,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 99 if str2double(deblank(strtok(listInput{mm}))) == newValue, break; end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 100 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 101 set(inputPopup,'Value',mm);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 102
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 103 % Object name for the annotation:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 104 objName = LTPDAinvar{newValue,1}.name;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 105 if numel(objName)>3 && strcmpi(objName,'none'), objName = class(LTPDAinvar{newValue,1}); end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 106 if numel(objName)>20, objName = ['...',LTPDAinvar{newValue,1}.name(end-20:end)]; end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 107 objName = [num2str(newValue),': ',objName];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 108
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 109 for i=1:length(selBlocks)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 110 % Since all input blocks are masks, and we want to change the
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 111 % value deep inside a block INSIDE this mask, we can't use the
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 112 % direct handles but the following:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 113 children{i}=get_param(selBlocks(i),'Blocks');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 114 inputblock=strcat(strcat(get(selBlocks(i),'Path'),'/',get(selBlocks(i),'Name')),'/',children{i}{1});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 115 set_param(inputblock,'Value',num2str(newValue));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 116 % Set the annotation:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 117 set_param(selBlocks(i),'AttributesFormatString',objName);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 118 % Set the MaskDisplay = n° of input
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 119 set_param(selBlocks(i),'MaskDisplay',sprintf('disp(''%s'')',num2str(newValue)));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 120 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 121 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 122 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 123
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 124 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 125 function InputPopupCallback(hObject, varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 126 % This callback is called whenever the user clicks on the input list in
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 127 % the parameters panel asociated to the 'Input Obj' block
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 128
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 129 val = get(hObject, 'Value');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 130 objLines = get(hObject, 'String');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 131 objnumb = str2double(deblank(strtok(objLines{val})));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 132
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 133 InputEditCallback(findobj('Tag','inputEditField'),objnumb);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 134
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 135 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 136 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 137
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 138 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 139 function AddButtonCallback(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 140 % Callback function: run when the user click the "Add data" button
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 141
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 142 filenames = uipickfiles('REFilter','.txt');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 143 if ~isempty(filenames) && ~isnumeric(filenames(1,1))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 144 [x,y]=size(filenames);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 145 for nn=1:y
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 146 anobject = {ao(filenames{nn}),1,'From file'};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 147 LTPDAinvar = [LTPDAinvar;anobject];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 148 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 149 disp(sprintf(' + %g AOs added to the global variable LTPDAinvar', y))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 150 ltpdagui('Redraw',2);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 151 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 152 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 153 %----------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 154
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 155
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 156 end