changeset 18459:f01ac1bb8a5d gui-release

add menu entries and shortcuts for zoom functions in the editor (bug #41516) * file-editor.cc (zoom_in): slot for zoom-in action, triggering signal for tab; (zoom_out): slot for zoom-out action, triggering signal for tab; (zoom_normal): slot for zoom-to-normal action, triggering signal for tab; (construct): new View-menu with zoom-in, zoom-out and zoom-normal entries; (add_file_editor_tab): connect zoom-signal to newly created tabs; (set_shortcuts): set shortcuts for new zoom actions; (check_actions): disable zoom action when no editor tab is open * file-editor.h: zoom-in, zoom-out and zoom-normal actions, related slots and related signals to the actual tab * file-editor-tab.cc (zoom_in): new slot for signal from file_editor; (zoom_out): new slot for signal from file_editor; (zoom_normal): new slot for signal from file_editor * file-editor-tab.h: new slots zoom_in, zoom_out, zoom_normal * octave-qscintilla.cc (eventFilter): event filter for overriding qscintilla internal shortcuts; (constructor): install event filter * octave-qscintilla.h: event filter
author Torsten <ttl@justmail.de>
date Thu, 13 Feb 2014 20:39:09 +0100
parents ebb878596bcf
children f959c63934e6
files libgui/src/m-editor/file-editor-tab.cc libgui/src/m-editor/file-editor-tab.h libgui/src/m-editor/file-editor.cc libgui/src/m-editor/file-editor.h libgui/src/m-editor/octave-qscintilla.cc libgui/src/m-editor/octave-qscintilla.h
diffstat 6 files changed, 109 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor-tab.cc	Thu Feb 13 12:15:14 2014 -0500
+++ b/libgui/src/m-editor/file-editor-tab.cc	Thu Feb 13 20:39:09 2014 +0100
@@ -767,6 +767,37 @@
 
 
 void
+file_editor_tab::zoom_in (const QWidget *ID)
+{
+  if (ID != this)
+    return;
+
+  _edit_area->zoomIn (1);
+  auto_margin_width ();
+}
+
+void
+file_editor_tab::zoom_out (const QWidget *ID)
+{
+  if (ID != this)
+    return;
+
+  _edit_area->zoomOut (1);
+  auto_margin_width ();
+}
+
+void
+file_editor_tab::zoom_normal (const QWidget *ID)
+{
+  if (ID != this)
+    return;
+
+  _edit_area->zoomTo (0);
+  auto_margin_width ();
+}
+
+
+void
 file_editor_tab::handle_find_dialog_finished (int)
 {
   // Find dialog is going to hide.  Save location of window for
--- a/libgui/src/m-editor/file-editor-tab.h	Thu Feb 13 12:15:14 2014 -0500
+++ b/libgui/src/m-editor/file-editor-tab.h	Thu Feb 13 20:39:09 2014 +0100
@@ -97,6 +97,10 @@
   void indent_selected_text (const QWidget *ID);
   void unindent_selected_text (const QWidget *ID);
 
+  void zoom_in (const QWidget *ID);
+  void zoom_out (const QWidget *ID);
+  void zoom_normal (const QWidget *ID);
+
   void find (const QWidget *ID);
   void goto_line (const QWidget *ID, int line = -1);
 
--- a/libgui/src/m-editor/file-editor.cc	Thu Feb 13 12:15:14 2014 -0500
+++ b/libgui/src/m-editor/file-editor.cc	Thu Feb 13 20:39:09 2014 +0100
@@ -825,6 +825,24 @@
 }
 
 void
+file_editor::zoom_in (bool)
+{
+  emit fetab_zoom_in (_tab_widget->currentWidget ());
+}
+
+void
+file_editor::zoom_out (bool)
+{
+  emit fetab_zoom_out (_tab_widget->currentWidget ());
+}
+
+void
+file_editor::zoom_normal (bool)
+{
+  emit fetab_zoom_normal (_tab_widget->currentWidget ());
+}
+
+void
 file_editor::handle_editor_state_changed (bool copy_available,
                                           const QString& file_name)
 {
@@ -1113,6 +1131,15 @@
                          this, SLOT (request_styles_preferences (bool)));
   _menu_bar->addMenu (editMenu);
 
+  QMenu *view_menu = new QMenu (tr ("&View"), _menu_bar);
+  _zoom_in_action = view_menu->addAction (QIcon (), tr ("Zoom &In"),
+                                this, SLOT (zoom_in (bool)));
+  _zoom_out_action = view_menu->addAction (QIcon (), tr ("Zoom &Out"),
+                                this, SLOT (zoom_out (bool)));
+  _zoom_normal_action = view_menu->addAction (QIcon (), tr ("&Normal Size"),
+                                this, SLOT (zoom_normal (bool)));
+  _menu_bar->addMenu (view_menu);
+
   _debug_menu = new QMenu (tr ("&Debug"), _menu_bar);
   _debug_menu->addAction (toggle_breakpoint_action);
   _debug_menu->addAction (next_breakpoint_action);
@@ -1333,6 +1360,13 @@
   connect (this, SIGNAL (fetab_paste (const QWidget*)),
            f, SLOT (paste (const QWidget*)));
 
+  connect (this, SIGNAL (fetab_zoom_in (const QWidget*)),
+           f, SLOT (zoom_in (const QWidget*)));
+  connect (this, SIGNAL (fetab_zoom_out (const QWidget*)),
+           f, SLOT (zoom_out (const QWidget*)));
+  connect (this, SIGNAL (fetab_zoom_normal (const QWidget*)),
+           f, SLOT (zoom_normal (const QWidget*)));
+
   connect (this, SIGNAL (fetab_context_help (const QWidget*, bool)),
            f, SLOT (context_help (const QWidget*, bool)));
 
@@ -1456,6 +1490,11 @@
       _context_help_action->setShortcut (QKeySequence::HelpContents);
       _context_doc_action->setShortcut (Qt::SHIFT + Qt::Key_F1);
 
+      _zoom_in_action->setShortcut (QKeySequence::ZoomIn);
+      _zoom_out_action->setShortcut (QKeySequence::ZoomOut);
+      _zoom_normal_action->setShortcut (Qt::ControlModifier
+                                         + Qt::AltModifier + Qt::Key_0);
+
       _find_action->setShortcut (QKeySequence::Find);
       _goto_line_action->setShortcut (Qt::ControlModifier+ Qt::Key_G);
 
@@ -1490,6 +1529,10 @@
       _paste_action->setShortcut (no_key);
       _context_help_action->setShortcut (no_key);
 
+      _zoom_in_action->setShortcut (no_key);
+      _zoom_out_action->setShortcut (no_key);
+      _zoom_normal_action->setShortcut (no_key);
+
       _find_action->setShortcut (no_key);
       _goto_line_action->setShortcut (no_key);
 
@@ -1526,6 +1569,10 @@
   _context_help_action->setEnabled (have_tabs);
   _context_doc_action->setEnabled (have_tabs);
 
+  _zoom_in_action->setEnabled (have_tabs);
+  _zoom_out_action->setEnabled (have_tabs);
+  _zoom_normal_action->setEnabled (have_tabs);
+
   _find_action->setEnabled (have_tabs);
   _goto_line_action->setEnabled (have_tabs);
 
--- a/libgui/src/m-editor/file-editor.h	Thu Feb 13 12:15:14 2014 -0500
+++ b/libgui/src/m-editor/file-editor.h	Thu Feb 13 20:39:09 2014 +0100
@@ -102,6 +102,11 @@
   void fetab_do_breakpoint_marker (bool insert, const QWidget* ID,
                                    int line = -1);
   void fetab_set_focus (const QWidget* ID);
+
+  void fetab_zoom_in (const QWidget* ID);
+  void fetab_zoom_out (const QWidget* ID);
+  void fetab_zoom_normal (const QWidget* ID);
+
   void request_settings_dialog (const QString&);
   void execute_command_in_terminal_signal (const QString&);
   void file_loaded_signal ();
@@ -190,6 +195,10 @@
   void request_styles_preferences (bool);
   void restore_create_file_setting ();
 
+  void zoom_in (bool);
+  void zoom_out (bool);
+  void zoom_normal (bool);
+
 private:
 
   void construct (void);
@@ -220,6 +229,10 @@
   QAction *_context_help_action;
   QAction *_context_doc_action;
 
+  QAction *_zoom_in_action;
+  QAction *_zoom_out_action;
+  QAction *_zoom_normal_action;
+
   QAction *_find_action;
   QAction *_goto_line_action;
 
--- a/libgui/src/m-editor/octave-qscintilla.cc	Thu Feb 13 12:15:14 2014 -0500
+++ b/libgui/src/m-editor/octave-qscintilla.cc	Thu Feb 13 20:39:09 2014 +0100
@@ -29,13 +29,16 @@
 #ifdef HAVE_QSCINTILLA
 
 #include <Qsci/qscilexer.h>
+#include <QShortcut>
 
 #include "octave-qscintilla.h"
 #include "file-editor-tab.h"
 
 octave_qscintilla::octave_qscintilla (QWidget *p)
   : QsciScintilla (p)
-{ }
+{
+  installEventFilter (this);
+}
 
 octave_qscintilla::~octave_qscintilla ()
 { }
@@ -186,4 +189,13 @@
     emit execute_command_in_terminal_signal (commands.at (i));
 }
 
+bool
+octave_qscintilla::eventFilter(QObject *obj, QEvent *e)
+ {
+  if (e->type() == QEvent::ShortcutOverride)
+    return true;
+  else
+    return QObject::eventFilter(obj, e);
+ }
+
 #endif
--- a/libgui/src/m-editor/octave-qscintilla.h	Thu Feb 13 12:15:14 2014 -0500
+++ b/libgui/src/m-editor/octave-qscintilla.h	Thu Feb 13 20:39:09 2014 +0100
@@ -62,6 +62,7 @@
 private:
 
   QString _word_at_cursor;
+  bool eventFilter(QObject *obj, QEvent *e);
 
 };