utnbcfs.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:52k
源码类别:

波变换

开发平台:

Matlab

  1. function varargout = utnbcfs(option,fig,varargin)
  2. %UTNBCFS Utilities for Coefficients Selection 1-D and 2-D tool.
  3. %   VARARGOUT = UTNBCFS(OPTION,FIG,VARARGIN)
  4. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 11-Jun-98.
  5. %   Last Revision: 22-May-2003.
  6. %   Copyright 1995-2004 The MathWorks, Inc.
  7. %   $Revision: 1.10.4.2 $  $Date: 2004/03/15 22:42:07 $
  8. % Default values.
  9. %----------------
  10. max_lev_anal = 9;
  11. def_lev_anal = 5;
  12. % Tag property of objects.
  13. %-------------------------
  14. tag_fra_tool = ['Fra_CFS_Tool'];
  15. switch option
  16.   case {'create','apply','select','unselect'}
  17.   otherwise
  18.     % Memory Blocs of stored values.
  19.     %===============================
  20.     % MB0.
  21.     %-----
  22.     n_membloc0 = 'MB0';
  23.     ind_sig    = 1;
  24.     ind_coefs  = 2;
  25.     ind_longs  = 3;
  26.     ind_first  = 4;
  27.     ind_last   = 5;
  28.     ind_sort   = 6;
  29.     ind_By_Lev = 7;
  30.     ind_sizes  = 8;   % 2D Only
  31.     nb0_stored = 8;
  32.     if ~ishandle(fig) , varargout{1} = []; return; end
  33.     uic = findobj(get(fig,'Children'),'flat','type','uicontrol');
  34.     fra = findobj(uic,'style','frame','tag',tag_fra_tool);
  35.     if isempty(fra) , return; end
  36.     ud  = get(fra,'Userdata');
  37.     toolOPT = ud.toolOPT;
  38.     handlesUIC = ud.handlesUIC;
  39.     h_CMD_SIG  = ud.h_CMD_SIG;
  40.     h_CMD_APP  = ud.h_CMD_APP;
  41.     h_CMD_LVL  = ud.h_CMD_LVL;
  42.     if isequal(option,'handles')
  43.         handles = [handlesUIC(:);h_CMD_SIG(:);h_CMD_APP(:);h_CMD_LVL(:)];
  44.         varargout{1} = handles(ishandle(handles));
  45.         return;
  46.     end
  47.     Hdls_toolPos = utanapar('handles',fig,'all');
  48.     ind          = 2;
  49.     txt_top      = handlesUIC(ind); ind = ind+1;
  50.     pop_met      = handlesUIC(ind); ind = ind+1;
  51.     txt_app      = handlesUIC(ind); ind = ind+1;
  52.     pop_app      = handlesUIC(ind); ind = ind+1;
  53.     txt_cfs      = handlesUIC(ind); ind = ind+1;
  54.     txt_tit(1:4) = handlesUIC(ind:ind+3); ind = ind+4;
  55.     tog_res      = handlesUIC(ind); ind = ind+1;
  56.     pus_act      = handlesUIC(ind); ind = ind+1;
  57.     % Get stored structure.
  58.     %----------------------
  59.     Hdls_Sel = wfigmngr('getValue',fig,'Hdls_Sel');
  60.     Hdls_Mov = wfigmngr('getValue',fig,'Hdls_Mov');
  61.  
  62.     % Get UIC Handles.
  63.     %-----------------
  64.     pus_sel = Hdls_Sel.pus_sel;
  65.     pus_uns = Hdls_Sel.pus_uns;
  66.     [fra_mov,txt_mov,txt_app,pop_app,...
  67.      txt_min_mov,edi_min_mov,txt_stp_mov,edi_stp_mov, ...
  68.      txt_max_mov,edi_max_mov,...
  69.      chk_mov_aut,pus_mov_sta,pus_mov_sto,pus_mov_can] = deal(Hdls_Mov{:});
  70.     switch option
  71.       case {'clean','enable','Init_Movie','Mngr_Movie'}
  72.         toolATTR = wfigmngr('getValue',fig,'ToolATTR');
  73.         hdl_UIC  = toolATTR.hdl_UIC;
  74.         pus_ana  = hdl_UIC.pus_ana;
  75.         switch toolOPT
  76.           case 'cf1d' , chk_sho = hdl_UIC.chk_sho;
  77.           case 'cf2d' , chk_sho = [];
  78.         end
  79.       otherwise
  80.     end
  81. end
  82. switch option
  83.   case 'create'
  84.     % Get Globals.
  85.     %--------------
  86.     [Def_Txt_Height,Def_Btn_Height,Def_Btn_Width,Pop_Min_Width, ...
  87.      X_Spacing,Y_Spacing,sliYProp,...
  88.      Def_FraBkColor,Def_EdiBkColor] = ...
  89.         mextglob('get',...
  90.             'Def_Txt_Height','Def_Btn_Height','Def_Btn_Width',   ...
  91.             'Pop_Min_Width','X_Spacing','Y_Spacing','Sli_YProp', ...
  92.             'Def_FraBkColor','Def_EdiBkColor'   ...
  93.             );
  94.     % Defaults.
  95.     %----------
  96.     xleft = Inf; xright  = Inf; xloc = Inf;
  97.     ytop  = Inf; ybottom = Inf; yloc = Inf;
  98.     bkColor = Def_FraBkColor;
  99.     ydir   = -1;
  100.     levmin = 1;
  101.     levmax = def_lev_anal;
  102.     levmaxMAX = max_lev_anal;
  103.     visVal  = 'On';
  104.     enaVal  = 'Off';
  105.     toolOPT = 'cf1d';
  106.     % Inputs.
  107.     %--------
  108.     nbarg = length(varargin);
  109.     for k=1:2:nbarg
  110.         arg = lower(varargin{k});
  111.         switch arg
  112.           case 'left'     , xleft     = varargin{k+1};
  113.           case 'right'    , xright    = varargin{k+1};
  114.           case 'xloc'     , xloc      = varargin{k+1};
  115.           case 'bottom'   , ybottom   = varargin{k+1};
  116.           case 'top'      , ytop      = varargin{k+1};
  117.           case 'yloc'     , yloc      = varargin{k+1};
  118.           case 'bkcolor'  , bkColor   = varargin{k+1};
  119.           case 'visible'  , visVal    = varargin{k+1};
  120.           case 'enable'   , enaVal    = varargin{k+1};
  121.           case 'ydir'     , ydir      = varargin{k+1};
  122.           case 'levmin'   , levmin    = varargin{k+1};
  123.           case 'levmax'   , levmax    = varargin{k+1};
  124.           case 'levmaxMAX', levmaxMAX = varargin{k+1};
  125.           case 'toolopt'  , toolOPT   = varargin{k+1};
  126.         end
  127.     end
  128.     % Structure initialization.
  129.     %--------------------------
  130.     h_CMD_SIG = NaN*ones(4,1);
  131.     h_CMD_APP = NaN*ones(4,1);
  132.     h_CMD_LVL = NaN*ones(4,levmaxMAX);
  133.     ud = struct(...
  134.             'toolOPT',toolOPT, ...
  135.             'levmin',levmin, ...
  136.             'levmax',levmax, ...
  137.             'levmaxMAX',levmaxMAX, ...
  138.             'visible',lower(visVal),...
  139.             'ydir', ydir,    ...
  140.             'handlesUIC',[], ...
  141.             'h_CMD_SIG',h_CMD_SIG, ...
  142.             'h_CMD_APP',h_CMD_APP, ...
  143.             'h_CMD_LVL',h_CMD_LVL, ...
  144.             'handleORI' ,[], ...
  145.             'handleTHR',[], ...
  146.             'handleRES' ,[]  ...
  147.             );
  148.     % Figure units.
  149.     %--------------
  150.     str_numfig = num2mstr(fig);
  151.     old_units  = get(fig,'units');
  152.     fig_units  = 'pixels';
  153.     if ~isequal(old_units,fig_units), set(fig,'units',fig_units); end
  154.     % Positions utilities.
  155.     %---------------------
  156.     dx = X_Spacing; bdx = 3; dx2 = 2*dx;
  157.     dy = Y_Spacing; bdy = 4; dy2 = 2*dy;
  158.     d_txt  = (Def_Btn_Height-Def_Txt_Height);
  159.     deltaY = (Def_Btn_Height+dy);
  160.     d_lev  = 2;
  161.     sli_hi = Def_Btn_Height*sliYProp;
  162.     sli_dy = 0.5*Def_Btn_Height*(1-sliYProp);
  163.     % Setting frame position.
  164.     %------------------------
  165.     NB_Height = 6;
  166.     w_fra   = wfigmngr('get',fig,'fra_width');
  167.     h_fra   = (levmaxMAX+NB_Height)*Def_Btn_Height+...
  168.                levmaxMAX*d_lev+ ...
  169.                depOfMachine(Def_Btn_Height)+(NB_Height-1)*bdy;
  170.     x_fra   = utposfra(xleft,xright,xloc,w_fra);
  171.     y_fra   = utposfra(ybottom,ytop,yloc,h_fra);
  172.     pos_fra = [x_fra,y_fra,w_fra,h_fra];
  173.     % String properties.
  174.     %-------------------
  175.     str_txt_top = 'Define Selection method';
  176.     str_txt_tit = strvcat(' ','Initial','  ','Kept');
  177.     str_tog_res = 'Residuals';
  178.     str_pop_met = strvcat('Global','By Level', ...
  179.                           'Manual','Stepwise Movie');
  180.     if isequal(toolOPT,'cf2d') , str_pop_met(3,:) = []; end
  181.     str_txt_app = 'App. cfs';
  182.     str_pop_app = strvcat('Select All','Selectable','Unselect');
  183.     str_pus_sel = 'Select';
  184.     str_pus_uns = 'Unselect';
  185.     str_txt_cfs = 'Selected Biggest Coefficients';
  186.     str_pus_act = 'Apply';
  187.  
  188.     str_txt_mov     = 'Set Stepwise Movie Parameters';
  189.     str_txt_min_mov = 'Min. ( > 0 )';
  190.     str_edi_min_mov = '';
  191.     str_txt_stp_mov = 'Step ( > 0 )';
  192.     str_edi_stp_mov = '';
  193.     str_txt_max_mov = 'Max.';
  194.     str_edi_max_mov = '';
  195.     str_chk_mov_aut = 'AutoPlay';
  196.     str_pus_mov_sta = 'Start';
  197.     str_pus_mov_sto = 'Stop';
  198.     str_pus_mov_can = 'Quit Movie';
  199.     % Position properties.
  200.     %---------------------
  201.     txt_width   = Def_Btn_Width;
  202.     edi_width   = 3*Def_Btn_Width/4;
  203.     dy_lev      = Def_Btn_Height+d_lev;
  204.     xleft       = x_fra+bdx;
  205.     w_rem       = w_fra-2*bdx;
  206.     ylow        = y_fra+h_fra-Def_Btn_Height-bdy;
  207.     w_uic       = (5*txt_width)/2;
  208.     x_uic       = xleft+(w_rem-w_uic)/2;
  209.     y_uic       = ylow;
  210.     pos_txt_top = [x_uic, y_uic+d_txt/2, w_uic, Def_Txt_Height];
  211.     w_uic       = (7*w_fra)/12;
  212.     x_uic       = x_fra+(w_fra-w_uic)/2;
  213.     y_uic       = y_uic-Def_Btn_Height;
  214.     pos_pop_met = [x_uic, y_uic, w_uic, Def_Btn_Height];
  215.     y_uic       = y_uic-Def_Btn_Height-bdy;
  216.     w_txt       = w_fra/4;
  217.     w_uic       = w_fra/2;
  218.     x_uic       = x_fra+(w_fra-w_uic-w_txt)/2;
  219.     pos_txt_app = [x_uic, y_uic+d_txt/2, w_txt, Def_Txt_Height];        
  220.     x_uic       = x_uic+w_txt;
  221.     pos_pop_app = [x_uic, y_uic, w_uic, Def_Btn_Height];        
  222.     w_uic       = ((2*w_fra)/3-2*bdx)/2;
  223.     x_uic       = x_fra+(w_fra-(2*w_fra)/3)/2;    
  224.     pos_pus_sel = [x_uic, y_uic, w_uic, Def_Btn_Height];
  225.     x_uic       = x_uic+w_uic+2*bdx;
  226.     pos_pus_uns = [x_uic, y_uic, w_uic, Def_Btn_Height];
  227.     y_uic       = y_uic-Def_Btn_Height-bdy;
  228.     w_uic       = (5*txt_width)/2;
  229.     x_uic       = xleft+(w_rem-w_uic)/2;
  230.     pos_txt_cfs = [x_uic, y_uic, w_uic, Def_Txt_Height];
  231.     wx          = 2;
  232.     wbase       = 2*(w_rem-5*wx)/5;
  233.     w_lev       = [4*wbase ; 7*wbase ; 12*wbase ; 7*wbase]/12;
  234.     x_uic       = xleft+wx;
  235.     y_uic       = y_uic-Def_Btn_Height;
  236.     pos_lev_tit = [x_uic, y_uic, w_lev(1), Def_Txt_Height];
  237.     pos_lev_tit = pos_lev_tit(ones(1,4),:);
  238.     pos_lev_tit(:,3) = w_lev;
  239.     for k=1:3 , pos_lev_tit(k+1,1) = pos_lev_tit(k,1)+pos_lev_tit(k,3); end
  240.     y_uic       = pos_lev_tit(1,2)-levmaxMAX*(Def_Btn_Height+d_lev);
  241.     w_uic       = w_fra/2-bdx;
  242.     x_uic       = pos_fra(1);
  243.     h_uic       = (3*Def_Btn_Height)/2;
  244.     y_uic       = pos_fra(2)-h_uic-Def_Btn_Height/2;
  245.     pos_pus_act = [x_uic, y_uic, w_uic, h_uic];
  246.     x_uic       = x_uic+w_uic+2*bdx;
  247.     pos_tog_res = [x_uic, y_uic, w_uic, h_uic];
  248.     d_h_mov     = 3*Def_Btn_Height/4;
  249.     h_txt       = Def_Txt_Height;
  250.     h_uic       = Def_Btn_Height;
  251.     y_fra_top   = pos_pop_app(2)+pos_pop_app(4)+h_txt+d_h_mov;
  252.     w_uic       = (5*txt_width)/2;
  253.     x_uic       = x_fra+(w_fra-w_uic)/2;
  254.     y_uic       = y_fra_top-h_txt-dy2;
  255.     pos_txt_mov = [x_uic, y_uic+d_txt/2, w_uic, h_txt];
  256.     y_uic       = pos_pop_app(2)-d_h_mov-h_uic;
  257.     x_uic_1     = x_fra+dx2;
  258.     x_uic_2     = x_fra+w_fra/2+dx;
  259.     w_uic_1     = txt_width;
  260.     w_uic_2     = w_fra/2-3*dx2/2;
  261.     pos_txt_min_mov = [x_uic_1, y_uic+d_txt/2, w_uic_1, h_txt];
  262.     pos_edi_min_mov = [x_uic_2, y_uic, w_uic_2, h_uic];
  263.     y_uic           = y_uic-(h_uic+d_h_mov/2);
  264.     pos_txt_stp_mov = [x_uic_1, y_uic+d_txt/2, w_uic_1, h_txt];
  265.     pos_edi_stp_mov = [x_uic_2, y_uic, w_uic_2, h_uic];
  266.     y_uic           = y_uic-(h_uic+d_h_mov/2);
  267.     pos_txt_max_mov = [x_uic_1, y_uic+d_txt/2, w_uic_1, h_txt];
  268.     pos_edi_max_mov = [x_uic_2, y_uic, w_uic_2, h_uic];
  269.     w_bas           = (w_fra-6*bdx)/12;
  270.     w_uic           = 5*w_bas;
  271.     x_uic           = x_fra+2*bdx;    
  272.     h_uic           = 1.5*Def_Btn_Height;
  273.     y_uic           = y_uic-h_uic-d_h_mov;    
  274.     pos_chk_mov_aut = [x_uic, y_uic, w_uic, h_uic];
  275.     x_uic           = x_uic+w_uic+bdx;
  276.     w_uic           = 3.5*w_bas;
  277.     pos_pus_mov_sta = [x_uic, y_uic, w_uic, h_uic];
  278.     x_uic           = x_uic+w_uic+bdx;
  279.     pos_pus_mov_sto = [x_uic, y_uic, w_uic, h_uic];
  280.     y_uic           = y_uic-h_uic-2*bdy;    
  281.     w_uic           = w_fra/2;
  282.     x_uic           = x_fra+(w_fra-w_fra/2)/2;    
  283.     pos_pus_mov_can = [x_uic, y_uic, w_uic, h_uic];
  284.     y_fra_mov       = y_uic-2*bdy;
  285.     h_fra_mov       = y_fra_top-y_fra_mov;
  286.     pos_fra_mov     = [x_fra,y_fra_mov,w_fra,h_fra_mov];
  287.     % Create UIC.
  288.     %------------
  289.     commonProp = {...
  290.                   'Parent',fig,     ...
  291.                   'Unit',fig_units  ...
  292.                   'Visible','Off'   ...
  293.                   };
  294.     comTxtProp = {commonProp{:}, ...
  295.                   'Style','Text',                 ...
  296.                   'HorizontalAlignment','center', ...
  297.                   'Backgroundcolor',bkColor       ...
  298.                   };
  299.     comEdiProp = {commonProp{:},                             ...
  300.                            'ForeGroundColor','k',            ...
  301.                            'HorizontalAlignment','center',   ...
  302.                            'Style','Edit'                    ...
  303.                            };
  304.     comFraProp = {commonProp{:},                             ...
  305.                            'BackGroundColor',Def_FraBkColor, ...
  306.                            'Style','frame'                   ...
  307.                            };
  308.     comPusProp = {commonProp{:},'Style','Pushbutton'};
  309.     comPopProp = {commonProp{:},'Style','Popupmenu'};
  310.     comChkProp = {commonProp{:},'Style','CheckBox'};
  311.     fra_utl = uicontrol(comFraProp{:},      ...
  312.                         'Style','frame',    ...
  313.                         'Position',pos_fra, ...
  314.                         'Tag',tag_fra_tool  ...
  315.                         );
  316.     fra_mov = uicontrol(comFraProp{:},          ...
  317.                         'Style','frame',        ...
  318.                         'Position',pos_fra_mov  ...
  319.                         );
  320.     txt_top = uicontrol(comTxtProp{:},          ...
  321.                         'Position',pos_txt_top, ...
  322.                         'String',str_txt_top    ...
  323.                         );
  324.     cba     = [mfilename '(''update_methode'',' str_numfig ');'];
  325.     pop_met = uicontrol(comPopProp{:},                  ...
  326.                         'Position',pos_pop_met,         ...
  327.                         'String',str_pop_met,           ...
  328.                         'HorizontalAlignment','center', ...
  329.                         'Enable',enaVal,                ...
  330.                         'Userdata',0,                   ...
  331.                         'Callback',cba                  ...
  332.                         );
  333.     txt_app = uicontrol(comTxtProp{:},          ...
  334.                         'Position',pos_txt_app, ...
  335.                         'HorizontalAlignment','left', ...
  336.                         'String',str_txt_app    ...
  337.                         );
  338.     pop_app = uicontrol(comPopProp{:},                  ...
  339.                         'Position',pos_pop_app,         ...
  340.                         'HorizontalAlignment','center', ...
  341.                         'String',str_pop_app,           ...
  342.                         'Enable',enaVal,               ...
  343.                         'Value',1,'Userdata',0          ...
  344.                         );
  345.     cba = [mfilename '(''update_AppFlag'',' str_numfig ');'];
  346.     set(pop_app,'Callback',cba);
  347.     tip     = 'Select using a select Box';
  348.     cba     = [mfilename '(''select'',' str_numfig ');'];
  349.     pus_sel = uicontrol(comPusProp{:},          ...
  350.                         'Position',pos_pus_sel, ...
  351.                         'String',xlate(str_pus_sel),   ...
  352.                         'Visible','Off',        ...
  353.                         'Tooltip',tip,          ...
  354.                         'callback',cba          ...
  355.                         );
  356.     tip     = 'Unselect using a select Box';
  357.     cba     = [mfilename '(''unselect'',' str_numfig ');'];
  358.     pus_uns = uicontrol(comPusProp{:},          ...
  359.                         'Position',pos_pus_uns, ...
  360.                         'String',xlate(str_pus_uns),   ...
  361.                         'Tooltip',tip,          ...
  362.                         'Visible','Off',        ...
  363.                         'callback',cba          ...
  364.                         );
  365.     txt_cfs = uicontrol(comTxtProp{:},          ...
  366.                         'Position',pos_txt_cfs, ...
  367.                         'String',str_txt_cfs    ...
  368.                         );
  369.     txt_tit = zeros(4,1);
  370.     for k=1:4
  371.         txt_tit(k) = uicontrol(...
  372.                                comTxtProp{:},                     ...
  373.                                'Position',pos_lev_tit(k,:),       ...
  374.                                'String',deblank(str_txt_tit(k,:)) ...
  375.                                );
  376.     end
  377.     xbtn0 = xleft;
  378.     ybtn0 = pos_lev_tit(1,2)-Def_Btn_Height;
  379.     xbtn  = xbtn0;
  380.     ybtn  = ybtn0;
  381.     if ud.ydir==1
  382.         index = [1:levmaxMAX,-levmax,0];
  383.     else
  384.         index = [-levmax,levmaxMAX:-1:1,0];
  385.         ybtn  = ybtn0+(levmaxMAX-levmax)*dy_lev;
  386.     end
  387.     for j=1:length(index)
  388.         i = index(j);
  389.         pos_lev = [xbtn ybtn+d_txt/2 w_lev(1) Def_Txt_Height];
  390.         switch i
  391.           case 0
  392.             str_lev = sprintf('S');
  393.             col = wtbutils('colors','sig');
  394.           case -levmax
  395.             str_lev = sprintf('A%.0f',-i);
  396.             col = wtbutils('colors','app','text');
  397.           otherwise
  398.             str_lev = sprintf('D%.0f',i);
  399.             col = wtbutils('colors','det','text');
  400.         end
  401.         uicProp = {commonProp{:}, ...
  402.           'Enable','inactive','Backgroundcolor',bkColor,'Userdata',i};
  403.         txt_lev = uicontrol(...
  404.                      comTxtProp{:},     ...
  405.                      'Position',pos_lev,...
  406.                      'String',str_lev,  ...
  407.                      'ForeGroundColor',col, ...
  408.                      'Userdata',i       ...
  409.                      );
  410.         xbtn      = xbtn+w_lev(1)+wx;
  411.         pos_lev = [xbtn ybtn w_lev(2) Def_Btn_Height];
  412.         edi_ini = uicontrol(...
  413.                      uicProp{:}, ...
  414.                      'Style','Edit',...
  415.                      'Position',pos_lev,...
  416.                      'String','' ...
  417.                      );
  418.         xbtn    = xbtn+w_lev(2)+wx;
  419.         pos_lev = [xbtn, ybtn+sli_dy, w_lev(3), sli_hi];
  420.         sli_lev = uicontrol(...
  421.                      uicProp{:},         ...
  422.                      'Style','Slider',   ...
  423.                      'Position',pos_lev, ...
  424.                      'Min',0,'Max',2,'Value',1 ...
  425.                      );
  426.         xbtn    = xbtn+w_lev(3)+wx;
  427.         pos_lev = [xbtn ybtn w_lev(4) Def_Btn_Height];
  428.         str_val = sprintf('%1.4g',1);
  429.         edi_lev = uicontrol(...
  430.                      uicProp{:},         ...
  431.                      'Style','Edit',     ...
  432.                      'Position',pos_lev, ...
  433.                      'String','',        ...
  434.                      'HorizontalAlignment','center'...
  435.                      );
  436.         strHdl  = num2mstr([edi_ini,sli_lev,edi_lev]);
  437.         beg_cba = [mfilename '(''update_by_UIC'',' str_numfig ...
  438.                    ',' strHdl];
  439.         cba_sli = [beg_cba ',''sli'');'];
  440.         cba_edi = [beg_cba ',''edi'');'];
  441.         set(sli_lev,'Callback',cba_sli);
  442.         set(edi_lev,'Callback',cba_edi);
  443.         switch i
  444.           case 0
  445.             h_CMD_SIG = [txt_lev;edi_ini;sli_lev;edi_lev];
  446.             set(edi_lev,'Backgroundcolor',Def_EdiBkColor);
  447.           case -levmax
  448.             h_CMD_APP = [txt_lev;edi_ini;sli_lev;edi_lev];
  449.           otherwise
  450.             h_CMD_LVL(:,i) = [txt_lev;edi_ini;sli_lev;edi_lev];
  451.         end
  452.         xbtn = xbtn0;
  453.         ybtn = ybtn-dy_lev;
  454.     end
  455.     cba     = [mfilename '(''residuals'',' str_numfig ');'];
  456.     tip     = 'More on Residuals';
  457.     tog_res = uicontrol(...
  458.                         commonProp{:},          ...
  459.                         'Style','Togglebutton', ...
  460.                         'Position',pos_tog_res, ...
  461.                         'String',str_tog_res,   ...
  462.                         'Enable','off',         ...
  463.                         'Callback',cba,         ...
  464.                         'tooltip',tip,          ...
  465.                         'Interruptible','Off'   ...
  466.                         );
  467.     cba     = [mfilename '(''apply'',' str_numfig ');'];
  468.     pus_act = uicontrol(comPusProp{:},          ...
  469.                         'Position',pos_pus_act, ...
  470.                         'String',xlate(str_pus_act),   ...
  471.                         'Enable',enaVal,        ...
  472.                         'callback',cba          ...
  473.                         );
  474.     txt_mov = uicontrol(comTxtProp{:},          ...
  475.                         'Position',pos_txt_mov, ...
  476.                         'String',str_txt_mov,   ...
  477.                         'Visible','Off'         ...
  478.                         );
  479.     txt_min_mov = uicontrol(comTxtProp{:},               ...
  480.                             'Position',pos_txt_min_mov,  ...
  481.                             'HorizontalAlignment','left',...
  482.                             'String',str_txt_min_mov,    ...
  483.                             'Visible','Off'              ...
  484.                             );
  485.     cba = [mfilename '(''update_Edi_Movie'',' str_numfig ',''Min'');'];
  486.     edi_min_mov = uicontrol(comEdiProp{:},                   ...
  487.                             'Position',pos_edi_min_mov,      ...
  488.                             'String',str_edi_min_mov,        ...
  489.                             'Callback',cba,                  ...
  490.                             'Backgroundcolor',Def_EdiBkColor,...
  491.                             'Visible','Off'                  ...
  492.                             );
  493.     txt_stp_mov = uicontrol(comTxtProp{:},                   ...
  494.                             'Position',pos_txt_stp_mov,      ...
  495.                             'HorizontalAlignment','left',    ...
  496.                             'String',str_txt_stp_mov,        ...
  497.                             'Visible','Off'                  ...
  498.                             );
  499.     cba = [mfilename '(''update_Edi_Movie'',' str_numfig ',''Stp'');'];
  500.     edi_stp_mov = uicontrol(comEdiProp{:},                    ...
  501.                             'Position',pos_edi_stp_mov,       ...
  502.                             'String',str_edi_stp_mov,         ...
  503.                             'Callback',cba,                   ...
  504.                             'Backgroundcolor',Def_EdiBkColor, ...
  505.                             'Visible','Off'                   ...
  506.                             );
  507.     txt_max_mov = uicontrol(comTxtProp{:},                ...
  508.                             'Position',pos_txt_max_mov,   ...
  509.                             'HorizontalAlignment','left', ...
  510.                             'String',str_txt_max_mov,     ...
  511.                             'Visible','Off'               ...
  512.                             );
  513.     cba = [mfilename '(''update_Edi_Movie'',' str_numfig ',''Max'');'];
  514.     edi_max_mov = uicontrol(comEdiProp{:},                    ...
  515.                             'Position',pos_edi_max_mov,       ...
  516.                             'String',str_edi_max_mov,         ...
  517.                             'Callback',cba,                   ...
  518.                             'Backgroundcolor',Def_EdiBkColor, ...
  519.                             'Visible','Off'                   ...
  520.                             );
  521.     cba = [mfilename '(''Mngr_Movie'',' str_numfig ');'];
  522.     chk_mov_aut = uicontrol(comChkProp{:},              ...
  523.                             'Position',pos_chk_mov_aut, ...
  524.                             'String',str_chk_mov_aut,   ...
  525.                             'Value',1,                  ...
  526.                             'callback',cba,             ...
  527.                             'Visible','Off'             ...
  528.                             );
  529.     cba = [mfilename '(''Mngr_Movie'',' str_numfig ');'];
  530.     pus_mov_sta = uicontrol(comPusProp{:},              ...
  531.                             'Position',pos_pus_mov_sta, ...
  532.                             'String',xlate(str_pus_mov_sta),   ...
  533.                             'callback',cba,             ...
  534.                             'Visible','Off'             ...
  535.                             );
  536.     cba = [mfilename '(''Mngr_Movie'',' str_numfig ');'];
  537.     pus_mov_sto = uicontrol(comPusProp{:},              ...
  538.                             'Position',pos_pus_mov_sto, ...
  539.                             'String',xlate(str_pus_mov_sto),   ...
  540.                             'callback',cba,             ...
  541.                             'Enable','Off',             ...
  542.                             'Visible','Off'             ...
  543.                             );
  544.     cba = [mfilename '(''Mngr_Movie'',' str_numfig ');'];
  545.     pus_mov_can = uicontrol(comPusProp{:},              ...
  546.                             'Position',pos_pus_mov_can, ...
  547.                             'String',xlate(str_pus_mov_can),   ...
  548.                             'callback',cba,             ...
  549.                             'Visible','Off'             ...
  550.                             );
  551.     ud.handlesUIC = [...
  552.                      fra_utl;txt_top;pop_met;      ...
  553.                      txt_app;pop_app;txt_cfs;txt_tit(1:4); ...
  554.                      tog_res;pus_act;              ...
  555.                      ];
  556.     ud.h_CMD_SIG = h_CMD_SIG;
  557.     ud.h_CMD_APP = h_CMD_APP;
  558.     ud.h_CMD_LVL = h_CMD_LVL;
  559.     set(fra_utl,'Userdata',ud);
  560.     % Store values.
  561.     %--------------
  562.     Hdls_Sel = struct(...
  563.                       'pus_sel', pus_sel, ...
  564.                       'pus_uns', pus_uns, ...
  565.                       'pop_met', pop_met  ...
  566.                       );
  567.     Hdls_Mov = {...
  568.                 fra_mov,txt_mov,txt_app,pop_app, ...
  569.                 txt_min_mov,edi_min_mov, ...
  570.                 txt_stp_mov,edi_stp_mov, ...
  571.                 txt_max_mov,edi_max_mov, ...
  572.                 chk_mov_aut,pus_mov_sta,pus_mov_sto,pus_mov_can ...
  573.                  };
  574.     wfigmngr('storeValue',fig,'Hdls_Sel',Hdls_Sel);
  575.     wfigmngr('storeValue',fig,'Hdls_Mov',Hdls_Mov);
  576. % Add Context Sensitive Help (CSHelp).
  577. %-------------------------------------
  578. hdl_CSHelp  = [...
  579. fra_utl,txt_top,pop_met,       ...
  580. txt_app,pop_app,txt_cfs,txt_tit(:)',  ...
  581. h_CMD_SIG(:)',h_CMD_APP(:)',h_CMD_LVL(:)',  ...
  582. pus_sel,pus_uns, ...
  583. cat(2,Hdls_Mov{:})  ...
  584. ];
  585. switch toolOPT
  586. case 'cf1d' , helpName = 'CF1D_GUI';
  587. case 'cf2d' , helpName = 'CF2D_GUI';
  588. end
  589.     wfighelp('add_ContextMenu',fig,hdl_CSHelp,helpName);
  590. %-------------------------------------
  591.     varargout{1} = utnbcfs('set',fig,'position',{levmin,levmax});
  592.   case 'visible'
  593.     visVal     = lower(varargin{1});
  594.     ud.visible = visVal;
  595.     if isequal(visVal,'on')
  596.         h_CMD_LVL = h_CMD_LVL(1:4,ud.levmin:ud.levmax);
  597.     end
  598.     handles = [h_CMD_SIG(:);h_CMD_APP(:);h_CMD_LVL(:);handlesUIC(:)];
  599.     set(handles(ishandle(handles)),'visible',visVal);
  600.   case 'clean'
  601.     nameMeth = utnbcfs('get',fig,'nameMeth');
  602.     switch nameMeth
  603.       case 'Stepwise' , utnbcfs('Mngr_Movie',fig,pus_mov_can);
  604.       case {'ByLevel','Manual'}   , utnbcfs('update_methode',fig,'clean');
  605.     end
  606.     dum1 = h_CMD_SIG([2,4],:);
  607.     dum2 = h_CMD_APP([2,4],:);
  608.     dum3 = h_CMD_LVL([2,4],:);
  609.     dummy = [dum1(:);dum2(:);dum3(:)];
  610.     set(dummy,'String','');
  611.     dummy = [h_CMD_SIG(3,:),h_CMD_APP(3,:),h_CMD_LVL(3,:)];
  612.     set(dummy,'Min',0,'Value',1,'Max',2);
  613.     h_CMD_SIG = h_CMD_SIG(3:4,:);
  614.     h_CMD_APP = h_CMD_APP(3:4,:);
  615.     h_CMD_LVL = h_CMD_LVL(3:4,:);
  616.     uic = [pop_met;pop_app;pus_act;tog_res;chk_sho; ...
  617.            h_CMD_SIG(:);h_CMD_APP(:);h_CMD_LVL(:)];
  618.     set(uic,'Enable','Off');
  619.     vis_ON  = [txt_app,pop_app];
  620.     vis_OFF = [pus_sel,pus_uns];
  621.     set(vis_ON,'Visible','On')
  622.     set(vis_OFF,'Visible','Off')
  623.   case 'enable'
  624.     mode   = varargin{1};
  625.     switch mode      
  626.       case 'anal'
  627.         uic = [pop_met;pop_app;pus_act;tog_res;chk_sho];
  628.         set(uic','Enable','On');
  629.     end
  630.    case 'get'
  631.     nbarg = length(varargin);
  632.     if nbarg<1 , return; end
  633.     for k = 1:nbarg
  634.        outType = lower(varargin{k});
  635.        switch outType
  636.            case 'position'
  637.              pos_fra = get(fra,'Position');
  638.              pos_est = get(pus_act,'Position');
  639.              varargout{k} = [pos_fra(1) , pos_est(2) , pos_fra([3 4])];
  640.            case 'nbori'
  641.              hdl = [h_CMD_APP(2),...
  642.                     h_CMD_LVL(2,ud.levmax:-1:ud.levmin),h_CMD_SIG(2)];
  643.              val = get(hdl,'Value');
  644.              varargout{k} = cat(2,val{:});
  645.            case 'nbkept'
  646.              hdl = [h_CMD_APP(3),...
  647.                     h_CMD_LVL(3,ud.levmax:-1:ud.levmin),h_CMD_SIG(3)];
  648.              val = get(hdl,'Value');
  649.              varargout{k} = round(cat(2,val{:}));
  650.            case 'namemeth'
  651.              tmp = get(pop_met,{'Value','String'});
  652.              ini = tmp{2}(tmp{1},1);
  653.              switch ini
  654.                case 'G' , varargout{k} = 'Global';
  655.                case 'B' , varargout{k} = 'ByLevel';
  656.                case 'M' , varargout{k} = 'Manual';
  657.                case 'S' , varargout{k} = 'Stepwise';
  658.              end
  659.            case 'nummeth'   , varargout{k} = get(pop_met,'Value');
  660.            case 'appflag'   , varargout{k} = get(pop_app,'Value');
  661.            case 'tog_res'   , varargout{k} = tog_res;
  662.            case 'pus_act'   , varargout{k} = pus_act;
  663.            case 'handleori' , varargout{k} = ud.handleORI;
  664.            case 'handlethr' , varargout{k} = ud.handleTHR;
  665.            case 'handleres' , varargout{k} = ud.handleRES;
  666.        end
  667.     end
  668.  
  669.   case 'set'
  670.     nbarg = length(varargin);
  671.     if nbarg<1 , return; end
  672.     for k = 1:2:nbarg
  673.        argType = lower(varargin{k});
  674.        argVal  = varargin{k+1};
  675.        switch argType
  676.            case 'position'
  677.              [levmin,levmax] = deal(argVal{:});
  678.              nblevs = levmax-levmin+1;
  679.              if ud.ydir==1
  680.                  dnum_lev = (levmin-ud.levmin);
  681.              else
  682.                  dnum_lev = (ud.levmax-levmax);
  683.              end
  684.              ud.levmin = levmin;
  685.              ud.levmax = levmax;
  686.              set(fra,'Userdata',ud);
  687.              old_units = get(fig,'units');
  688.              tmpHandles = [h_CMD_SIG(:);h_CMD_APP(:);h_CMD_LVL(:); ...
  689.                            handlesUIC(:)];
  690.              tmpHandles = tmpHandles(ishandle(tmpHandles));
  691.              set(tmpHandles,'visible','off');
  692.              set([fig;tmpHandles],'units','pixels');
  693.              [pos_fra,dy_lev,y_res,y_est] = getPosFraThr(fra,nblevs,toolOPT);
  694.              set(fra,'Position',pos_fra);
  695.              ytrans = dnum_lev*dy_lev;
  696.              for j=1:size(h_CMD_LVL,2)
  697.                  for k = 1:4
  698.                      p = get(h_CMD_LVL(k,j),'Position');
  699.                      set(h_CMD_LVL(k,j),'Position',[p(1),p(2)+ytrans, ...
  700.                          p(3:4)]);
  701.                  end
  702.              end
  703.              ydir = ud.ydir;
  704.              pbase = get(h_CMD_LVL(1,levmax),'Position');
  705.              y = pbase(2)-ydir*dy_lev;
  706.              p = get(h_CMD_APP(1,1),'Position');
  707.              ytrans = y-p(2);
  708.              for k = 1:4
  709.                  p = get(h_CMD_APP(k,1),'Position');
  710.                  set(h_CMD_APP(k,1),'Position',[p(1),p(2)+ytrans,p(3:4)]);
  711.              end
  712.              set(h_CMD_APP(1,1),'String',sprintf('A%.0f',levmax));
  713.              if ydir==1
  714.                 pbase = get(h_CMD_APP(1,1),'Position');
  715.              else
  716.                 pbase = get(h_CMD_LVL(1,1),'Position');
  717.              end
  718.              y = pbase(2)-dy_lev;
  719.              p = get(h_CMD_SIG(1,1),'Position');
  720.              ytrans = y-p(2)-(dy_lev-p(4));
  721.              for k = 1:4
  722.                  p = get(h_CMD_SIG(k,1),'Position');
  723.                  set(h_CMD_SIG(k,1),'Position',[p(1),p(2)+ytrans,p(3:4)]);
  724.              end
  725.              p = get(tog_res,'Position');
  726.              ytrans = y_res-p(2);
  727.              set(tog_res,'Position',[p(1),y_res,p(3:4)]);
  728.              p = get(pus_act,'Position');
  729.              set(pus_act,'Position',[p(1),y_est,p(3:4)]);
  730.              set([fig;tmpHandles],'units',old_units);
  731.              utnbcfs('visible',fig,ud.visible);
  732.              if nargout>0
  733.                  varargout{1} = [pos_fra(1) , y_est , pos_fra([3 4])];
  734.              end
  735.            case 'nbkept'
  736.              hdl_sli = [h_CMD_APP(3),...
  737.                         h_CMD_LVL(3,ud.levmax:-1:ud.levmin),h_CMD_SIG(3)];
  738.              hdl_edi = [h_CMD_APP(4),...
  739.                         h_CMD_LVL(4,ud.levmax:-1:ud.levmin),h_CMD_SIG(4)];
  740.              for k=1:length(hdl_sli)
  741.                  nbk = argVal(k);
  742.                  set(hdl_sli(k),'Value',nbk);
  743.                  set(hdl_edi(k),'Value',nbk,'String',sprintf('%.0f',nbk));
  744.              end
  745.  
  746.            case 'handleori' , ud.handleORI = argVal; set(fra,'Userdata',ud);
  747.            case 'handlethr' , ud.handleTHR = argVal; set(fra,'Userdata',ud);
  748.            case 'handleres' , ud.handleRES = argVal; set(fra,'Userdata',ud);
  749.        end
  750.     end
  751.   case 'update_NbCfs'
  752.     typeUpd = varargin{1};
  753.     switch typeUpd
  754.        case 'clean'
  755.           len = size(h_CMD_LVL,2);
  756.           HDL = zeros(3,len+2);
  757.           for j = 2:4
  758.               HDL(j-1,:) = [h_CMD_APP(j,1),h_CMD_LVL(j,:),h_CMD_SIG(j,1)];
  759.           end
  760.           set(HDL([1 3],:),'Value',0,'String','');
  761.           set(HDL(2,:),'Min',0,'Value',0,'Max',2);
  762.        case 'anal'
  763.           levels = [ud.levmax:-1:ud.levmin];
  764.           longs = wmemtool('rmb',fig,n_membloc0,ind_longs);
  765.           longs(end) = sum(longs(1:end-1));
  766.           len = length(longs);
  767.           HDL = zeros(3,len);
  768.           for j = 2:4
  769.               HDL(j-1,:) = ...
  770.                 [h_CMD_APP(j,1),h_CMD_LVL(j,levels),h_CMD_SIG(j,1)];
  771.           end
  772.           for k = 1:len
  773.               nbk = longs(k);
  774.               txt = sprintf('%.0f',nbk);
  775.               set(HDL([1 3],k),'Value',nbk,'String',txt);
  776.               set(HDL(2,k),'Min',0,'Value',nbk,'Max',nbk);
  777.           end
  778.     end
  779.   case 'update_methode'
  780.     resetFLAG = 0;
  781.     if ~isempty(varargin)
  782.         numMeth = 1; nameMeth = 'Global';
  783.         set(pop_met,'value',numMeth);
  784.         resetMODE = varargin{1};
  785.         if isequal(resetMODE,'reset') , resetFLAG = 1; end
  786.     else
  787.         [numMeth,nameMeth] = utnbcfs('get',fig,'numMeth','nameMeth');
  788.         user = get(pop_met,'Userdata');
  789.         if isequal(user{1},numMeth) , return; end
  790.         if isequal(user{2},'Manual') , resetFLAG = 1; end
  791.     end    
  792.     set(pop_met,'Userdata',{numMeth,nameMeth});
  793.     set(txt_cfs,'String',xlate('Selected Biggest Coefficients'));
  794.     calledFUN = wfigmngr('getWinPROP',fig,'calledFUN');
  795.     if isequal(toolOPT,'cf1d')
  796.         feval(calledFUN,'set_Stems_HDL',fig,'reset',nameMeth);
  797.     end
  798.  
  799.     [Def_FraBkColor,Def_EdiBkColor] = ...
  800.         mextglob('get','Def_FraBkColor','Def_EdiBkColor');
  801.     switch nameMeth
  802.       case 'Global'
  803.         if resetFLAG
  804.             set(pop_app,'Value',1);
  805.             nbKept = utnbcfs('get',fig,'nbOri');
  806.         end
  807.         ena_INA = [h_CMD_APP(3:4)',h_CMD_LVL(3,:),h_CMD_LVL(4,:)];
  808.         ena_ON  = [h_CMD_SIG(3:4)'];
  809.         vis_ON  = [txt_app,pop_app];
  810.         vis_OFF = [pus_sel,pus_uns];
  811.         bkc_FRA = [h_CMD_APP(4),h_CMD_LVL(4,:)];
  812.         bkc_EDI = [h_CMD_SIG(4)];
  813.       case 'ByLevel'
  814.         if resetFLAG
  815.             set(pop_app,'Value',1);
  816.             nbKept = utnbcfs('get',fig,'nbOri');
  817.         end
  818.         app_Val = get(pop_app,'Value');
  819.         ena_INA = [h_CMD_SIG(3:4)'];
  820.         ena_ON  = [h_CMD_LVL(3,:),h_CMD_LVL(4,:)];
  821.         vis_ON  = [txt_app,pop_app];
  822.         vis_OFF = [pus_sel,pus_uns];
  823.         bkc_FRA = [h_CMD_SIG(4)];
  824.         bkc_EDI = [h_CMD_LVL(4,:)];
  825.         switch app_Val
  826.           case {1,3}
  827.             ena_INA = [ena_INA , h_CMD_APP(3:4)'];
  828.             bkc_FRA = [bkc_FRA , h_CMD_APP(4)];
  829.           case 2
  830.             ena_ON  = [ena_ON ,h_CMD_APP(3:4)'];
  831.             bkc_EDI = [bkc_EDI , h_CMD_APP(4)];
  832.         end
  833.       case 'Manual'
  834.         set(txt_cfs,'String',xlate('Selected coefficients'));
  835.         resetFLAG = 1;
  836.         set(pop_app,'Value',2);
  837.         nbKept = zeros(1,ud.levmax + 2);
  838.         ena_INA = [h_CMD_APP(3:4)',h_CMD_LVL(3,:),h_CMD_LVL(4,:), ...
  839.                    h_CMD_SIG(3:4)'];
  840.         ena_ON  = [];
  841.         vis_OFF = [txt_app,pop_app];
  842.         vis_ON  = [pus_sel,pus_uns];
  843.         bkc_FRA = [h_CMD_APP(4),h_CMD_LVL(4,:),h_CMD_SIG(4)];
  844.         bkc_EDI = [];
  845.       case {'Stepwise','StepWise'}
  846.         utnbcfs('Init_Movie',fig);
  847.     end
  848.     switch nameMeth
  849.       case {'Global','Manual','ByLevel'}
  850.         set(bkc_FRA,'Backgroundcolor',Def_FraBkColor);
  851.         set(bkc_EDI,'Backgroundcolor',Def_EdiBkColor);
  852.         set(ena_ON, 'Enable','On');
  853.         set(ena_INA,'Enable','Inactive');
  854.         set(vis_OFF,'Visible','Off');
  855.         set(vis_ON, 'Visible','On');
  856.         if resetFLAG
  857.             utnbcfs('update_AppFlag',fig,pop_app);
  858.             utnbcfs('set',fig,'nbKept',nbKept);
  859.             feval(calledFUN,'apply',fig);
  860.         end
  861.       case {'Stepwise','StepWise'}
  862.     end
  863.   case 'update_AppFlag'
  864.     if length(varargin)>0 , uic = varargin{1}; else , uic = gcbo; end
  865.     appFlag = get(uic,'Value');
  866.     [nameMeth,nbOri] = utnbcfs('get',fig,'nameMeth','nbOri');
  867.     switch nameMeth
  868.       case {'Global','ByLevel','Manual'}
  869.         if isequal(nameMeth,'ByLevel') && (appFlag==2)
  870.             BkColor = mextglob('get','Def_EdiBkColor');
  871.             ena_val = 'On';
  872.         else
  873.             BkColor = mextglob('get','Def_FraBkColor');
  874.             ena_val = 'inactive';
  875.         end
  876.         set(h_CMD_APP(3:4),'Enable',ena_val);
  877.         set(h_CMD_APP(4),'Backgroundcolor',BkColor);
  878.         switch appFlag
  879.           case {1,3}
  880.             switch appFlag
  881.               case 1 , App_Len = nbOri(1); maxVal = nbOri(end);
  882.               case 3 , App_Len = 0;        maxVal = nbOri(end)-nbOri(1);
  883.             end  
  884.             set(h_CMD_APP(3),'Value',App_Len);
  885.             set(h_CMD_SIG(3),'Min',App_Len,'Value',maxVal,'Max',maxVal)
  886.             eval(get(h_CMD_APP(3),'Callback'));
  887.           case 2
  888.             maxVal = nbOri(end);
  889.             set(h_CMD_SIG(3),'Min',0,'Max',maxVal)
  890.         end
  891.       case {'Stepwise'}
  892.         %--------------------------%
  893.         % Option: UPDATE_APP_MOVIE %
  894.         %--------------------------%
  895.         Nb_Coefs = nbOri(end);
  896.         App_Len  = nbOri(1);
  897.         Min_Val  = wstr2num(get(edi_min_mov,'String'));
  898.         Max_Val  = wstr2num(get(edi_max_mov,'String'));
  899.         switch appFlag
  900.           case 1 , Min_Val = App_Len; Max_Val = Nb_Coefs;
  901.           case 2 , Min_Val = 1;       Max_Val = Nb_Coefs;
  902.           case 3 , Min_Val = 1;       Max_Val = Nb_Coefs-App_Len;
  903.         end
  904.         dif_Val = min([30,Max_Val-Min_Val,round(0.05*Nb_Coefs)]);
  905.         def_Max_Val = Min_Val+dif_Val;
  906.         set(edi_min_mov,'String',sprintf('%.0f',Min_Val));
  907.         set(edi_max_mov,'String',sprintf('%.0f',def_Max_Val));
  908.         set(txt_max_mov,'String',sprintf('Max < %.0f', Max_Val+1));
  909.     end
  910.   case 'update_by_UIC'
  911.     strHdl = varargin{1};
  912.     typHdl = varargin{2};
  913.     edi_0 = strHdl(1);
  914.     sli   = strHdl(2);
  915.     edi   = strHdl(3);
  916.     idx   = get(edi_0,'Userdata');
  917.     [nameMeth,nbOri] = utnbcfs('get',fig,'nameMeth','nbOri');
  918.     appFlag = get(pop_app,'Value');
  919.     sliValues = get(sli,{'Min','Value','Max'});
  920.     sliValues = round(cat(2,sliValues{:}));
  921.     switch typHdl
  922.       case 'sli' , nbcfs = sliValues(2);
  923.       case 'edi'
  924.         valstr = get(edi,'string');
  925.         [nbcfs,count,err] = sscanf(valstr,'%f');
  926.         if (count~=1) || ~isempty(err)
  927.             nbcfs = sliValues(2);
  928.             set(edi,'Value',nbcfs,'string',sprintf('%.0f',nbcfs));
  929.             return;
  930.         else
  931.             if     nbcfs<sliValues(1) , nbcfs = sliValues(1);
  932.             elseif nbcfs>sliValues(3) , nbcfs = sliValues(3);
  933.             end
  934.         end
  935.     end 
  936.     set(sli,'Value',nbcfs);
  937.     set(edi,'Value',nbcfs,'string',sprintf('%.0f',nbcfs));
  938.     switch nameMeth
  939.       case 'Global'
  940.         if idx>=0
  941.             [first,last,idxsort,idxByLev] = ...
  942.                  wmemtool('rmb',fig,n_membloc0, ...
  943.                         ind_first,ind_last,...
  944.                         ind_sort,ind_By_Lev);
  945.             len = length(idxByLev);
  946.             switch toolOPT
  947.               case 'cf1d'
  948.                 nbKept = zeros(1,len+1);
  949.                 switch appFlag
  950.                   case {1,3}
  951.                     if appFlag==1 , nbKept(1) = nbOri(1); end
  952.                     idxsort(idxByLev{1}) = [];
  953.                     nbcfs = nbcfs-nbKept(1);
  954.                     kBeg = 2;
  955.                   case 2 , kBeg = 1;
  956.                 end
  957.                 idxsort = idxsort(end-nbcfs+1:end);
  958.                 for k=kBeg:len
  959.                     idxByLev{k} = find((first(k)<=idxsort) & ...
  960.                                        (idxsort<=last(k)));
  961.                     nbKept(k) = length(idxByLev{k});
  962.                 end
  963.               case 'cf2d'
  964.                 nbLev  = (len-1)/3;
  965.                 nbKept = zeros(1,2+nbLev);
  966.                 switch appFlag
  967.                   case {1,3}
  968.                     if appFlag==1 , nbKept(1) = nbOri(1); end
  969.                     idxsort(idxByLev{1}) = [];
  970.                     nbcfs = nbcfs-nbKept(1);
  971.                     kBeg = 2;
  972.                   case 2 , kBeg = 1;
  973.                 end
  974.                 idxsort  = idxsort(end-nbcfs+1:end);
  975.                 for k=kBeg:len
  976.                     idxByLev{k} = find((first(k)<=idxsort) & ...
  977.                                        (idxsort<=last(k)));
  978.                 end
  979.                 if appFlag==2 , nbKept(1) = length(idxByLev{1}); end
  980.                 iBeg = 2;
  981.                 for jj = 1:nbLev
  982.                     iEnd = iBeg+2;
  983.                     nbKept(jj+1) = length(cat(2,idxByLev{iBeg:iEnd}));
  984.                     iBeg = iEnd+1;
  985.                 end
  986.             end
  987.         else   % For approximation case.
  988.             nbKept = utnbcfs('get',fig,'nbKept');
  989.         end
  990.         nbKept(end) = sum(nbKept(1:end-1));
  991.         utnbcfs('set',fig,'nbKept',nbKept);
  992.       case 'ByLevel'
  993.         nbKept = utnbcfs('get',fig,'nbKept');
  994.         nbKept(end) = sum(nbKept(1:end-1));
  995.         utnbcfs('set',fig,'nbKept',nbKept);
  996.       case 'Manual'
  997.       case 'Stepwise'
  998.     end
  999.   case 'residuals'
  1000.     [handleORI,handleTHR,handleRES] = ...
  1001.         utnbcfs('get',fig,'handleORI','handleTHR','handleRES');
  1002.     wmoreres('create',fig,tog_res,handleRES,handleORI,handleTHR,'blocPAR');
  1003.   case {'apply','select','unselect'}
  1004.     calledFUN = wfigmngr('getWinPROP',fig,'calledFUN');
  1005.     feval(calledFUN,option,fig);
  1006.  
  1007.   case 'Init_Movie'
  1008.     %--------------------%
  1009.     % Option: INIT_MOVIE %
  1010.     %--------------------%
  1011.     pop_lev = utanapar('handles',fig,'lev');
  1012.     level   = get(pop_lev,'value');
  1013.     h_CMD_LVL = h_CMD_LVL(:,1:level);
  1014.     hdl_OFF = [...
  1015.               fra;txt_top;pop_met;txt_cfs;txt_tit(:); ...
  1016.               h_CMD_LVL(:);h_CMD_APP(:);h_CMD_SIG(:); ...
  1017.               pus_act;tog_res;pus_ana                 ...
  1018.               ];
  1019.     if ~isempty(chk_sho)
  1020.        pos_chk = get(chk_sho,'Position');
  1021.        pos_fra = get(fra_mov,'Position');
  1022.        pos_chk(2) = pos_fra(2)-1.5*pos_chk(4);
  1023.        set(chk_sho,'Position',pos_chk);
  1024.     end
  1025.     hdl_OFF = hdl_OFF(ishandle(hdl_OFF));
  1026.     set(pus_mov_can,'Userdata',hdl_OFF);
  1027.     set([hdl_OFF;pus_sel;pus_uns],'Visible','Off');
  1028.     set(Hdls_toolPos,'Enable','Inactive');
  1029.     set(cat(1,Hdls_Mov{:}),'visible','On');
  1030.     drawnow
  1031.     app_val = get(pop_app,'Value');
  1032.     longs   = wmemtool('rmb',fig,n_membloc0,ind_longs);
  1033.     Stp_Val = 1;
  1034.     Nb_Coefs = sum(longs(1:end-1));
  1035.     App_Len  = longs(1);
  1036.     switch app_val
  1037.       case 1 , Min_Val = App_Len; Max_Val = Nb_Coefs;
  1038.       case 2 , Min_Val = 1;       Max_Val = Nb_Coefs;
  1039.       case 3 , Min_Val = 1;       Max_Val = Nb_Coefs-App_Len;
  1040.     end
  1041.     dif_Val = min([30,Max_Val-Min_Val,round(0.05*Nb_Coefs)]);
  1042.     def_Max_Val = Min_Val+dif_Val;
  1043.     set(edi_stp_mov,'String',sprintf('%.0f',Stp_Val),'Userdata',Stp_Val);
  1044.     set(edi_min_mov,'String',sprintf('%.0f',Min_Val),'Userdata',Min_Val);
  1045.     set(edi_max_mov,'String',sprintf('%.0f',def_Max_Val),'Userdata',Max_Val);
  1046.     set(txt_max_mov,'String',sprintf('Max < %.0f', Max_Val+1));
  1047.     % Initialize plot.
  1048.     %-----------------
  1049.     calledFUN = wfigmngr('getWinPROP',fig,'calledFUN');
  1050.     feval(calledFUN,'Apply_Movie',fig,[]);
  1051.   case 'Mngr_Movie'
  1052.     %--------------------%
  1053.     % Option: MNGR_MOVIE %
  1054.     %--------------------%
  1055.     if length(varargin)>0 , uic = varargin{1}; else , uic = gcbo; end
  1056.     hdl = [chk_mov_aut ; pus_mov_sta ; pus_mov_sto ; pus_mov_can];
  1057.     idx = find(uic==hdl);
  1058.     okAuto = get(chk_mov_aut,'Value');
  1059.     if (idx==2) || (idx==3 && ~okAuto)
  1060.         Min_Val = wstr2num(get(edi_min_mov,'String'));
  1061.         Stp_Val = wstr2num(get(edi_stp_mov,'String'));
  1062.         Max_Val = wstr2num(get(edi_max_mov,'String'));
  1063.         movieSET = [Min_Val:Stp_Val:Max_Val];
  1064.         nbInSet  = length(movieSET);
  1065.         App_Val = get(pop_app,'Value');
  1066.         calledFUN = wfigmngr('getWinPROP',fig,'calledFUN');
  1067.         setIDX = get(chk_mov_aut,'Userdata');
  1068.     end
  1069.    
  1070.     switch idx
  1071.       case 1    % Option: AUTOPLAY_MOVIE %
  1072.         if okAuto
  1073.            set(pus_mov_sta,'String',xlate('Start'),'Enable','On')
  1074.            set(pus_mov_sto,'String',xlate('Stop'),'Enable','Off','Userdata',[])
  1075.         else
  1076.            set(chk_mov_aut,'Userdata',0);
  1077.            set(pus_mov_sta,'String',xlate('<< Prev'),'Enable','Off')
  1078.            set(pus_mov_sto,'String',xlate('Next >>'),'Enable','On')
  1079.         end
  1080.       case 2    % Option: START_MOVIE or PREVIOUS %
  1081.         if okAuto
  1082.            set([chk_mov_aut,pus_mov_sta,pus_mov_can],'Enable','Off');
  1083.            set(pus_mov_sto,'Enable','On');
  1084.            feval(calledFUN,'Apply_Movie',fig,movieSET,App_Val,pus_mov_sto);
  1085.            set(pus_mov_sto,'Enable','Off');    
  1086.            set([chk_mov_aut,pus_mov_sta,pus_mov_can],'Enable','On');
  1087.         else
  1088.             setIDX = setIDX-1;
  1089.         end
  1090.       case 3    % Option: STOP_MOVIE or NEXT %
  1091.         if okAuto
  1092.            set(pus_mov_sto,'Userdata',1);
  1093.         else
  1094.             setIDX = setIDX+1;          
  1095.         end
  1096.       case 4    % Option: CANCEL_MOVIE %
  1097.         set(cat(1,Hdls_Mov{:}),'visible','Off');
  1098.         if ~okAuto
  1099.            set(chk_mov_aut,'Value',1,'Userdata',[])
  1100.            set(pus_mov_sta,'String',xlate('Start'),'Enable','On')
  1101.            set(pus_mov_sto,'String',xlate('Stop'),'Enable','Off','Userdata',[])
  1102.         end
  1103.         if ~isempty(chk_sho)
  1104.             pos_chk = get(chk_sho,'Position');
  1105.             pos_tog = get(tog_res,'Position');
  1106.             pos_chk(2) = pos_tog(2)-1.5*pos_chk(4);
  1107.             set(chk_sho,'Position',pos_chk);
  1108.         end
  1109.         hdl_ON = get(pus_mov_can,'Userdata');
  1110.         set(hdl_ON,'Visible','On');
  1111.         set(Hdls_toolPos,'Enable','On');
  1112.         utnbcfs('update_methode',fig,'reset');       
  1113.     end
  1114.     if ~okAuto && (idx==2 || idx==3)
  1115.         if (0<=setIDX) && (setIDX<=nbInSet)
  1116.             if setIDX>0 ,       enaSTA = 'On'; else , enaSTA = 'Off'; end
  1117.             if setIDX<nbInSet , enaSTO = 'On'; else , enaSTO = 'Off'; end            
  1118.             set([chk_mov_aut,pus_mov_can,pus_mov_sta,pus_mov_sto],...
  1119.                 'Enable','Inactive');
  1120.             set(chk_mov_aut,'Userdata',setIDX)
  1121.             if setIDX==0 , CFS = [] ; else  , CFS = movieSET(setIDX); end    
  1122.             feval(calledFUN,'Apply_Movie',fig,CFS ,App_Val,pus_mov_sto);
  1123.             set([chk_mov_aut,pus_mov_can],'Enable','On');
  1124.             set(pus_mov_sta,'Enable',enaSTA);
  1125.             set(pus_mov_sto,'Enable',enaSTO);                       
  1126.         end
  1127.     end
  1128.   case 'update_Edi_Movie'
  1129.   %--------------------------%
  1130.   % Option: UPDATE_EDI_MOVIE %
  1131.   %--------------------------%
  1132.     Edi_Val = varargin{1};
  1133.  
  1134.     % Get stored structure.
  1135.     %----------------------
  1136.     longs = wmemtool('rmb',fig,n_membloc0,ind_longs); 
  1137.     app_val  = get(pop_app,'Value');
  1138.     Nb_Coefs = sum(longs(1:end-1));
  1139.     App_Len  = longs(1);
  1140.     switch app_val
  1141.       case 1 , minPos = App_Len; maxPos = Nb_Coefs;
  1142.       case 2 , minPos = 1;       maxPos = Nb_Coefs;
  1143.       case 3 , minPos = 1;       maxPos = Nb_Coefs-App_Len;
  1144.     end
  1145.     Max_Val = wstr2num(get(edi_max_mov,'String'));
  1146.     Min_Val = wstr2num(get(edi_min_mov,'String'));
  1147.     Stp_Val = wstr2num(get(edi_stp_mov,'String'));
  1148.  
  1149.     switch Edi_Val
  1150.       case 'Min'
  1151.         if  isempty(Min_Val)
  1152.             Min_Val = get(edi_min_mov,'Userdata');        
  1153.         else
  1154.             if     Min_Val > maxPos , Min_Val = maxPos;
  1155.             elseif Min_Val < minPos , Min_Val = minPos;
  1156.             end
  1157.             set(edi_min_mov,'Userdata',Min_Val);
  1158.             if Min_Val > Max_Val
  1159.                 set(edi_max_mov,...
  1160.                     'String',sprintf('%.0f',Min_Val),'Userdata',Min_Val);
  1161.             end   
  1162.         end
  1163.         set(edi_min_mov,'String',sprintf('%.0f',Min_Val));
  1164.         if Min_Val > Max_Val
  1165.             set(edi_max_mov,...
  1166.                 'String',sprintf('%.0f',Min_Val),'Userdata',Min_Val);
  1167.         end
  1168.       case 'Stp'
  1169.         if  isempty(Stp_Val) || Stp_Val < 1 || ...
  1170.             Stp_Val > Nb_Coefs || Stp_Val > Max_Val
  1171.             Stp_Val = get(edi_stp_mov,'Userdata');
  1172.         else
  1173.             set(edi_stp_mov,'Userdata',Stp_Val);
  1174.         end
  1175.         set(edi_stp_mov,'String',sprintf('%.0f',Stp_Val));
  1176.       case 'Max'
  1177.         if  isempty(Max_Val)
  1178.             Max_Val = get(edi_max_mov,'Userdata');
  1179.         else
  1180.             if     Max_Val > maxPos , Max_Val = maxPos;
  1181.             elseif Max_Val < minPos , Max_Val = minPos;
  1182.             end
  1183.             set(edi_max_mov,'Userdata',Max_Val);            
  1184.         end
  1185.         set(edi_max_mov,'String',sprintf('%.0f',Max_Val));
  1186.         if Max_Val < Min_Val
  1187.             set(edi_min_mov,...
  1188.                 'String',sprintf('%.0f',Max_Val),'Userdata',Max_Val);
  1189.         end
  1190.     end 
  1191.   case 'demo'
  1192.   %--------------%
  1193.   % Option: DEMO %
  1194.   %--------------%
  1195.   parDemo  = varargin{1};
  1196.   nameMeth = parDemo{1};
  1197.   if length(parDemo)==1
  1198.       parDemo = [];
  1199.   else
  1200.       parDemo = parDemo{2};
  1201.   end
  1202.   switch nameMeth
  1203.     case 'Global' 
  1204.       switch toolOPT
  1205.         case 'cf1d'
  1206.           [coefs,longs] = wmemtool('rmb',fig,n_membloc0, ...
  1207.                                    ind_coefs,ind_longs);
  1208.           [thr,nkeep] = wdcbm(coefs,longs,3);
  1209.           nkeep  = fliplr(nkeep);
  1210.           lkeep  = length(nkeep);
  1211.           nbKept = longs;
  1212.           nbKept(2:1+lkeep) = nkeep;
  1213.           nbKept(end) = sum(nbKept(1:end-1));
  1214.           utnbcfs('set',fig,'nbKept',nbKept);
  1215.           cf1dtool('apply',fig);
  1216.           cf1dtool('show_ori_sig',fig,'On');
  1217.         case 'cf2d'
  1218.           [coefs,sizes] = wmemtool('rmb',fig,n_membloc0, ...
  1219.                                    ind_coefs,ind_sizes);
  1220.           [thr,nkeep] = wdcbm2(coefs,sizes,1.5);
  1221.           nkeep  = fliplr(nkeep);
  1222.           lkeep  = length(nkeep);
  1223.           nbKept = utnbcfs('get',fig,'nbKept');
  1224.           nbKept(2:1+lkeep) = nkeep;
  1225.           nbKept(end) = sum(nbKept(1:end-1));
  1226.           utnbcfs('set',fig,'nbKept',nbKept);
  1227.           cf2dtool('apply',fig);
  1228.       end
  1229.       
  1230.     case 'Stepwise' 
  1231.       switch toolOPT
  1232.         case 'cf1d'
  1233.           numMeth = 4;
  1234.           Stp_Val = 10;
  1235.           nb_Step = 15;
  1236.         case 'cf2d'
  1237.           numMeth = 3;
  1238.           Stp_Val = 20;
  1239.           nb_Step = 15;
  1240.       end
  1241.       nbOri = utnbcfs('get',fig,'nbOri');
  1242.       set(pop_met,'Value',numMeth);
  1243.       utnbcfs('update_methode',fig)
  1244.       if isempty(parDemo)
  1245.           set(edi_min_mov,'String',sprintf('%.0f',1));
  1246.           utnbcfs('update_Edi_Movie',fig,'Min');
  1247.           Min_Val = wstr2num(get(edi_min_mov,'String'));
  1248.           Max_Val = min(Min_Val+nb_Step*Stp_Val,nbOri(end));
  1249.       else
  1250.           Min_Val = parDemo(1);
  1251.           Stp_Val = parDemo(2);
  1252.           Max_Val = parDemo(3);
  1253.       end
  1254.       set(edi_min_mov,'String',sprintf('%.0f',Min_Val));
  1255.       set(edi_stp_mov,'String',sprintf('%.0f',Stp_Val));
  1256.       set(edi_max_mov,'String',sprintf('%.0f',Max_Val));
  1257.       utnbcfs('update_Edi_Movie',fig,'Max')
  1258.       utnbcfs('update_Edi_Movie',fig,'Stp')
  1259.       pause(1)
  1260.       utnbcfs('Mngr_Movie',fig,pus_mov_sta);
  1261.   end
  1262. end
  1263. %=============================================================================%
  1264. % INTERNAL FUNCTIONS
  1265. %=============================================================================%
  1266. %-----------------------------------------------------------------------------%
  1267. function [pos_fra,dy_lev,y_res,y_est] = getPosFraThr(fra,nblevs,toolOPT)
  1268. Def_Btn_Height = mextglob('get','Def_Btn_Height');
  1269. d_lev = 2;
  1270. bdy   = 4;
  1271. pos_fra = get(fra,'Position');
  1272. top_fra = pos_fra(2)+pos_fra(4);
  1273. switch  toolOPT
  1274.   case {'cf1d','cf2d'} , NB_Height = 6;
  1275. end
  1276. h_ini   = (NB_Height-1)*bdy+NB_Height*Def_Btn_Height;
  1277. h_fra   = h_ini+ nblevs*(Def_Btn_Height+d_lev)+ ...
  1278.           depOfMachine(Def_Btn_Height);
  1279. pos_fra(2) = top_fra-h_fra;
  1280. pos_fra(4) = h_fra;
  1281. dy_lev = d_lev+Def_Btn_Height;
  1282. y_est  = pos_fra(2)-(3*Def_Btn_Height)/2-Def_Btn_Height/2;
  1283. y_res  = y_est;
  1284. %-----------------------------------------------------------------------------%
  1285. function varargout = depOfMachine(varargin)
  1286. btn_height = varargin{1};
  1287. scrSize = get(0,'ScreenSize');
  1288. if scrSize(4)<600
  1289.     height = btn_height;
  1290. elseif scrSize(4)<800
  1291.     height = 3*btn_height/2;
  1292. else
  1293.     height = 3*btn_height/2;
  1294. end
  1295. varargout = {height};
  1296. %-----------------------------------------------------------------------------%
  1297. %=============================================================================%