changeset 29711:7a0be7c8b7ca

restore zoom level in documentation browser at start up * documentation-bookmarks.cc/.h (save_settings): settings pointer is provided as argument * documentation-dock-widget.cc (save_settings): save_settings method in documentation widget is called per function not signal * documentation-dock-widget.h: remove obsolete save_settings_signal * documentation.cc (documentation): pointer to bookmark widget stored in new class variable, removed connection of obsolete save_settings_signal; (notice_settings): call notice_settings of the doc browser; (save_settings): call save_settings of the doc browser and the bookmarks widget; (documentation_browser): initialize m_zoom_level above the max. value; (documentation_browser::notice_settings): if zoom level is greater than the max. value, get the value from the previous session from the settings file and restore the desired zoom level; (documentation_browser::save_settings): new function for saving the current zoom level * documentation.h: new function documentation_browser::save_settings for saving the current zoom level, new class variable m_bookmarks * gui-preferences-dc.h: new gui pref for the doc browser zoom level
author Torsten Lilge <ttl-octave@mailbox.org>
date Fri, 28 May 2021 15:20:51 +0200
parents 97e12df28ee6
children 7b4b7e2a524d
files libgui/src/documentation-bookmarks.cc libgui/src/documentation-bookmarks.h libgui/src/documentation-dock-widget.cc libgui/src/documentation-dock-widget.h libgui/src/documentation.cc libgui/src/documentation.h libgui/src/gui-preferences-dc.h
diffstat 7 files changed, 44 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/documentation-bookmarks.cc	Thu May 27 19:31:35 2021 -0400
+++ b/libgui/src/documentation-bookmarks.cc	Fri May 28 15:20:51 2021 +0200
@@ -380,15 +380,12 @@
     m_filter_widget->setVisible (m_filter_shown);
   }
 
-  void documentation_bookmarks::save_settings (void)
+  void documentation_bookmarks::save_settings (gui_settings *settings)
   {
     // Write the bookmarks to the xbel-file
     write_bookmarks ();
 
     // Store settings
-    resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
-    gui_settings *settings = rmgr.get_settings ();
-
     settings->setValue (dc_bookmark_filter_active.key, m_filter_checkbox->isChecked ());
     settings->setValue (dc_bookmark_filter_shown.key, m_filter_shown);
 
--- a/libgui/src/documentation-bookmarks.h	Thu May 27 19:31:35 2021 -0400
+++ b/libgui/src/documentation-bookmarks.h	Fri May 28 15:20:51 2021 +0200
@@ -56,7 +56,7 @@
 
     void add_bookmark (void);
     void add_folder (bool);
-    void save_settings (void);
+    void save_settings (gui_settings *settings);
 
   private slots:
 
--- a/libgui/src/documentation-dock-widget.cc	Thu May 27 19:31:35 2021 -0400
+++ b/libgui/src/documentation-dock-widget.cc	Fri May 28 15:20:51 2021 +0200
@@ -55,7 +55,7 @@
 
   void documentation_dock_widget::save_settings (void)
   {
-    emit save_settings_signal ();
+    m_docs->save_settings ();
     octave_dock_widget::save_settings ();
   }
 
--- a/libgui/src/documentation-dock-widget.h	Thu May 27 19:31:35 2021 -0400
+++ b/libgui/src/documentation-dock-widget.h	Fri May 28 15:20:51 2021 +0200
@@ -43,10 +43,6 @@
 
     ~documentation_dock_widget (void) = default;
 
-  signals:
-
-    void save_settings_signal (void);
-
   public slots:
 
     void notice_settings (const gui_settings *settings);
--- a/libgui/src/documentation.cc	Thu May 27 19:31:35 2021 -0400
+++ b/libgui/src/documentation.cc	Fri May 28 15:20:51 2021 +0200
@@ -53,6 +53,7 @@
 #include "documentation.h"
 #include "documentation-bookmarks.h"
 #include "gui-preferences-global.h"
+#include "gui-preferences-dc.h"
 #include "gui-preferences-sc.h"
 #include "octave-qobject.h"
 #include "shortcut-manager.h"
@@ -256,14 +257,12 @@
                  this, &documentation::filter_update_history);
 
         // Bookmarks (own class)
-        documentation_bookmarks *bookmarks
+        m_bookmarks
           = new documentation_bookmarks (this, m_doc_browser, m_octave_qobj, navi);
-        navi->addTab (bookmarks, tr ("Bookmarks"));
+        navi->addTab (m_bookmarks, tr ("Bookmarks"));
 
         connect (m_action_bookmark, &QAction::triggered,
-                 bookmarks, [=] () { bookmarks->add_bookmark (); });
-        connect (p, SIGNAL (save_settings_signal (void)),
-                 bookmarks, SLOT (save_settings (void)));
+                 m_bookmarks, [=] () { m_bookmarks->add_bookmark (); });
 
         // Search
         QHelpSearchEngine *search_engine = m_help_engine->searchEngine ();
@@ -639,6 +638,18 @@
     scmgr.set_shortcut (m_action_go_prev, sc_doc_go_back);
     scmgr.set_shortcut (m_action_go_next, sc_doc_go_next);
     scmgr.set_shortcut (m_action_bookmark, sc_doc_bookmark);
+
+    // Settings for the browser
+    m_doc_browser->notice_settings (settings);
+  }
+
+  void documentation::save_settings (void)
+  {
+    resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
+    gui_settings *settings = rmgr.get_settings ();
+
+    m_doc_browser->save_settings (settings);
+    m_bookmarks->save_settings (settings);
   }
 
   void documentation::copyClipboard (void)
@@ -968,7 +979,7 @@
   //
 
   documentation_browser::documentation_browser (QHelpEngine *he, QWidget *p)
-    : QTextBrowser (p), m_help_engine (he), m_zoom_level (0)
+    : QTextBrowser (p), m_help_engine (he), m_zoom_level (max_zoom_level+1)
   {
     setOpenLinks (false);
     connect (this, &documentation_browser::anchorClicked,
@@ -984,8 +995,15 @@
       QDesktopServices::openUrl (url);
   }
 
-  void documentation_browser::notice_settings (const gui_settings *)
-  { }
+  void documentation_browser::notice_settings (const gui_settings *settings)
+  {
+    // Zoom level only at startup, not when other settings have changed
+    if (m_zoom_level > max_zoom_level)
+      {
+        m_zoom_level = settings->value (dc_browser_zoom_level).toInt ();
+        zoomIn (m_zoom_level);
+      }
+  }
 
   QVariant documentation_browser::loadResource (int type, const QUrl &url)
   {
@@ -995,6 +1013,13 @@
       return QTextBrowser::loadResource(type, url);
   }
 
+  void documentation_browser::save_settings (gui_settings *settings)
+  {
+    settings->setValue (dc_browser_zoom_level.key, m_zoom_level);
+
+    settings->sync ();
+  }
+
   void documentation_browser::zoom_in (void)
   {
     if (m_zoom_level < max_zoom_level)
--- a/libgui/src/documentation.h	Thu May 27 19:31:35 2021 -0400
+++ b/libgui/src/documentation.h	Fri May 28 15:20:51 2021 +0200
@@ -43,6 +43,7 @@
 {
   class base_qobject;
   class documentation;
+  class documentation_bookmarks;
 
   //! Documentation browser derived from Textbrowser
 
@@ -62,6 +63,7 @@
     void handle_index_clicked (const QUrl& url,
                                const QString& keyword = QString ());
     void notice_settings (const gui_settings *settings);
+    void save_settings (gui_settings *settings);
 
     //! Zooming in and out while taking care of the zoom level
     //!@{
@@ -121,6 +123,7 @@
   public slots:
 
     void notice_settings (const gui_settings *settings);
+    void save_settings (void);
 
     void copyClipboard (void);
     void pasteClipboard (void);
@@ -164,6 +167,7 @@
     QHelpEngine *m_help_engine;
     QString m_internal_search;
     documentation_browser *m_doc_browser;
+    documentation_bookmarks *m_bookmarks;
     QLineEdit *m_find_line_edit;
     int m_search_anchor_position;
     QComboBox *m_filter;
--- a/libgui/src/gui-preferences-dc.h	Thu May 27 19:31:35 2021 -0400
+++ b/libgui/src/gui-preferences-dc.h	Fri May 28 15:20:51 2021 +0200
@@ -54,4 +54,8 @@
 const QLatin1String dc_xbel_name_bookmark ("bookmark");
 const QLatin1String dc_xbel_name_format ("xbel");
 
+// Zoom level
+const gui_pref
+dc_browser_zoom_level ("documentation_widget/browser_zoom_level", QVariant (0));
+
 #endif