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

波变换

开发平台:

Matlab

  1. function varargout = wfighelp(option,varargin)
  2. %WFIGHELP Wavelet Toolbox Utilities for Help system functions and menus
  3. %   VARARGOUT = WFIGHELP(OPTION,VARARGIN)
  4. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 19-Dec-2000.
  5. %   Last Revision: 03-Feb-2003.
  6. %   Copyright 1995-2004 The MathWorks, Inc.
  7. %   $Revision: 1.10.4.2 $ $Date: 2004/03/15 22:42:47 $
  8. % Flags used in next version to update the Toolbox.
  9. %--------------------------------------------------
  10. AddItemflag = 1;
  11. switch option
  12. case 'set'
  13.         hdl_HelpMenu = varargin{1};
  14.         win_type = varargin{2};
  15. switch win_type
  16.   case {'ExtFig_Demos'}
  17.             WhatIsflag = 0; Demosflag = 0;
  18.               
  19.           otherwise
  20.             WhatIsflag = 1; Demosflag = 1;
  21.         end       
  22. setMenu(hdl_HelpMenu,WhatIsflag,Demosflag);
  23. case 'addHelpTool'
  24.         fig  = varargin{1};
  25. label   = varargin{2};
  26. idxHelp = varargin{3};
  27. ud.idxHelp = idxHelp;
  28. m_help = wfigmngr('getmenus',fig,'help');
  29. uimenu(m_help, ...
  30. 'Label',label, ...
  31. 'Position',1,  ...
  32. 'Callback',@cb_Help_Tool, ...
  33. 'Userdata',ud ...
  34. );
  35. case 'addHelpItem'
  36. if ~AddItemflag  , return; end;
  37.         fig  = varargin{1};
  38. label   = varargin{2};
  39. idxHelp = varargin{3};
  40. ud.idxHelp = idxHelp;
  41. m_help = wfigmngr('getmenus',fig,'help');
  42. m_child = findall(m_help,'type','uimenu','Parent',m_help);
  43. m_item  = findobj(m_child,'Tag','Item_Help');
  44. if isempty(m_item)
  45. m_wtbx  = findobj(m_child,'Tag','WTBX_Help');
  46. m_wthis = findobj(m_child,'Tag','WhatThis_Help');
  47. if ~isempty(m_wthis)
  48. pos = get(m_wthis,'Position')+1;
  49. else
  50. pos = get(m_wtbx,'Position')+1;
  51. end
  52. sep = 'On';
  53. else
  54. pos = get(m_item,'Position');
  55. if iscell(pos) , pos = cat(1,pos{:}); end
  56. pos = max(pos)+1;
  57. sep = 'Off';
  58. end
  59. uimenu(m_help,...
  60. 'Label',label,'Position',pos, ...
  61. 'Separator',sep,'Tag','Item_Help', ...
  62. 'Callback',@cb_Help_Tool,'Userdata',ud);
  63. case 'add_ContextMenu'
  64. add_ContextMenu(varargin{:});
  65. end
  66. %=======================================================================%
  67. % This Internal function is built the "uiContextMenus" associated to
  68. % several handle grahics in the Wavelet Toolbox GUI. 
  69. % ------------------------------------------------------------------
  70. % Here is where all the handle-to-help relationships are constructed
  71. % ==================================================================
  72. % Each relationship is set up as follows:
  73. %
  74. %      add_ContextMenu(hFig,[vector_of_UI_handles],tagString);
  75. %
  76. % where tagStr corresponds to the link used in the doc map file.
  77. % ------------------------------------------------------------------
  78. function add_ContextMenu(hFig,hItem,tagStr)
  79. % Add a "What's This?" context menu.
  80. hc = uicontextmenu('parent',hFig);
  81. uimenu('Label','What''s This?',...
  82. 'Callback',@HelpGeneral,...
  83. 'Parent',hc,...
  84. 'Tag',['WT?' tagStr]);
  85. hItem = hItem(ishandle(hItem));
  86. if ~isempty(hItem) , set(hItem,'uicontextmenu',hc); end
  87. % ------------------------------------------------------------------
  88. %=======================================================================%
  89. %=======================================================================%
  90. %---------------------------------------------------------------------%
  91. function setMenu(h,WhatIsflag,Demosflag)
  92. sub = findall(h,'type','uimenu','Parent',h);
  93. delete(sub); sub = [];
  94. idx = 1;
  95. sub(idx) = uimenu(h, ...
  96. 'Label', 'Wavelet &Toolbox Help', ...
  97. 'Position',idx, ...
  98. 'Tag','WTBX_Help', ...
  99. 'CallBack',@cb_Help_Product ...
  100. );
  101. if WhatIsflag
  102. idx = idx+1;
  103. sub(idx)= uimenu(h, ...
  104. 'Label', '&What''s This?', ...
  105. 'Position',idx, ...
  106. 'Separator','On', ...
  107.     'Tag','WhatThis_Help', ...
  108. 'CallBack',@cb_HelpWhatsThis ...
  109. );
  110. end
  111. if Demosflag
  112. idx = idx+1;
  113. sub(idx)= uimenu(h, ...
  114. 'Label', '&Demos', ...
  115. 'Position',idx, ...
  116. 'Separator','On', ...
  117. 'CallBack',@cb_Help_Demos ...
  118. );
  119. end
  120. idx = idx+1;
  121. sub(idx)= uimenu(h, ...
  122. 'Label', '&About Wavelet Toolbox ...', ...
  123. 'Position',idx, ...
  124. 'Separator','On', ...
  125. 'CallBack',@cb_Help_About ...
  126. );
  127. %---------------------------------------------------------------------%
  128. function cb_Help_Tool(hco,eventStruct)
  129. ud = get(hco,'Userdata');
  130. helpItem = ud.idxHelp;
  131. bring_up_help_window(gcbf, helpItem);
  132. %---------------------------------------------------------------------%
  133. function cb_Help_Product(hco,eventStruct)
  134. doc wavelet;  % Or helpview([docroot 'toolboxwavelet'])
  135. %---------------------------------------------------------------------%
  136. function cb_HelpWhatsThis(hco,eventStruct)
  137. % HelpWhatsThis_cb Get "What's This?" help
  138. %   This mimics the context-menu help selection, but allows
  139. %   cursor-selection of the help topic
  140. hFig = gcbf;
  141. cshelp(hFig);
  142. set(handle(hFig),'cshelpmode','on');
  143. set(hFig,'HelpFcn',@figHelpFcn);
  144. %---------------------------------------------------------------------%
  145. % --------------------------------------------------------------
  146. % General Context Sensitive Help (CSH) system rules:
  147. %  - context menus that launch the "What's This?" item have their
  148. %    tag set to 'WT?...', where the '...' is the "keyword" for the
  149. %    help lookup system.
  150. % --------------------------------------------------------------
  151. function figHelpFcn(hco,eventStruct)
  152. % figHelpFcn Figure Help function called from either
  153. % the menu-based "What's This?" function, or the toolbar icon.
  154. hFig  = gcbf;
  155. hOver = gco;  % handle to object under pointer
  156. % Dispatch to context help.
  157. hc = get(hOver,'uicontextmenu');
  158. hm = get(hc,'children');  % menu(s) pointed to by context menu
  159. % Multiple entries (children) of context-menu may be present
  160. % Tag is a string, but we may get a cell-array of strings if
  161. % multiple context menus are present:
  162. % Find 'What's This?' help entry
  163. tag = get(hm,'tag');
  164. helpIdx = find(strncmp(tag,'WT?',3));
  165. if ~isempty(helpIdx),
  166.     % in case there were accidentally multiple 'WT?' entries,
  167.     % take the first (and hopefully, the only) index.
  168.     if iscell(tag),
  169.     tag = tag{helpIdx(1)};
  170.     end
  171. HelpGeneral([],[],tag);
  172. end
  173. set(handle(hFig),'cshelpmode','off');
  174. %---------------------------------------------------------------------%
  175. function cb_Help_Demos(hco,eventStruct)
  176. demo toolbox wavelet
  177. %---------------------------------------------------------------------%
  178. function cb_Help_About(hco,eventStruct)
  179. tlbx = ver('wavelet');
  180. s1 = sprintf('%s version %s', tlbx.Name, tlbx.Version);
  181. s2 = sprintf('Copyright 1995-%s The MathWorks, Inc.', datestr(tlbx.Date, 10));
  182. str_vers = strvcat(s1,s2);
  183. CreateStruct.WindowStyle = 'replace';
  184. CreateStruct.Interpreter = 'tex';
  185. Title    = 'Wavelet Toolbox';
  186. NB       = 64;
  187. IconData = ([1:NB]'*[1:NB])/NB;
  188. IconCMap = jet(NB);
  189. try
  190.   load('wtbxicon.mat')
  191.   IconData = IconData+11*X;
  192. end
  193. msgbox(str_vers,Title,'custom',IconData,IconCMap,CreateStruct);
  194. %---------------------------------------------------------------------%
  195. function HelpGeneral(hco,eventStruct,tag)
  196. % HelpGeneral Bring up the help corresponding to the tag string.
  197. hFig = gcbf;
  198. hco  = gcbo;
  199. if nargin<3, tag = get(hco,'tag'); end
  200. % Check for legal tag string
  201. if ~ischar(tag),
  202.    helpError(hFig,'Invalid context-sensitive help tag.');
  203.    return
  204. end
  205. % Remove 'WT?' prefix;
  206. if strncmp(tag,'WT?',3),
  207.     tag(1:3) = '';
  208. else
  209.     msg = 'Context-sensitive help Tag string must begin with the "WT?" prefix.';
  210.     helpError(hFig,msg);
  211.     return
  212. end
  213. % Intercept general tags and map them to specific tags in the doc.
  214. doclink = tag_mapping(hFig,tag);
  215. bring_up_help_window(hFig,doclink);
  216. %---------------------------------------------------------------------%
  217. function tag = tag_mapping(hFig,tag);
  218. % Intercept general tags to differentiate as appropriate, if 
  219. % necessary, otherwise, return the input tag string.
  220. switch tag
  221. case 'dummy'   % tag = FONCTION(hFig,tag);
  222. end
  223. %---------------------------------------------------------------------%
  224. function bring_up_help_window(hFig,tag);
  225. % Attempt to bring up helpview
  226. % Provide appropriate error messages on failure
  227. try, callHelpViewer(tag);
  228.     
  229. catch,
  230.     % Help failed
  231.     % Do some basic debugging of the help system:
  232.     msg = {'';
  233.         'Failed to find on-line help entry:';
  234.         ['   "' tag '"'];
  235.         ''};
  236.     
  237.     if isempty(docroot),
  238.         msg = [msg; ...
  239. {'The "docroot" command is used to identify the on-line documentation';
  240.             'path, and it has returned an empty string.  This usually indicates';
  241.             'that you have not installed on-line help, or you have not properly';
  242.             'set up the MATLAB Preferences.';
  243.             ''}];
  244.     else
  245.         msg = [msg; ...
  246. {'The "docroot" command is used to identify the on-line documentation';
  247.             'path, and it has returned a non-empty string.  This generally indicates';
  248.             'that you have installed on-line help, but the specified directory path';
  249.             'may be incorrect.';
  250.             ''}];
  251.     end
  252.     msg = [msg;
  253. {'To modify your preference settings for the documentation path, go';
  254. 'to the File menu in the Command Window, and choose "Preferences".';
  255. 'Select "Help Browser", then check the "Documentation Location"';
  256. 'directory path to ensure it points the location of your on-line';
  257. 'help.'}];
  258.     % Produce the error message:
  259.     helpError(hFig,msg);
  260. end
  261. %---------------------------------------------------------------------%
  262. function helpError(hFig,msg)
  263. % Generate a modal dialog box to display errors while trying to 
  264. % obtain help
  265. h = errordlg(msg,'Wavelet Toolbox Help Error','modal');
  266. %---------------------------------------------------------------------%
  267. function callHelpViewer(helpItem)
  268. helpview(fullfile(docroot,'toolbox','wavelet','wavelet.map'),helpItem);
  269. %---------------------------------------------------------------------%
  270. %=======================================================================%