Mercurial > octave
annotate libgui/src/history-dock-widget.cc @ 18732:0f9ed79fb206 gui-release
fix performance issue of history viewer with large history entries (bug #42255)
* history-dock-widget.cc (constructor): set elide text mode,
set max. displayed entry width to the desktop width
author | Torsten <ttl@justmail.de> |
---|---|
date | Tue, 06 May 2014 18:08:15 +0200 |
parents | 2d5d0d86432e |
children | dff05c124017 a402493c0605 |
rev | line source |
---|---|
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
1 /* |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
2 |
17744
d63878346099
maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents:
17254
diff
changeset
|
3 Copyright (C) 2011-2013 Jacob Dawid |
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
4 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
5 This file is part of Octave. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
6 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
7 Octave is free software; you can redistribute it and/or modify it |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
10 option) any later version. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
11 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but WITHOUT |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
15 for more details. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
16 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
20 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
21 */ |
13495 | 22 |
15155
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
14814
diff
changeset
|
23 #ifdef HAVE_CONFIG_H |
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
14814
diff
changeset
|
24 #include <config.h> |
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
14814
diff
changeset
|
25 #endif |
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
14814
diff
changeset
|
26 |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
27 #include <QApplication> |
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
28 #include <QClipboard> |
15155
9e62d5a3a45e
partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents:
14814
diff
changeset
|
29 #include <QVBoxLayout> |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
30 #include <QMenu> |
17208
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
31 #include <QScrollBar> |
18732
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
32 #include <QDesktopWidget> |
15340
9d0cdd49054b
keep history in gui widget at bottom when new items are added
John W. Eaton <jwe@octave.org>
parents:
15318
diff
changeset
|
33 #include "error.h" |
9d0cdd49054b
keep history in gui widget at bottom when new items are added
John W. Eaton <jwe@octave.org>
parents:
15318
diff
changeset
|
34 |
15402
7f423c6111c6
refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents:
15388
diff
changeset
|
35 #include "cmd-hist.h" |
7f423c6111c6
refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents:
15388
diff
changeset
|
36 |
16460
4d4e7c6f839d
use consistent names for dock-widget files
John W. Eaton <jwe@octave.org>
parents:
16455
diff
changeset
|
37 #include "history-dock-widget.h" |
13495 | 38 |
16447
e3b33a7530bc
improve encapsulation of history window object
John W. Eaton <jwe@octave.org>
parents:
16441
diff
changeset
|
39 history_dock_widget::history_dock_widget (QWidget *p) |
16057
c3057d80cf91
Created common octave_dock_widget class
Richard Crozier <richard.crozier@yahoo.co.uk>
parents:
15900
diff
changeset
|
40 : octave_dock_widget (p) |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
41 { |
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
42 setObjectName ("HistoryDockWidget"); |
16447
e3b33a7530bc
improve encapsulation of history window object
John W. Eaton <jwe@octave.org>
parents:
16441
diff
changeset
|
43 setStatusTip (tr ("Browse and search the command history.")); |
e3b33a7530bc
improve encapsulation of history window object
John W. Eaton <jwe@octave.org>
parents:
16441
diff
changeset
|
44 |
16455
38ed6bdd1f7f
move signal/slot connections from main window to sub window where possible
John W. Eaton <jwe@octave.org>
parents:
16452
diff
changeset
|
45 connect (this, SIGNAL (command_create_script (const QString&)), |
38ed6bdd1f7f
move signal/slot connections from main window to sub window where possible
John W. Eaton <jwe@octave.org>
parents:
16452
diff
changeset
|
46 p, SLOT (new_file (const QString&))); |
38ed6bdd1f7f
move signal/slot connections from main window to sub window where possible
John W. Eaton <jwe@octave.org>
parents:
16452
diff
changeset
|
47 |
38ed6bdd1f7f
move signal/slot connections from main window to sub window where possible
John W. Eaton <jwe@octave.org>
parents:
16452
diff
changeset
|
48 connect (this, SIGNAL (information (const QString&)), |
38ed6bdd1f7f
move signal/slot connections from main window to sub window where possible
John W. Eaton <jwe@octave.org>
parents:
16452
diff
changeset
|
49 p, SLOT (report_status_message (const QString&))); |
16447
e3b33a7530bc
improve encapsulation of history window object
John W. Eaton <jwe@octave.org>
parents:
16441
diff
changeset
|
50 |
e3b33a7530bc
improve encapsulation of history window object
John W. Eaton <jwe@octave.org>
parents:
16441
diff
changeset
|
51 connect (this, SIGNAL (command_double_clicked (const QString&)), |
16570
d5ae5aa80d42
preserve pending command line input when running commands from GUI actions
John W. Eaton <jwe@octave.org>
parents:
16461
diff
changeset
|
52 p, SLOT (execute_command_in_terminal (const QString&))); |
16447
e3b33a7530bc
improve encapsulation of history window object
John W. Eaton <jwe@octave.org>
parents:
16441
diff
changeset
|
53 |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
54 construct (); |
13495 | 55 } |
56 | |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
57 void |
14709
f50591409306
Started to rename class names and methods from camel case to underscore-
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14707
diff
changeset
|
58 history_dock_widget::construct () |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
59 { |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
60 _history_model = new QStringListModel (); |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
61 _sort_filter_proxy_model.setSourceModel (_history_model); |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
62 _history_list_view = new QListView (this); |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
63 _history_list_view->setModel (&_sort_filter_proxy_model); |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
64 _history_list_view->setAlternatingRowColors (true); |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
65 _history_list_view->setEditTriggers (QAbstractItemView::NoEditTriggers); |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
66 _history_list_view->setStatusTip ( |
17935 | 67 tr ("Double-click a command to transfer it to the terminal.")); |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
68 _history_list_view->setSelectionMode (QAbstractItemView::ExtendedSelection); |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
69 _history_list_view->setContextMenuPolicy (Qt::CustomContextMenu); |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
70 connect (_history_list_view, |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
71 SIGNAL (customContextMenuRequested (const QPoint &)), this, |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
72 SLOT (ctxMenu (const QPoint &))); |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
73 |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
74 _filter_line_edit = new QLineEdit (this); |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
75 _filter_line_edit->setStatusTip ( |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
76 tr ("Enter text to filter the command history.")); |
15368
36ececf69385
avoid some GCC warnings in the libgui code
John W. Eaton <jwe@octave.org>
parents:
15367
diff
changeset
|
77 QVBoxLayout *vbox_layout = new QVBoxLayout (); |
13495 | 78 |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
79 setWindowIcon (QIcon (":/actions/icons/logo.png")); |
16798
d749c9b588e5
make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
16570
diff
changeset
|
80 set_title (tr ("Command History")); |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
81 setWidget (new QWidget ()); |
13495 | 82 |
15368
36ececf69385
avoid some GCC warnings in the libgui code
John W. Eaton <jwe@octave.org>
parents:
15367
diff
changeset
|
83 vbox_layout->addWidget (_history_list_view); |
36ececf69385
avoid some GCC warnings in the libgui code
John W. Eaton <jwe@octave.org>
parents:
15367
diff
changeset
|
84 vbox_layout->addWidget (_filter_line_edit); |
36ececf69385
avoid some GCC warnings in the libgui code
John W. Eaton <jwe@octave.org>
parents:
15367
diff
changeset
|
85 vbox_layout->setMargin (2); |
13495 | 86 |
15368
36ececf69385
avoid some GCC warnings in the libgui code
John W. Eaton <jwe@octave.org>
parents:
15367
diff
changeset
|
87 widget ()->setLayout (vbox_layout); |
13545
ffc2e1d1ad5f
History can be filtered with an input search box while typing.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13536
diff
changeset
|
88 |
16057
c3057d80cf91
Created common octave_dock_widget class
Richard Crozier <richard.crozier@yahoo.co.uk>
parents:
15900
diff
changeset
|
89 connect (_filter_line_edit, SIGNAL (textEdited (QString)), |
c3057d80cf91
Created common octave_dock_widget class
Richard Crozier <richard.crozier@yahoo.co.uk>
parents:
15900
diff
changeset
|
90 &_sort_filter_proxy_model, SLOT (setFilterWildcard (QString))); |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
91 |
16057
c3057d80cf91
Created common octave_dock_widget class
Richard Crozier <richard.crozier@yahoo.co.uk>
parents:
15900
diff
changeset
|
92 connect (_history_list_view, SIGNAL (doubleClicked (QModelIndex)), |
c3057d80cf91
Created common octave_dock_widget class
Richard Crozier <richard.crozier@yahoo.co.uk>
parents:
15900
diff
changeset
|
93 this, SLOT (handle_double_click (QModelIndex))); |
15552
bbbb89cc338f
make a floating widget behave like a normal window (bug #37190)
Torsten <ttl@justmail.de>
parents:
15447
diff
changeset
|
94 |
14812
9d9eb9bac65e
Improved menu structure of file, edit and window menu. Removed ambiguous shortcuts, improved focus handling for operating the GUI with the keyboard. Added new shortcuts to focus subwindows directly.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14750
diff
changeset
|
95 setFocusProxy (_filter_line_edit); |
18732
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
96 |
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
97 // shrink max. displayed entry size to desktop width |
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
98 QSize screen = QDesktopWidget ().screenGeometry ().size (); |
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
99 int w = screen.width (); |
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
100 QFontMetrics fm = _history_list_view->fontMetrics (); |
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
101 int h = fm.height (); |
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
102 _history_list_view->setGridSize (QSize (w,h)); |
0f9ed79fb206
fix performance issue of history viewer with large history entries (bug #42255)
Torsten <ttl@justmail.de>
parents:
18555
diff
changeset
|
103 _history_list_view->setTextElideMode (Qt::ElideRight); |
13495 | 104 } |
13536
869c62c15e95
Few minor improvements, added advanced settings for file browser.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13518
diff
changeset
|
105 |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
106 void history_dock_widget::ctxMenu (const QPoint &xpos) |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
107 { |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
108 QMenu menu (this); |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
109 menu.addAction (tr ("Copy"), this, SLOT (handle_contextmenu_copy (bool))); |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
110 menu.addAction (tr ("Evaluate"), this, |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
111 SLOT (handle_contextmenu_evaluate (bool))); |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
112 menu.addAction (tr ("Create script"), this, |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
113 SLOT (handle_contextmenu_create_script (bool))); |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
114 menu.exec (_history_list_view->mapToGlobal (xpos)); |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
115 } |
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
116 |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
117 void history_dock_widget::handle_contextmenu_copy (bool) |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
118 { |
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
119 QString text; |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
120 QItemSelectionModel *selectionModel = _history_list_view->selectionModel (); |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
121 QModelIndexList rows = selectionModel->selectedRows (); |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
122 QModelIndexList::iterator it; |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
123 bool prev_valid_row = false; |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
124 for (it = rows.begin (); it != rows.end (); it++) |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
125 { |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
126 if ((*it).isValid ()) |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
127 { |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
128 if (prev_valid_row) |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
129 text += "\n"; |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
130 text += (*it).data ().toString (); |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
131 prev_valid_row = true; |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
132 } |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
133 } |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
134 QApplication::clipboard ()->setText (text); |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
135 } |
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
136 |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
137 void history_dock_widget::handle_contextmenu_evaluate (bool) |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
138 { |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
139 QItemSelectionModel *selectionModel = _history_list_view->selectionModel (); |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
140 QModelIndexList rows = selectionModel->selectedRows (); |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
141 QModelIndexList::iterator it; |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
142 for (it = rows.begin () ; it != rows.end (); it++) |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
143 { |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
144 if ((*it).isValid ()) |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
145 emit command_double_clicked ((*it).data ().toString ()); |
15447
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
146 } |
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
147 } |
352349219529
Added multiline copy and execution to command history in IDE (bug #36884)
John Swensen <jpswensen@gmail.com>
parents:
15402
diff
changeset
|
148 |
13536
869c62c15e95
Few minor improvements, added advanced settings for file browser.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13518
diff
changeset
|
149 void |
16452
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
150 history_dock_widget::handle_contextmenu_create_script (bool) |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
151 { |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
152 QString text; |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
153 QItemSelectionModel *selectionModel = _history_list_view->selectionModel (); |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
154 QModelIndexList rows = selectionModel->selectedRows (); |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
155 |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
156 bool prev_valid_row = false; |
16452
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
157 for (QModelIndexList::iterator it = rows.begin (); it != rows.end (); it++) |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
158 { |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
159 if ((*it).isValid ()) |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
160 { |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
161 if (prev_valid_row) |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
162 text += "\n"; |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
163 text += (*it).data ().toString (); |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
164 prev_valid_row = true; |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
165 } |
16452
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
166 } |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
167 |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
168 if (text.length () > 0) |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
169 emit command_create_script (text); |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
170 } |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
171 |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
172 |
744ff2fe11ce
add create script context menu to history window
John Donoghue <john.donoghue@ieee.org>
parents:
16447
diff
changeset
|
173 void |
14712
5cb54cca8a06
Completion of code reformatting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14709
diff
changeset
|
174 history_dock_widget::handle_double_click (QModelIndex modelIndex) |
13546
5ef33f99a078
Command get inserted by double clicking in the command history again.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13545
diff
changeset
|
175 { |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
176 emit command_double_clicked (modelIndex.data ().toString ()); |
13546
5ef33f99a078
Command get inserted by double clicking in the command history again.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13545
diff
changeset
|
177 } |
13577
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13549
diff
changeset
|
178 |
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13549
diff
changeset
|
179 void |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
180 history_dock_widget::set_history (const QStringList& hist) |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
181 { |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
182 _history_model->setStringList (hist); |
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
183 _history_list_view->scrollToBottom (); |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
184 } |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
185 |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14712
diff
changeset
|
186 void |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
187 history_dock_widget::append_history (const QString& hist_entry) |
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
188 { |
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
189 QStringList lst = _history_model->stringList (); |
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
190 lst.append (hist_entry); |
17208
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
191 |
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
192 QScrollBar *scroll_bar = _history_list_view->verticalScrollBar (); |
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
193 |
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
194 bool at_bottom = scroll_bar->maximum () - scroll_bar->value () < 1; |
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
195 |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
196 _history_model->setStringList (lst); |
17208
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
197 |
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
198 // Scroll if slider position at bottom. |
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
199 if (at_bottom) |
2527bc7200ee
Only scroll history window if it is positioned at bottom.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
16881
diff
changeset
|
200 _history_list_view->scrollToBottom (); |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
201 } |
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
202 |
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
203 void |
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16351
diff
changeset
|
204 history_dock_widget::clear_history (void) |
14814
61c80e9326a8
Clearing the command history works.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14812
diff
changeset
|
205 { |
61c80e9326a8
Clearing the command history works.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14812
diff
changeset
|
206 _history_model->setStringList (QStringList ()); |
61c80e9326a8
Clearing the command history works.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14812
diff
changeset
|
207 } |
16881
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
208 |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
209 void |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
210 history_dock_widget::copyClipboard () |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
211 { |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
212 if (_history_list_view->hasFocus ()) |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
213 handle_contextmenu_copy (true); |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
214 if (_filter_line_edit->hasFocus () && _filter_line_edit->hasSelectedText ()) |
16881
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
215 { |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
216 QClipboard *clipboard = QApplication::clipboard (); |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
217 clipboard->setText ( _filter_line_edit->selectedText ()); |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
218 } |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
219 } |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
220 |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
221 void |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
222 history_dock_widget::pasteClipboard () |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
223 { |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
224 if (_filter_line_edit->hasFocus ()) |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
225 { |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
226 QClipboard *clipboard = QApplication::clipboard (); |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
227 QString str = clipboard->text (); |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
228 if (str.length () > 0) |
17254
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
229 _filter_line_edit->insert (str); |
7fb4461997aa
Adjust history window copy/evaluate and remove carriage returns (bug #39722)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17208
diff
changeset
|
230 } |
16881
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
231 } |
944ade6e7f66
Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents:
16798
diff
changeset
|
232 |
18555
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
233 void |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
234 history_dock_widget::selectAll () |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
235 { |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
236 if (_filter_line_edit->hasFocus ()) |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
237 { |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
238 _filter_line_edit->selectAll (); |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
239 } |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
240 if (_history_list_view->hasFocus ()) |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
241 { |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
242 _history_list_view->selectAll (); |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
243 } |
2d5d0d86432e
gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents:
17935
diff
changeset
|
244 } |