diff m-toolbox/m/gui/ltpdv/callbacks/ltpdv_build_params_panel.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/m/gui/ltpdv/callbacks/ltpdv_build_params_panel.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,145 @@
+function ltpdv_build_params_panel(ph, ii, varargin)
+
+  FONTSIZE = 12;
+  
+  pmarg = 0.025;
+
+  keyl = pmarg;
+  keyh = 0.055;
+  keyw = 0.3;
+  keyb = 1-pmarg-keyh;
+
+  vall = pmarg*2 + keyw;
+  valw = 0.5;
+
+  al   = vall + valw + pmarg;
+  aw   = 0.05;
+
+  delete(get(ph, 'Children'))
+
+  if numel(varargin) > 0
+    activated = varargin{1};
+    if strcmpi(activated, 'on')
+      chkVal = 1;
+    else
+      chkVal = 0;
+    end
+  else
+    activated = 'off';
+    chkVal = 0;
+  end
+  
+  pancomps = {};
+
+  if isa(ii, 'minfo')
+    % we give a pop-up menu of sets
+    eh = uicontrol(ph,'Style','popupmenu',...
+      'String',ii.sets,...
+      'units', 'normalized', ...
+      'BackgroundColor', 'w', ...
+      'Fontsize', FONTSIZE, ...
+      'Enable', 'on', ...
+      'Position',[vall keyb valw keyh]);
+
+    set(eh, 'Callback', {@ltpdv_preproc_sets_callback, ii});
+  else
+    pl = ii;
+    
+    if numel(pl.params) == 0
+        sth = uicontrol(ph,'Style','text',...
+          'String', 'contains no parameters',...
+          'Units', 'normalized', ...
+          'BackgroundColor', 'w', ...
+          'Fontsize', FONTSIZE, ...
+          'Position',[keyl keyb 2*keyw keyh]);
+    end
+    % check for any unsupported parameters
+    unsupported = false;
+    for j=1:numel(pl.params)
+      val = pl.params(j).val;
+      if isa(val, 'timespan')
+        unsupported = true;
+      end
+    end
+    if unsupported
+        sth = uicontrol(ph,'Style','text',...
+          'String', ['contains unsupported parameter of type: ' class(val)],...
+          'Units', 'normalized', ...
+          'BackgroundColor', 'w', ...
+          'Fontsize', FONTSIZE, ...
+          'Position',[keyl keyb 2*keyw keyh]);
+      
+    else
+      % Build parameters
+      for j=1:numel(pl.params)
+
+        % Get key and val
+        key = pl.params(j).key;
+        val = pl.params(j).val;
+
+        switch class(val)
+          case 'char'
+            valstr = val;
+          case 'double'
+            valstr = mat2str(val);
+          case 'specwin'
+            valstr = specwin.getTypes;
+          otherwise
+            valstr = char(val);
+        end
+
+        % key text
+        sth = uicontrol(ph,'Style','text',...
+          'String', key,...
+          'Units', 'normalized', ...
+          'BackgroundColor', 'w', ...
+          'Fontsize', FONTSIZE, ...
+          'Position',[keyl keyb keyw keyh]);
+
+        % val edit
+        if ischar(valstr) || isa(valstr, 'time') || isa(valstr, 'sym')
+          if isa(valstr, 'time') || isa(valstr, 'sym')
+            valstr = char(valstr);
+          end
+          eh = uicontrol(ph,'Style','edit',...
+            'String', valstr,...
+            'units', 'normalized', ...
+            'BackgroundColor', 'w', ...
+            'Fontsize', FONTSIZE, ...
+            'Enable', activated, ...
+            'Position',[vall keyb valw keyh]);
+        elseif iscell(valstr)
+          eh = uicontrol(ph,'Style','popupmenu',...
+            'String',valstr,...
+            'units', 'normalized', ...
+            'BackgroundColor', 'w', ...
+            'Fontsize', FONTSIZE, ...
+            'Enable', activated, ...
+            'Position',[vall keyb valw keyh]);
+        else
+          valstr
+          error('### Unknown type for value string.');
+        end
+        setappdata(eh, 'valClass', class(val));
+        % Activate
+        ah = uicontrol(ph,'Style','checkbox',...
+          'String','',...
+          'units', 'normalized', ...
+          'BackgroundColor', get(ph, 'BackgroundColor'), ...
+          'Fontsize', FONTSIZE, ...
+          'Value', chkVal, 'Position', [al keyb aw keyh], ...
+          'Callback', {@ltpdv_preproc_param_act, ph});
+
+        pancomps = [pancomps; {sth, eh, ah}];
+
+        % Do next line
+        keyb = keyb - pmarg - keyh;
+
+      end
+    end
+  end
+
+  setappdata(ph, 'pancomps', pancomps);
+
+
+end
\ No newline at end of file