Mercurial > hg > octave-nkf
diff scripts/help/doc.m @ 17029:359c5ca795cd
Display doc info pages using documentation browser when in GUI mode (Bug #39451)
* scripts/help/doc.m: call __octave_link_show_doc if in gui mode.
* libinterp/corefcn/octave-link.h, libinterp/corefcn/octave-link.cc
(octave_link::show_doc): New function.
(octave_link::do_show_doc): New virtual function.
(__octave_link_show_doc__): New function.
* libgui/src/octave-qt-link.h
(octave_qt_link::show_doc_signal): New signal.
(octave_qt_link::do_show_doc): New function.
* libgui/src/documentation-dock-widget.cc, libgui/src/documentation-dock-widget.h
(documentation_dock_widget::showDoc): New function.
* libgui/src/main-window.cc, libgui/src/main-window.h
(main_window::construct_octave_qt_link): connect handle_show_doc.
(main_window::handle_show_doc): New function.
(main_window::show_doc_signal): New signal.
* libgui/src/qtinfo/parser.cc, libgui/src/qtinfo/parser.h
(parser::find_ref): New function.
* libgui/src/qtinfo/webinfo.cc, libgui/src/qtinfo/webinfo.h
(webinfo::load_ref): New function.
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Sat, 20 Jul 2013 22:13:51 -0400 |
parents | 0272bb60408a |
children | f4c8c66faf34 |
line wrap: on
line diff
--- a/scripts/help/doc.m +++ b/scripts/help/doc.m @@ -53,53 +53,60 @@ fname = ""; endif - if (ftype == 2 || ftype == 3) - ffile = which (fname); - else - ffile = ""; - endif - - if (isempty (ffile)) - info_dir = octave_config_info ("infodir"); + # if GUI is running, let it display the function + if isguirunning () + __octave_link_show_doc__ (fname); else - info_dir = fileparts (ffile); - endif - - ## Determine if a file called doc.info exist in the same - ## directory as the function. + + if (ftype == 2 || ftype == 3) + ffile = which (fname); + else + ffile = ""; + endif - info_file_name = fullfile (info_dir, "doc.info"); - - [stat_info, err] = stat (info_file_name); + if (isempty (ffile)) + info_dir = octave_config_info ("infodir"); + else + info_dir = fileparts (ffile); + endif - if (err < 0) - info_file_name = info_file (); - endif + ## Determine if a file called doc.info exist in the same + ## directory as the function. + + info_file_name = fullfile (info_dir, "doc.info"); + + [stat_info, err] = stat (info_file_name); - ## FIXME -- don't change the order of the arguments below because - ## the info-emacs-info script currently expects --directory DIR as - ## the third and fourth arguments. Someone should fix that. + if (err < 0) + info_file_name = info_file (); + endif + + ## FIXME -- don't change the order of the arguments below because + ## the info-emacs-info script currently expects --directory DIR as + ## the third and fourth arguments. Someone should fix that. + + cmd = sprintf ("\"%s\" --file \"%s\" --directory \"%s\"", + info_program (), info_file_name, info_dir); + + have_fname = ! isempty (fname); - cmd = sprintf ("\"%s\" --file \"%s\" --directory \"%s\"", - info_program (), info_file_name, info_dir); + if (have_fname) + status = system (sprintf ("%s --index-search \"%s\"", cmd, fname)); + endif + - have_fname = ! isempty (fname); + if (! (have_fname && status == 0)) + status = system (cmd); + if (status == 127) + warning ("unable to find info program '%s'", info_program ()); + endif + endif - if (have_fname) - status = system (sprintf ("%s --index-search \"%s\"", cmd, fname)); + if (nargout > 0) + retval = status; + endif + endif - - if (! (have_fname && status == 0)) - status = system (cmd); - if (status == 127) - warning ("unable to find info program '%s'", info_program ()); - endif - endif - - if (nargout > 0) - retval = status; - endif - else print_usage (); endif