changeset 18568:2d5d0d86432e gui-release

gui: Add select all menu (Bug #41797) * libgui//qterminal/libqterminal/QTerminal.h: Add selectAll popup menu and virtual function. * libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp,h: Add selectAll function. * libgui/qterminal/libqterminal/unix/TerminalView.cpp,h: add selectAll function. * libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp,h: Add selectAll function. * libgui/src/documentation-dock-widget.cc,h: Add selectAll function. * libgui/src/files-dock-widget.cc,h: Add selectAll function. * libgui/src/history-dock-widget.cc,h: Add selectAll function. * libgui/src/m-editor/file-editor-tab.cc,h: Add select_all function and signal. * libgui/src/m-editor/file-editor.cc,h: Add request_selectall and selectAll function, add Edit->select all menu. * libgui/src/main-window.cc: add selectAll function, selectAll menu. * libgui/src/octave-dock-widget.cc,h: Add virtual selectAll function and connect to mainwindow selectall signal. * libgui/src/qtinfo/webinfo.cc,h: Add selectAll function. * libgui/src/workspace-view.cc,h: Add selectAll function.
author John Donoghue <john.donoghue@ieee.org>
date Tue, 11 Mar 2014 19:27:23 -0400
parents de76baa76aa1
children 4daf647c86c3
files libgui/qterminal/libqterminal/QTerminal.h libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h libgui/qterminal/libqterminal/unix/TerminalView.cpp libgui/qterminal/libqterminal/unix/TerminalView.h libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h libgui/src/documentation-dock-widget.cc libgui/src/documentation-dock-widget.h libgui/src/files-dock-widget.cc libgui/src/files-dock-widget.h libgui/src/history-dock-widget.cc libgui/src/history-dock-widget.h 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/main-window.cc libgui/src/main-window.h libgui/src/octave-dock-widget.cc libgui/src/octave-dock-widget.h libgui/src/qtinfo/webinfo.cc libgui/src/qtinfo/webinfo.h libgui/src/workspace-view.cc libgui/src/workspace-view.h
diffstat 25 files changed, 190 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/qterminal/libqterminal/QTerminal.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/qterminal/libqterminal/QTerminal.h	Tue Mar 11 19:27:23 2014 -0400
@@ -93,6 +93,8 @@
 
   virtual void pasteClipboard (void) = 0;
 
+  virtual void selectAll (void) = 0;
+
   virtual void handleCustomContextMenuRequested (const QPoint& at)
   {
     QClipboard * cb = QApplication::clipboard ();
@@ -126,6 +128,12 @@
 
     _contextMenu->addSeparator ();
 
+    _selectall_action = _contextMenu->addAction (
+                      tr ("Select All"), this, SLOT (selectAll ()));
+
+
+    _contextMenu->addSeparator ();
+
     _contextMenu->addAction (tr ("Clear All"), parent (),
                              SLOT (handle_clear_command_window_request ()));
 
@@ -143,6 +151,9 @@
 
     connect (xparent, SIGNAL (pasteClipboard_signal ()),
              this, SLOT (pasteClipboard ()));
+
+    connect (xparent, SIGNAL (selectAll_signal ()),
+             this, SLOT (selectAll ()));
   }
 
 private:
@@ -150,6 +161,7 @@
   QMenu *_contextMenu;
   QAction * _copy_action;
   QAction * _paste_action;
+  QAction * _selectall_action;
 };
 
 #endif // QTERMINAL_H
--- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp	Tue Mar 11 19:27:23 2014 -0400
@@ -205,6 +205,12 @@
     m_terminalView->pasteClipboard();
 }
 
+void QUnixTerminalImpl::selectAll()
+{
+    m_terminalView->selectAll();
+}
+
+
 QString QUnixTerminalImpl::selectedText ()
 {
   return m_terminalView->selectedText ();
--- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h	Tue Mar 11 19:27:23 2014 -0400
@@ -53,6 +53,7 @@
 public slots:
     void copyClipboard();
     void pasteClipboard();
+    void selectAll();
 
 protected:
     void showEvent(QShowEvent *);
--- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp	Tue Mar 11 19:27:23 2014 -0400
@@ -2287,6 +2287,20 @@
     }
 }
 
+void TerminalView::selectAll()
+{
+  if ( !_screenWindow || !hasFocus())
+    return;
+
+  _screenWindow->setSelectionStart(0,-_screenWindow->currentLine(), false);
+  //_screenWindow->setSelectionEnd(_screenWindow->windowColumns(),
+  //                               _screenWindow->windowLines());
+
+  _screenWindow->setSelectionEnd(_screenWindow->columnCount(),
+                                 _screenWindow->windowLines());
+}
+
+
 void TerminalView::pasteSelection()
 {
   emitSelection(true,false);
--- a/libgui/qterminal/libqterminal/unix/TerminalView.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/qterminal/libqterminal/unix/TerminalView.h	Tue Mar 11 19:27:23 2014 -0400
@@ -416,6 +416,11 @@
      */
     void pasteSelection();
 
+    /**
+     * selects all content 
+     */
+    void selectAll();
+
 	 /**
 	 * Causes the widget to display or hide a message informing the user that terminal
 	 * output has been suspended (by using the flow control key combination Ctrl+S)
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp	Tue Mar 11 19:27:23 2014 -0400
@@ -183,6 +183,7 @@
   void startCommand (void);
   void sendConsoleText (const QString& s);
   QRect cursorRect (void);
+  void selectAll();
 
   void log (const char* fmt, ...);
 
@@ -657,6 +658,14 @@
   p.restore ();
 }
 
+void QConsolePrivate::selectAll()
+{
+  m_beginSelection = QPoint (0,0);
+  m_endSelection = QPoint(m_bufferSize.width (), 
+                          m_cursorPos.y());
+  updateSelection();
+}
+
 void QConsolePrivate::drawSelection (QPainter& p, int cx1, int cy1,
                                      int cx2, int cy2, int cw, int ch)
 {
@@ -1552,6 +1561,16 @@
     sendText (text);
 }
 
+//////////////////////////////////////////////////////////////////////////////
+
+void QWinTerminalImpl::selectAll (void)
+{
+  if(!hasFocus()) return;
+
+  d->selectAll();
+}
+
+
 
 //////////////////////////////////////////////////////////////////////////////
 
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h	Tue Mar 11 19:27:23 2014 -0400
@@ -66,6 +66,7 @@
 public slots:
   void copyClipboard (void);
   void pasteClipboard (void);
+  void selectAll (void);
   void blinkCursorEvent (void);
 
 signals:
--- a/libgui/src/documentation-dock-widget.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/documentation-dock-widget.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -52,6 +52,12 @@
   _webinfo->pasteClipboard ();
 }
 void
+documentation_dock_widget::selectAll ()
+{
+  _webinfo->selectAll ();
+}
+
+void
 documentation_dock_widget::showDoc (const QString &name)
 {
   // show the doc pane
--- a/libgui/src/documentation-dock-widget.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/documentation-dock-widget.h	Tue Mar 11 19:27:23 2014 -0400
@@ -38,6 +38,7 @@
 protected slots:
   void copyClipboard ();
   void pasteClipboard ();
+  void selectAll ();
 
   void showDoc (const QString & name);
 private:
--- a/libgui/src/files-dock-widget.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/files-dock-widget.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -924,5 +924,20 @@
     }
 }
 
+void
+files_dock_widget::selectAll ()
+{
+  if (_file_tree_view->hasFocus ())
+    _file_tree_view->selectAll ();
+  if (_current_directory->hasFocus ())
+    {
+      QLineEdit * edit = _current_directory->lineEdit ();
+      if (edit)
+        {
+          edit->selectAll ();
+        }
+    }
+}
 
 
+
--- a/libgui/src/files-dock-widget.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/files-dock-widget.h	Tue Mar 11 19:27:23 2014 -0400
@@ -113,6 +113,7 @@
   /* from octave_doc_widget */
   void copyClipboard ();
   void pasteClipboard ();
+  void selectAll ();
 
 signals:
 
--- a/libgui/src/history-dock-widget.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/history-dock-widget.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -222,3 +222,16 @@
     }
 }
 
+void
+history_dock_widget::selectAll ()
+{
+  if (_filter_line_edit->hasFocus ())
+    {
+        _filter_line_edit->selectAll ();
+    }
+  if (_history_list_view->hasFocus ())
+    {
+        _history_list_view->selectAll ();
+    }
+}
+
--- a/libgui/src/history-dock-widget.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/history-dock-widget.h	Tue Mar 11 19:27:23 2014 -0400
@@ -64,6 +64,7 @@
 
   void copyClipboard ();
   void pasteClipboard ();
+  void selectAll ();
 
 private:
 
--- a/libgui/src/m-editor/file-editor-tab.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/m-editor/file-editor-tab.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -451,6 +451,16 @@
 }
 
 void
+file_editor_tab::select_all (const QWidget *ID)
+{
+  if (ID != this)
+    return;
+
+  _edit_area->selectAll ();
+}
+
+
+void
 file_editor_tab::context_help (const QWidget *ID, bool doc)
 {
   if (ID != this)
--- a/libgui/src/m-editor/file-editor-tab.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/m-editor/file-editor-tab.h	Tue Mar 11 19:27:23 2014 -0400
@@ -72,6 +72,7 @@
   void copy (const QWidget *ID);
   void cut (const QWidget *ID);
   void paste (const QWidget *ID);
+  void select_all (const QWidget *ID);
   void context_help (const QWidget *ID, bool);
   void context_edit (const QWidget *ID);
   void save_file (const QWidget *ID);
--- a/libgui/src/m-editor/file-editor.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/m-editor/file-editor.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -595,6 +595,13 @@
 }
 
 void
+file_editor::request_selectall (void)
+{
+  emit fetab_selectall (_tab_widget->currentWidget ());
+}
+
+
+void
 file_editor::request_context_help (bool)
 {
   emit fetab_context_help (_tab_widget->currentWidget (), false);
@@ -1006,6 +1013,9 @@
     = new QAction (QIcon (":/actions/icons/bp_rm_all.png"),
                    tr ("&Remove All Breakpoints"), _tool_bar);
 
+  _selectall_action
+    = new QAction (tr ("Select All"), _tool_bar);
+
   _comment_selection_action
     = new QAction (tr ("&Comment"), _tool_bar);
   _uncomment_selection_action
@@ -1128,6 +1138,8 @@
   editMenu->addAction (_cut_action);
   editMenu->addAction (_paste_action);
   editMenu->addSeparator ();
+  editMenu->addAction (_selectall_action);
+  editMenu->addSeparator ();
   editMenu->addAction (_find_action);
   editMenu->addSeparator ();
   editMenu->addAction (_comment_selection_action);
@@ -1224,6 +1236,9 @@
   connect (_paste_action, SIGNAL (triggered ()),
            this, SLOT (request_paste ()));
 
+  connect (_selectall_action, SIGNAL (triggered ()),
+           this, SLOT (request_selectall ()));
+
   connect (_save_action, SIGNAL (triggered ()),
            this, SLOT (request_save_file ()));
 
@@ -1377,6 +1392,9 @@
   connect (this, SIGNAL (fetab_paste (const QWidget*)),
            f, SLOT (paste (const QWidget*)));
 
+  connect (this, SIGNAL (fetab_selectall (const QWidget*)),
+           f, SLOT (select_all (const QWidget*)));
+
   connect (this, SIGNAL (fetab_context_help (const QWidget*, bool)),
            f, SLOT (context_help (const QWidget*, bool)));
 
@@ -1481,6 +1499,17 @@
       request_paste ();
     }
 }
+void
+file_editor::selectAll ()
+{
+  QWidget * foc_w = focusWidget ();
+
+  if (foc_w && foc_w->inherits ("octave_qscintilla"))
+    {
+      request_selectall ();
+    }
+}
+
 
 void
 file_editor::set_shortcuts (bool set)
@@ -1500,6 +1529,7 @@
       _copy_action->setShortcut (QKeySequence::Copy);
       _cut_action->setShortcut (QKeySequence::Cut);
       _paste_action->setShortcut (QKeySequence::Paste);
+      _selectall_action->setShortcut (QKeySequence::SelectAll);
       _context_help_action->setShortcut (QKeySequence::HelpContents);
       _context_doc_action->setShortcut (Qt::SHIFT + Qt::Key_F1);
 
@@ -1536,6 +1566,7 @@
       _copy_action->setShortcut (no_key);
       _cut_action->setShortcut (no_key);
       _paste_action->setShortcut (no_key);
+      _selectall_action->setShortcut (no_key);
       _context_help_action->setShortcut (no_key);
 
       _find_action->setShortcut (no_key);
--- a/libgui/src/m-editor/file-editor.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/m-editor/file-editor.h	Tue Mar 11 19:27:23 2014 -0400
@@ -76,6 +76,7 @@
   void fetab_copy (const QWidget* ID);
   void fetab_cut (const QWidget* ID);
   void fetab_paste (const QWidget* ID);
+  void fetab_selectall (const QWidget* ID);
   void fetab_context_help (const QWidget* ID, bool);
   void fetab_context_edit (const QWidget* ID);
   void fetab_save_file (const QWidget* ID);
@@ -125,6 +126,7 @@
   void request_copy (void);
   void request_cut (void);
   void request_paste (void);
+  void request_selectall (void);
   void request_context_help (bool);
   void request_context_doc (bool);
   void request_context_edit (bool);
@@ -182,6 +184,7 @@
 protected slots:
   void copyClipboard ();
   void pasteClipboard ();
+  void selectAll ();
 
 private slots:
 
@@ -221,6 +224,7 @@
   QAction *_copy_action;
   QAction *_cut_action;
   QAction *_paste_action;
+  QAction *_selectall_action;
   QAction *_context_help_action;
   QAction *_context_doc_action;
 
--- a/libgui/src/main-window.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/main-window.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -1038,6 +1038,22 @@
     emit pasteClipboard_signal ();
 }
 
+void
+main_window::selectAll (void)
+{
+  if (_current_directory_combo_box->hasFocus ())
+    {
+      QLineEdit * edit = _current_directory_combo_box->lineEdit ();
+      if (edit)
+        {
+          edit->selectAll ();
+        }
+    }
+  else
+    emit selectAll_signal ();
+}
+
+
 // Connect the signals emitted when the Octave thread wants to create
 // a dialog box of some sort.  Perhaps a better place for this would be
 // as part of the QUIWidgetCreator class.  However, mainWindow currently
@@ -1514,6 +1530,9 @@
                             tr ("Paste"), this, SLOT (pasteClipboard ()));
   _paste_action->setShortcut (QKeySequence::Paste);
 
+  QAction * select_all_action
+    = edit_menu->addAction (tr ("Select All"), this, SLOT (selectAll ()));
+
   _clear_clipboard_action
     = edit_menu->addAction (tr ("Clear Clipboard"), this,
                             SLOT (clear_clipboard ()));
--- a/libgui/src/main-window.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/main-window.h	Tue Mar 11 19:27:23 2014 -0400
@@ -92,6 +92,7 @@
 
   void copyClipboard_signal (void);
   void pasteClipboard_signal (void);
+  void selectAll_signal (void);
 
   void set_widget_shortcuts_signal (bool);
 
@@ -158,6 +159,7 @@
 
   void copyClipboard (void);
   void pasteClipboard (void);
+  void selectAll (void);
 
   void connect_uiwidget_links ();
 
--- a/libgui/src/octave-dock-widget.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/octave-dock-widget.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -105,6 +105,8 @@
            this, SLOT (copyClipboard ()));
   connect (p, SIGNAL (pasteClipboard_signal ()),
            this, SLOT (pasteClipboard ()));
+  connect (p, SIGNAL (selectAll_signal ()),
+           this, SLOT (selectAll ()));
 }
 
 octave_dock_widget::~octave_dock_widget ()
--- a/libgui/src/octave-dock-widget.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/octave-dock-widget.h	Tue Mar 11 19:27:23 2014 -0400
@@ -101,6 +101,9 @@
   virtual void pasteClipboard ()
   {
   }
+  virtual void selectAll ()
+  {
+  }
 
 private slots:
 
--- a/libgui/src/qtinfo/webinfo.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/qtinfo/webinfo.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -284,6 +284,20 @@
 }
 
 void
+webinfo::selectAll ()
+{
+  if (_search_line_edit->hasFocus ())
+    {
+      _search_line_edit->selectAll ();
+    }
+  if (_text_browser->hasFocus ())
+    {
+      _text_browser->selectAll ();
+    }
+}
+
+
+void
 webinfo::pasteClipboard ()
 {
   if (_search_line_edit->hasFocus ())
--- a/libgui/src/qtinfo/webinfo.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/qtinfo/webinfo.h	Tue Mar 11 19:27:23 2014 -0400
@@ -53,6 +53,7 @@
 
   void copyClipboard ();
   void pasteClipboard ();
+  void selectAll ();
 
 private:
   QTextBrowser        *_text_browser;
--- a/libgui/src/workspace-view.cc	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/workspace-view.cc	Tue Mar 11 19:27:23 2014 -0400
@@ -276,3 +276,10 @@
     handle_contextmenu_copy ();
 }
 
+void
+workspace_view::selectAll ()
+{
+  if (view->hasFocus ())
+    view->selectAll ();
+}  
+
--- a/libgui/src/workspace-view.h	Fri Mar 07 12:54:16 2014 -0500
+++ b/libgui/src/workspace-view.h	Tue Mar 11 19:27:23 2014 -0400
@@ -70,6 +70,7 @@
   void handle_model_changed (void);
 
   void copyClipboard ();
+  void selectAll ();
 
 private: