# HG changeset patch # User John Donoghue # Date 1394580443 14400 # Node ID 2d5d0d86432e801fb3e0dbb306fcb9a546a64b87 # Parent de76baa76aa199f6bc1378c86f3996b6168d942f 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. diff -r de76baa76aa1 -r 2d5d0d86432e libgui/qterminal/libqterminal/QTerminal.h --- 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 diff -r de76baa76aa1 -r 2d5d0d86432e libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp --- 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 (); diff -r de76baa76aa1 -r 2d5d0d86432e libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h --- 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 *); diff -r de76baa76aa1 -r 2d5d0d86432e libgui/qterminal/libqterminal/unix/TerminalView.cpp --- 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); diff -r de76baa76aa1 -r 2d5d0d86432e libgui/qterminal/libqterminal/unix/TerminalView.h --- 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) diff -r de76baa76aa1 -r 2d5d0d86432e libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp --- 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(); +} + + ////////////////////////////////////////////////////////////////////////////// diff -r de76baa76aa1 -r 2d5d0d86432e libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h --- 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: diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/documentation-dock-widget.cc --- 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 diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/documentation-dock-widget.h --- 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: diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/files-dock-widget.cc --- 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 (); + } + } +} + diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/files-dock-widget.h --- 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: diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/history-dock-widget.cc --- 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 (); + } +} + diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/history-dock-widget.h --- 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: diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/m-editor/file-editor-tab.cc --- 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) diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/m-editor/file-editor-tab.h --- 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); diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/m-editor/file-editor.cc --- 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); diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/m-editor/file-editor.h --- 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; diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/main-window.cc --- 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 ())); diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/main-window.h --- 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 (); diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/octave-dock-widget.cc --- 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 () diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/octave-dock-widget.h --- 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: diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/qtinfo/webinfo.cc --- 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 ()) diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/qtinfo/webinfo.h --- 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; diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/workspace-view.cc --- 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 (); +} + diff -r de76baa76aa1 -r 2d5d0d86432e libgui/src/workspace-view.h --- 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: