Mercurial > octave
view libgui/src/documentation-dock-widget.cc @ 29330:b92614cfdfed
add bookmark functionality to the documentation browser (bug #54938)
* libgui/src/documentation-bookmarks.cc: new file for the bookmarks tab;
(documentation_bookmarks): initialize the tab, the filter and the tree;
prepare the bookmark file and read existing bookmarks;
(~documentation_bookmarks): empty destructor;
(add_bookmark): slot for the adding bookmark action, get current title
and url;
(add_bookmark): do the adding, possibly as child of a parent item;
(add_folder): slot for context menu action for adding a folder, check
current position where to insert the new folder;
(add_folder): do the folder adding;
(filter_bookmarks): filter bookmarks following the changed filter text;
(filter_activate): enable/disable filter;
(update_filter_history): save a search term when acknowledged by return;
(handle_double_click): open the clicked bookmark;
(ctx_menu): show context menu at current mouse position;
(open): open a bookmark via context menu;
(edit): edit a bookmark via context menu;
(remove): remove selected bookmarks via context menu;
(show_filter): toggle visibility of the filter;
(save_settings): save settings and initiate writing the bookmarks;
(write_bookmarks): open file and initiate writing all top level items;
(write_tree_item): write a single item and its children;
(read_bookmarks): open the file, check if it is valid and loop over
all top level items for reading them from the file;
(read_next_item): read an item and its children in case of a folder;
* documentation-bookmarks.h: class documentation_bookmarks derived
from QWidget, declaration of all required functions and class variables;
* documentation-dock-widget.cc (save_settings): new derived method,
emitting a signal for saving setting in child widgets and callinf the
original method
* documentation-dock-widget.h: derived method save_settings and signal
for child widgets
* documentation.cc: include documentation-bookmarks.h;
(documentation): add bookmark tab, connect signal for saving settings;
(add_action): check reveiver before connection the actions signal;
(construct_tool_bar): add toolbar button for adding a bookmark, connect
its signal the add_bookmark slot and connect signal for saving settings;
(notice_settings): add shortcut for adding a bookmark;
(update_history): move combining page title and current anchor into a
more specific title ...
(title_and_anchor): to here;
* documentation.h: new function title_and_anchor, new action
* gui-preferences-dc.h: new file with constants for some bookmark settings
and for the xbel file syntax
* gui-preferences-sc.h: default value for bookmark action
* bookmark-new.png/bookmark-new.svg: icon for tool bar button
* icons_license: add new icon
* module.mk: add new files
* shortcut-manager.cc (init_data): initialize new short for bookmarking
author | Torsten Lilge <ttl-octave@mailbox.org> |
---|---|
date | Sun, 10 Jan 2021 14:04:35 +0100 |
parents | bd51beb6205e |
children | 7854d5752dd2 |
line wrap: on
line source
//////////////////////////////////////////////////////////////////////// // // Copyright (C) 2011-2020 The Octave Project Developers // // See the file COPYRIGHT.md in the top-level directory of this // distribution or <https://octave.org/copyright/>. // // 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 // <https://www.gnu.org/licenses/>. // //////////////////////////////////////////////////////////////////////// #if defined (HAVE_CONFIG_H) # include "config.h" #endif #include "documentation-dock-widget.h" #include "help.h" namespace octave { documentation_dock_widget::documentation_dock_widget (QWidget *p, base_qobject& oct_qobj) : octave_dock_widget ("DocumentationDockWidget", p, oct_qobj) { setWindowIcon (QIcon (":/actions/icons/logo.png")); set_title (tr ("Documentation")); setStatusTip (tr ("See the documentation for help.")); m_docs = new documentation (this, oct_qobj); setWidget (m_docs); connect (p, SIGNAL (show_doc_signal (const QString&)), this, SLOT (showDoc (const QString&))); connect (p, SIGNAL (register_doc_signal (const QString&)), this, SLOT (registerDoc (const QString&))); connect (p, SIGNAL (unregister_doc_signal (const QString&)), this, SLOT (unregisterDoc (const QString&))); } documentation_dock_widget::~documentation_dock_widget (void) { if (m_docs) delete m_docs; } void documentation_dock_widget::notice_settings (const gui_settings *settings) { m_docs->notice_settings (settings); } void documentation_dock_widget::save_settings (void) { emit save_settings_signal (); octave_dock_widget::save_settings (); } void documentation_dock_widget::copyClipboard (void) { m_docs->copyClipboard (); } void documentation_dock_widget::pasteClipboard (void) { m_docs->pasteClipboard (); } void documentation_dock_widget::selectAll (void) { m_docs->selectAll (); } void documentation_dock_widget::showDoc (const QString& name) { // show the doc pane without focus for carrying on typing in the console if (! isVisible ()) setVisible (true); raise (); m_docs->load_ref (name); } void documentation_dock_widget::registerDoc (const QString& name) { m_docs->registerDoc (name); } void documentation_dock_widget::unregisterDoc (const QString& name) { m_docs->unregisterDoc (name); } }