Mercurial > octave-antonio
view libgui/src/qtinfo/parser.h @ 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 | e2de3c8882be |
children | d63878346099 |
line wrap: on
line source
/* Copyright (C) 2009 P.L. Lucas Copyright (C) 2012 Jacob Dawid This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ // Author: P. L. Lucas // Author: Jacob Dawid <jacob.dawid@gmail.com> #include <QStringList> #include <QIODevice> #include <QFileInfoList> #include <QHash> /** * \class parser * This class gets nodes and searchs inside of 'info files'. * <p>Each info file has nodes. Every node has the documentation. * Info files contains a map with position of each node.</p> * <p>What is position? * There is a simple answer: * If you make a queue with info files, position will be the number of bytes * from begining to node position.</p> * <p> * But is not so easy. There is headers, and qtinfo must not take these headers into account. * </p> * <p> * This class also translates info files to html. * </p> */ class parser : public QObject { Q_OBJECT public: parser (QObject *parent = 0); void set_info_path (const QString& _info_path); QString get_info_path (); QString search_node (const QString& node); QString global_search (const QString& text, int maxFounds); QString find_ref (const QString &name); /** Checks if this node is reference. If node is reference, it will be returned its position * in text, else it will be returned -1. */ int is_ref (const QString& node); /**Translates text of node to Html. If anchorPos is not -1, then anchor is inserted in that * position. */ QString node_text_to_html (const QString& text, int anchorPos = -1, const QString& anchor = QString ()); private: struct node_position { QString _node_name; int pos; }; struct node_map_item { int pos; }; struct info_file_item { QFileInfo file_info; int real_size; }; QString search_node (const QString& node, QIODevice * io); QString get_next_node (QIODevice * io); QString get_node_name (const QString& text); QString get_node_up (const QString& text); QString get_node_next (const QString& text); QString get_node_prev (const QString& text); /** Parses info files and gets map of node positions.*/ void parse_info_map(); /** Open info files and uncompress them. */ QIODevice *open_file(QFileInfo & fileInfo); /** Calculates real position of nodes. * \param pos position from info file. * \param fileInfo returns file what contains that position. * \param realPos returns real position inside of fileInfo. */ void real_position (int pos, QFileInfo & file_info, int & real_pos); /** Seeks to position pos. */ void seek (QIODevice *io, int pos); QString _info_path; QFileInfoList _info_files; QHash<QString, node_map_item> _node_map; QHash<QString, node_position> _ref_map; QList<info_file_item> _info_file_real_size_list; QHash<QString, QString> _compressors_map; };