diff libgui/src/documentation.h @ 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 c014440a2935
children 7854d5752dd2
line wrap: on
line diff
--- a/libgui/src/documentation.h	Tue Jan 26 16:41:36 2021 +0100
+++ b/libgui/src/documentation.h	Sun Jan 10 14:04:35 2021 +0100
@@ -32,6 +32,7 @@
 #include <QSplitter>
 #include <QTextBrowser>
 #include <QToolBar>
+#include <QListWidget>
 #include <QToolButton>
 #include <QWidget>
 #include <QtHelp/QHelpEngine>
@@ -41,6 +42,7 @@
 namespace octave
 {
   class base_qobject;
+  class documentation;
 
   //! Documentation browser derived from Textbrowser
 
@@ -101,6 +103,17 @@
     documentation (QWidget *parent, base_qobject& oct_qobj);
     ~documentation (void);
 
+    /*!
+        Generate a string with page name @p title and current anchor
+        from @p url for using in prev/next or bookmarks menu:
+
+          @param title current title of the page as QString
+          @param url   current url  as QUrl
+
+          @return QString "title: anchor"
+    */
+    QString title_and_anchor (const QString& title, const QUrl& url);
+
   signals:
 
     void show_single_result (const QUrl&);
@@ -172,6 +185,8 @@
     QAction *m_prev_pages_actions[max_history_entries];
     QAction *m_next_pages_actions[max_history_entries];
 
+    QAction *m_action_bookmark;
+
     QAction *m_action_find;
     QShortcut *m_findnext_shortcut;
     QShortcut *m_findprev_shortcut;
@@ -180,6 +195,7 @@
     QAction *m_action_zoom_out;
     QAction *m_action_zoom_original;
   };
+
 }
 
 #endif