Mercurial > octave
annotate libgui/src/m-editor/file-editor-tab.cc @ 29359:7854d5752dd2
maint: merge stable to default.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 10 Feb 2021 10:10:40 -0500 |
parents | ab8aa1bb3c2f 0a5b15007766 |
children | fe06fafb4cac |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
29201
diff
changeset
|
3 // Copyright (C) 2011-2021 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
14676
35512b788af2
Editor can now handle multiple files in tabs.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff
changeset
|
25 |
24164
44f0ad0e3af5
doc: libgui/src/m-editor/file-editor-tab.cc: fix Doxygen comment.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
24123
diff
changeset
|
26 //! @file file-editor-tab.cc A single GUI file tab. |
24109
1d6c940a1b37
doc: Improve Doxygen documentation for some files in libgui.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23996
diff
changeset
|
27 //! |
1d6c940a1b37
doc: Improve Doxygen documentation for some files in libgui.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23996
diff
changeset
|
28 //! This interfaces QsciScintilla with the rest of Octave. |
21058
759fcdf3666d
Test GUI marker flags correctly, and omit unnecessary test finding next marker
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21054
diff
changeset
|
29 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21651
diff
changeset
|
30 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21213
diff
changeset
|
31 # include "config.h" |
15286
ae9079bbc627
Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents:
15257
diff
changeset
|
32 #endif |
ae9079bbc627
Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents:
15257
diff
changeset
|
33 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21651
diff
changeset
|
34 #if defined (HAVE_QSCINTILLA) |
15873
7d300b85ee25
allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents:
15860
diff
changeset
|
35 |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
36 #include <QApplication> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
37 #include <QCheckBox> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
38 #include <QDateTime> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
39 #include <QDesktopServices> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
40 #include <QDialogButtonBox> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
41 #include <QFileDialog> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
42 #include <QInputDialog> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
43 #include <QLabel> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
44 #include <QMessageBox> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
45 #include <QPrintDialog> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
46 #include <QPushButton> |
28360
668b38ab90f7
fix jumping vertical scrollbar when file is saved in editor (bug #58418)
Markus Meisinger <chloros2@gmx.de>
parents:
28301
diff
changeset
|
47 #include <QScrollBar> |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
48 #include <QStyle> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
49 #include <QTextBlock> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
50 #include <QTextCodec> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
51 #include <QTextStream> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
52 #include <QVBoxLayout> |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
53 #if defined (HAVE_QSCI_QSCILEXEROCTAVE_H) |
21213
f7d1050b9b53
maint: Clean up various usages of #ifdef.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
54 # define HAVE_LEXER_OCTAVE 1 |
21203
710e700cdd7f
maint: Clean up naming and indentation of #ifdef blocks in libgui
Rik <rik@octave.org>
parents:
21158
diff
changeset
|
55 # include <Qsci/qscilexeroctave.h> |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
56 #elif defined (HAVE_QSCI_QSCILEXERMATLAB_H) |
21213
f7d1050b9b53
maint: Clean up various usages of #ifdef.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
57 # define HAVE_LEXER_MATLAB 1 |
21203
710e700cdd7f
maint: Clean up naming and indentation of #ifdef blocks in libgui
Rik <rik@octave.org>
parents:
21158
diff
changeset
|
58 # include <Qsci/qscilexermatlab.h> |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
59 #endif |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
60 #include <Qsci/qscilexerbash.h> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
61 #include <Qsci/qscilexerbatch.h> |
14873
355d6c165df0
Added syntax highlighting support for .sh/.bat/.pl and .diff-files.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14869
diff
changeset
|
62 #include <Qsci/qscilexercpp.h> |
29165
617d3aa713a4
add java file support in gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29163
diff
changeset
|
63 #include <Qsci/qscilexerjava.h> |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
64 #include <Qsci/qscilexerdiff.h> |
14873
355d6c165df0
Added syntax highlighting support for .sh/.bat/.pl and .diff-files.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14869
diff
changeset
|
65 #include <Qsci/qscilexerperl.h> |
16440
aaf024ac8015
Add editor print menu/toolbutton implementation
John Donoghue <john.donoghue@ieee.org>
parents:
16437
diff
changeset
|
66 #include <Qsci/qsciprinter.h> |
25443
2fa7cd178c4a
new class for miscellaneous interpreter settings
John W. Eaton <jwe@octave.org>
parents:
25440
diff
changeset
|
67 |
15402
7f423c6111c6
refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents:
15389
diff
changeset
|
68 #include "file-editor-tab.h" |
7f423c6111c6
refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents:
15389
diff
changeset
|
69 #include "file-editor.h" |
27664
bd7decacf32e
avoid unnecessary includes of gui-preference header files
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27651
diff
changeset
|
70 #include "gui-preferences-cs.h" |
27560
3fcc650de22f
split gui-preferences.h into one file per widget
John W. Eaton <jwe@octave.org>
parents:
27556
diff
changeset
|
71 #include "gui-preferences-ed.h" |
27671
61883a1a80a1
don't include gui-preferences-global.h in gui-preferences.h
John W. Eaton <jwe@octave.org>
parents:
27664
diff
changeset
|
72 #include "gui-preferences-global.h" |
29220
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
73 #include "gui-utils.h" |
21007
0a09c3cae800
New marker class for modified file breakpoint and position maintenance.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
20995
diff
changeset
|
74 #include "marker.h" |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
75 #include "octave-qobject.h" |
19348
c364b9a44580
provide an editor lexer for text or unknown files (bug #43572)
Torsten <ttl@justmail.de>
parents:
19328
diff
changeset
|
76 #include "octave-txt-lexer.h" |
16547
3cd80afc3509
improve debugging with the GUI
John W. Eaton <jwe@octave.org>
parents:
16520
diff
changeset
|
77 |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
78 #include "cmd-edit.h" |
21310
fc6a9bd59094
backout changeset e8c3590da9ff
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
79 #include "file-ops.h" |
28118
f2789cae04f3
Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents:
27987
diff
changeset
|
80 #include "localcharset-wrapper.h" |
26331
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
81 #include "uniconv-wrappers.h" |
21310
fc6a9bd59094
backout changeset e8c3590da9ff
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
82 |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23084
diff
changeset
|
83 #include "bp-table.h" |
27405
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
84 #include "builtin-defun-decls.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
85 #include "interpreter-private.h" |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
86 #include "interpreter.h" |
27396
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
87 #include "load-path.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
88 #include "oct-map.h" |
22181
acdd8983d308
Force reload of a function after it is saved in the editor (bug #46632)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22180
diff
changeset
|
89 #include "ov-usr-fcn.h" |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
90 #include "qt-interpreter-events.h" |
22181
acdd8983d308
Force reload of a function after it is saved in the editor (bug #46632)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22180
diff
changeset
|
91 #include "symtab.h" |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21148
diff
changeset
|
92 #include "unwind-prot.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
93 #include "utils.h" |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
94 #include "version.h" |
15402
7f423c6111c6
refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents:
15389
diff
changeset
|
95 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
96 namespace octave |
14676
35512b788af2
Editor can now handle multiple files in tabs.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff
changeset
|
97 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
98 //! A file_editor_tab object consists of a text area and three left margins. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
99 //! The first holds breakpoints, bookmarks, and the debug program counter. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
100 //! The second holds line numbers. The third holds "fold" marks, to hide |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
101 //! sections of text. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
102 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
103 // Make parent null for the file editor tab so that warning WindowModal |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
104 // messages don't affect grandparents. |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
105 file_editor_tab::file_editor_tab (base_qobject& oct_qobj, |
27620
45bb5bbaf291
don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents:
27611
diff
changeset
|
106 const QString& directory_arg) |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
107 : m_octave_qobj (oct_qobj) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
108 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
109 m_lexer_apis = nullptr; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
110 m_is_octave_file = true; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
111 m_lines_changed = false; |
28382
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
112 m_autoc_active = false; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
113 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
114 m_ced = directory_arg; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
115 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
116 m_file_name = ""; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
117 m_file_system_watcher.setObjectName ("_qt_autotest_force_engine_poller"); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
118 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
119 m_edit_area = new octave_qscintilla (this, m_octave_qobj); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
120 m_line = 0; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
121 m_col = 0; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
122 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
123 m_bp_lines.clear (); // start with empty lists of breakpoints |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
124 m_bp_conditions.clear (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
125 m_bp_restore_count = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
126 |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
127 m_breakpoint_info.remove_next = false; |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
128 m_breakpoint_info.remove_line = -1; |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
129 |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
130 // Initialize last modification date to now |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
131 m_last_modified = QDateTime::currentDateTimeUtc(); |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
132 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
133 connect (m_edit_area, SIGNAL (cursorPositionChanged (int, int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
134 this, SLOT (handle_cursor_moved (int,int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
135 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
136 connect (m_edit_area, SIGNAL (SCN_CHARADDED (int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
137 this, SLOT (handle_char_added (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
138 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
139 connect (m_edit_area, SIGNAL (SCN_DOUBLECLICK (int, int, int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
140 this, SLOT (handle_double_click (int, int, int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
141 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
142 connect (m_edit_area, SIGNAL (linesChanged ()), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
143 this, SLOT (handle_lines_changed ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
144 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
145 connect (m_edit_area, SIGNAL (context_menu_edit_signal (const QString&)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
146 this, SLOT (handle_context_menu_edit (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
147 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
148 // create statusbar for row/col indicator and eol mode |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
149 m_status_bar = new QStatusBar (this); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
150 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
151 // row- and col-indicator |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
152 m_row_indicator = new QLabel ("", this); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
153 QFontMetrics fm = m_row_indicator->fontMetrics (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
154 m_row_indicator->setMinimumSize (4.5*fm.averageCharWidth (),0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
155 QLabel *row_label = new QLabel (tr ("line:"), this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
156 m_col_indicator = new QLabel ("", this); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
157 m_col_indicator->setMinimumSize (4*fm.averageCharWidth (),0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
158 QLabel *col_label = new QLabel (tr ("col:"), this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
159 m_status_bar->addWidget (row_label, 0); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
160 m_status_bar->addWidget (m_row_indicator, 0); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
161 m_status_bar->addWidget (col_label, 0); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
162 m_status_bar->addWidget (m_col_indicator, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
163 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
164 // status bar: encoding |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
165 QLabel *enc_label = new QLabel (tr ("encoding:"), this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
166 m_enc_indicator = new QLabel ("",this); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
167 m_status_bar->addWidget (enc_label, 0); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
168 m_status_bar->addWidget (m_enc_indicator, 0); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
169 m_status_bar->addWidget (new QLabel (" ", this), 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
170 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
171 // status bar: eol mode |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
172 QLabel *eol_label = new QLabel (tr ("eol:"), this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
173 m_eol_indicator = new QLabel ("",this); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
174 m_status_bar->addWidget (eol_label, 0); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
175 m_status_bar->addWidget (m_eol_indicator, 0); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
176 m_status_bar->addWidget (new QLabel (" ", this), 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
177 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
178 // symbols |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
179 m_edit_area->setMarginType (1, QsciScintilla::SymbolMargin); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
180 m_edit_area->setMarginSensitivity (1, true); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
181 m_edit_area->markerDefine (QsciScintilla::RightTriangle, marker::bookmark); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
182 m_edit_area->setMarkerBackgroundColor (QColor (0,0,232), marker::bookmark); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
183 m_edit_area->markerDefine (QsciScintilla::Circle, marker::breakpoint); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
184 m_edit_area->setMarkerBackgroundColor (QColor (192,0,0), marker::breakpoint); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
185 m_edit_area->markerDefine (QsciScintilla::Circle, marker::cond_break); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
186 m_edit_area->setMarkerBackgroundColor (QColor (255,127,0), marker::cond_break); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
187 m_edit_area->markerDefine (QsciScintilla::RightArrow, |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
188 marker::debugger_position); |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
189 m_edit_area->setMarkerBackgroundColor (QColor (255,255,0), |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
190 marker::debugger_position); |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
191 m_edit_area->markerDefine (QsciScintilla::RightArrow, |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
192 marker::unsure_debugger_position); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
193 m_edit_area->setMarkerBackgroundColor (QColor (192,192,192), |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
194 marker::unsure_debugger_position); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
195 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
196 connect (m_edit_area, SIGNAL (marginClicked (int, int, |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
197 Qt::KeyboardModifiers)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
198 this, SLOT (handle_margin_clicked (int, int, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
199 Qt::KeyboardModifiers))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
200 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
201 connect (m_edit_area, SIGNAL (context_menu_break_condition_signal (int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
202 this, SLOT (handle_context_menu_break_condition (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
203 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
204 // line numbers |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
205 m_edit_area->setMarginsForegroundColor (QColor (96, 96, 96)); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
206 m_edit_area->setMarginsBackgroundColor (QColor (232, 232, 220)); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
207 m_edit_area->setMarginType (2, QsciScintilla::TextMargin); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
208 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
209 // other features |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
210 m_edit_area->setBraceMatching (QsciScintilla::StrictBraceMatch); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
211 m_edit_area->setAutoIndent (true); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
212 m_edit_area->setIndentationWidth (2); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
213 m_edit_area->setIndentationsUseTabs (false); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
214 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
215 m_edit_area->setUtf8 (true); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
216 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
217 // auto completion |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
218 m_edit_area->SendScintilla (QsciScintillaBase::SCI_AUTOCSETCANCELATSTART, false); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
219 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
220 QVBoxLayout *edit_area_layout = new QVBoxLayout (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
221 edit_area_layout->addWidget (m_edit_area); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
222 edit_area_layout->addWidget (m_status_bar); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
223 edit_area_layout->setMargin (0); |
27090
e83d3161b256
make editor toolbar, tabs and statusbar more comapct (bug #53902)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27089
diff
changeset
|
224 edit_area_layout->setSpacing (0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
225 setLayout (edit_area_layout); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
226 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
227 // Any interpreter_event signal from a file_editor_tab_widget is |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
228 // handled the same as for the parent main_window object. |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
229 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
230 connect (m_edit_area, SIGNAL (interpreter_event (const fcn_callback&)), |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
231 this, SIGNAL (interpreter_event (const fcn_callback&))); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
232 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
233 connect (m_edit_area, SIGNAL (interpreter_event (const meth_callback&)), |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
234 this, SIGNAL (interpreter_event (const meth_callback&))); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
235 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
236 // connect modified signal |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
237 connect (m_edit_area, SIGNAL (modificationChanged (bool)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
238 this, SLOT (update_window_title (bool))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
239 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
240 connect (m_edit_area, SIGNAL (copyAvailable (bool)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
241 this, SLOT (handle_copy_available (bool))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
242 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
243 connect (&m_file_system_watcher, SIGNAL (fileChanged (const QString&)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
244 this, SLOT (file_has_changed (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
245 |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
246 connect (this, SIGNAL (maybe_remove_next (int)), |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
247 this, SLOT (handle_remove_next (int))); |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
248 |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
249 connect (this, SIGNAL (dbstop_if (const QString&, int, const QString&)), |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
250 this, |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
251 SLOT (handle_dbstop_if (const QString&, int, const QString&))); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
252 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
253 connect (this, SIGNAL (request_add_breakpoint (int, const QString&)), |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
254 this, SLOT (handle_request_add_breakpoint (int, const QString&))); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
255 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
256 connect (this, SIGNAL (api_entries_added (void)), |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
257 this, SLOT (handle_api_entries_added (void))); |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
258 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
259 connect (this, SIGNAL (confirm_dbquit_and_save_signal (const QString&, const QString&, bool, bool)), |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
260 this, SLOT (confirm_dbquit_and_save (const QString&, const QString&, bool, bool))); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
261 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
262 connect (this, SIGNAL (do_save_file_signal (const QString&, bool, bool)), |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
263 this, SLOT (do_save_file (const QString&, bool, bool))); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
264 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
265 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
266 gui_settings *settings = rmgr.get_settings (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
267 if (settings) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
268 notice_settings (settings, true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
269 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
270 // encoding, not updated with the settings |
29120
eb6599cf2db5
Use UTF-8 encoding for .m files by default (bug #59387).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28851
diff
changeset
|
271 m_encoding = settings->value (ed_default_enc.key, "UTF-8").toString (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
272 m_enc_indicator->setText (m_encoding); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
273 // no changes in encoding yet |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
274 m_new_encoding = m_encoding; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
275 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
276 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
277 file_editor_tab::~file_editor_tab (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
278 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
279 // Tell all connected markers to self-destruct. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
280 emit remove_all_breakpoints (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
281 emit remove_all_positions (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
282 |
29177
bd5961abe971
* file-editor-tab.cc (dtor): do not delete m_edit_area (bug #59628)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28497
diff
changeset
|
283 // Destroy lexer attached to m_edit_area, which is not the parent |
bd5961abe971
* file-editor-tab.cc (dtor): do not delete m_edit_area (bug #59628)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28497
diff
changeset
|
284 // of lexer |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
285 QsciLexer *lexer = m_edit_area->lexer (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
286 if (lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
287 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
288 delete lexer; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
289 m_edit_area->setLexer (nullptr); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
290 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
291 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
292 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
293 void file_editor_tab::set_encoding (const QString& new_encoding) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
294 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
295 if (new_encoding.isEmpty ()) |
19004
e87e65bc71ae
improved finding a function file for editing in gui (bug #41509)
Torsten <ttl@justmail.de>
parents:
18946
diff
changeset
|
296 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
297 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
298 m_encoding = new_encoding; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
299 m_enc_indicator->setText (m_encoding); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
300 if (! m_edit_area->text ().isEmpty ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
301 set_modified (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
302 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
303 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
304 void file_editor_tab::closeEvent (QCloseEvent *e) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
305 { |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
306 int save_dialog = check_file_modified (true); |
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
307 if ((save_dialog == QMessageBox::Cancel) || |
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
308 (save_dialog == QMessageBox::Save)) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
309 { |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
310 // Ignore close event if file is saved or user cancels |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
311 // closing this window. In case of saving, tab is closed after |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
312 // successful saving. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
313 e->ignore (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
314 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
315 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
316 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
317 e->accept (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
318 emit tab_remove_request (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
319 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
320 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
321 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
322 void file_editor_tab::set_current_directory (const QString& dir) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
323 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
324 m_ced = dir; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
325 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
326 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
327 void file_editor_tab::handle_context_menu_edit (const QString& word_at_cursor) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
328 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
329 // Search for a subfunction in actual file (this is done first because |
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
330 // Octave finds this function before others with the same name in the |
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
331 // search path. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
332 QRegExp rxfun1 ("^[\t ]*function[^=]+=[\t ]*" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
333 + word_at_cursor + "[\t ]*\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
334 QRegExp rxfun2 ("^[\t ]*function[\t ]+" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
335 + word_at_cursor + "[\t ]*\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
336 QRegExp rxfun3 ("^[\t ]*function[\t ]+" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
337 + word_at_cursor + "[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
338 QRegExp rxfun4 ("^[\t ]*function[^=]+=[\t ]*" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
339 + word_at_cursor + "[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
340 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
341 int pos_fct = -1; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
342 QStringList lines = m_edit_area->text ().split ("\n"); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
343 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
344 int line; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
345 for (line = 0; line < lines.count (); line++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
346 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
347 if ((pos_fct = rxfun1.indexIn (lines.at (line))) != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
348 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
349 if ((pos_fct = rxfun2.indexIn (lines.at (line))) != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
350 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
351 if ((pos_fct = rxfun3.indexIn (lines.at (line))) != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
352 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
353 if ((pos_fct = rxfun4.indexIn (lines.at (line))) != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
354 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
355 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
356 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
357 if (pos_fct > -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
358 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
359 // reg expr. found: it is an internal function |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
360 m_edit_area->setCursorPosition (line, pos_fct); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
361 m_edit_area->SendScintilla (2232, line); // SCI_ENSUREVISIBLE |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
362 // SCI_VISIBLEFROMDOCLINE |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
363 int vis_line = m_edit_area->SendScintilla (2220, line); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
364 m_edit_area->SendScintilla (2613, vis_line); // SCI_SETFIRSTVISIBLELINE |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
365 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
366 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
367 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
368 emit edit_mfile_request (word_at_cursor, m_file_name, m_ced, -1); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
369 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
370 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
371 // If "dbstop if ..." selected from context menu, create a conditional |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
372 // breakpoint. The default condition is (a) the existing condition if there |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
373 // is already a breakpoint, (b) any selected text, or (c) empty |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
374 void file_editor_tab::handle_context_menu_break_condition (int linenr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
375 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
376 // Ensure editor line numbers match Octave core's line numbers. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
377 // Give users the option to save modifications if necessary. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
378 if (! unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
379 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
380 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
381 QString cond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
382 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
383 // Search for previous condition. FIXME: is there a more direct way? |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
384 if (m_edit_area->markersAtLine (linenr) & (1 << marker::cond_break)) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
385 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
386 emit report_marker_linenr (m_bp_lines, m_bp_conditions); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
387 for (int i = 0; i < m_bp_lines.length (); i++) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
388 if (m_bp_lines.value (i) == linenr) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
389 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
390 cond = m_bp_conditions.value (i); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
391 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
392 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
393 m_bp_lines.clear (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
394 m_bp_conditions.clear (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
395 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
396 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
397 // If text selected by the mouse, default to that instead |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
398 // If both present, use the OR of them, to avoid accidental overwriting |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
399 // FIXME: If both are present, show old condition unselected and |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
400 // the selection (in edit area) selected (in the dialog). |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
401 if (m_edit_area->hasSelectedText ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
402 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
403 if (cond == "") |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
404 cond = m_edit_area->selectedText (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
405 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
406 cond = '(' + cond + ") || (" + m_edit_area->selectedText () + ')'; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
407 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
408 |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
409 emit dbstop_if ("dbstop if", linenr+1, cond); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
410 } |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
411 |
27971
ec769a7ab9fb
fix more spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
412 // Display dialog in GUI thread to get condition, then emit |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
413 // interpreter_event signal to check it in the interpreter thread. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
414 // If the dialog returns a valid condition, then either emit a signal |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
415 // to add the breakpoint in the editor tab or a signal to display a |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
416 // new dialog. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
417 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
418 void file_editor_tab::handle_dbstop_if (const QString& prompt, int line, |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
419 const QString& cond) |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
420 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
421 bool ok; |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
422 QString new_cond |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
423 = QInputDialog::getText (this, tr ("Breakpoint condition"), |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
424 prompt, QLineEdit::Normal, cond, &ok); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
425 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
426 // If cancel, don't change breakpoint condition. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
427 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
428 if (ok && ! new_cond.isEmpty ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
429 { |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
430 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
431 ([=] (interpreter& interp) |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
432 { |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
433 // INTERPRETER THREAD |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
434 |
27471 | 435 error_system& es = interp.get_error_system (); |
436 | |
437 unwind_protect frame; | |
438 | |
439 // Prevent an error in the evaluation here from sending us | |
440 // into the debugger. | |
441 | |
442 es.interpreter_try (frame); | |
443 | |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
444 bool eval_error = false; |
27471 | 445 std::string msg; |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
446 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
447 try |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
448 { |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
449 tree_evaluator& tw = interp.get_evaluator (); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
450 bp_table& bptab = tw.get_bp_table (); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
451 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
452 bptab.condition_valid (new_cond.toStdString ()); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
453 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
454 // The condition seems OK, so set the conditional |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
455 // breakpoint. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
456 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
457 emit request_add_breakpoint (line, new_cond); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
458 } |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29162
diff
changeset
|
459 catch (const execution_exception& ee) |
27471 | 460 { |
27474
3fec8e9fa2aa
make recover_from_exception a member function
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
461 interp.recover_from_exception (); |
27471 | 462 |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29162
diff
changeset
|
463 msg = ee.message (); |
27471 | 464 eval_error = true; |
465 } | |
466 catch (const interrupt_exception&) | |
467 { | |
27474
3fec8e9fa2aa
make recover_from_exception a member function
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
468 interp.recover_from_exception (); |
27471 | 469 |
470 msg = "evaluation interrupted"; | |
471 eval_error = true; | |
472 } | |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
473 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
474 if (eval_error) |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
475 { |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
476 // Try again with a prompt that indicates the last |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
477 // attempt was an error. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
478 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
479 QString new_prompt = (tr ("ERROR: ") |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
480 + QString::fromStdString (msg) |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
481 + "\n\ndbstop if"); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
482 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
483 emit dbstop_if (new_prompt, line, ""); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
484 } |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
485 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
486 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
487 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
488 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
489 void file_editor_tab::set_file_name (const QString& fileName) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
490 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
491 // update tracked file if we really have a file on disk |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
492 QStringList trackedFiles = m_file_system_watcher.files (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
493 if (! trackedFiles.isEmpty ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
494 m_file_system_watcher.removePath (m_file_name); |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
495 if (! fileName.isEmpty () && QFile::exists (fileName)) |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
496 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
497 m_file_system_watcher.addPath (fileName); |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
498 m_last_modified = QFileInfo (fileName).lastModified ().toUTC (); |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
499 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
500 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
501 // update lexer and file name variable if file name changes |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
502 if (m_file_name != fileName) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
503 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
504 m_file_name = fileName; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
505 update_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
506 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
507 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
508 // update the file editor with current editing directory |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
509 emit editor_state_changed (m_copy_available, m_is_octave_file); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
510 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
511 // add the new file to the most-recently-used list |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
512 emit mru_add_file (m_file_name, m_encoding); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
513 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
514 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
515 // valid_file_name (file): checks whether "file" names a file. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
516 // By default, "file" is empty; then m_file_name is checked |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
517 bool file_editor_tab::valid_file_name (const QString& file) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
518 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
519 if (file.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
520 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
521 if (m_file_name.isEmpty ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
522 return false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
523 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
524 return true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
525 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
526 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
527 return true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
528 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
529 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
530 // We cannot create a breakpoint when the file is modified |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
531 // because the line number the editor is providing might |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
532 // not match what Octave core is interpreting in the |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
533 // file on disk. This function gives the user the option |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
534 // to save before creating the breakpoint. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
535 bool file_editor_tab::unchanged_or_saved (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
536 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
537 bool retval = true; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
538 if (m_edit_area->isModified () || ! valid_file_name ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
539 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
540 int ans = QMessageBox::question (nullptr, tr ("Octave Editor"), |
25566
eee01a6e197f
allow setting a breakpoint in an unnamed editor file (bug #54231)
Torsten <mttl@mailbox.org>
parents:
25558
diff
changeset
|
541 tr ("Cannot add breakpoint to modified or unnamed file.\n" |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
542 "Save and add breakpoint, or cancel?"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
543 QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Save); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
544 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
545 if (ans == QMessageBox::Save) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
546 save_file (m_file_name, false); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
547 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
548 retval = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
549 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
550 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
551 return retval; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
552 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
553 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
554 // Toggle a breakpoint at the editor_linenr or, if this was called by |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
555 // a click with CTRL pressed, toggle a bookmark at that point. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
556 void file_editor_tab::handle_margin_clicked (int margin, int editor_linenr, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
557 Qt::KeyboardModifiers state) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
558 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
559 if (margin == 1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
560 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
561 unsigned int markers_mask = m_edit_area->markersAtLine (editor_linenr); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
562 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
563 if (state & Qt::ControlModifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
564 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
565 if (markers_mask & (1 << marker::bookmark)) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
566 m_edit_area->markerDelete (editor_linenr, marker::bookmark); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
567 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
568 m_edit_area->markerAdd (editor_linenr, marker::bookmark); |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21148
diff
changeset
|
569 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
570 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
571 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
572 if (markers_mask & ((1 << marker::breakpoint) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
573 | (1 << marker::cond_break))) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
574 handle_request_remove_breakpoint (editor_linenr + 1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
575 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
576 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
577 if (unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
578 handle_request_add_breakpoint (editor_linenr + 1, ""); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
579 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
580 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
581 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
582 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
583 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
584 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
585 void file_editor_tab::update_lexer (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
586 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
587 // Create a new lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
588 QsciLexer *lexer = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
589 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
590 m_is_octave_file = false; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
591 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
592 // Find the required lexer from file extensions |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
593 if (m_file_name.endsWith (".m") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
594 || m_file_name.endsWith ("octaverc")) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
595 { |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
596 #if defined (HAVE_LEXER_OCTAVE) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
597 lexer = new QsciLexerOctave (); |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
598 #elif defined (HAVE_LEXER_MATLAB) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
599 lexer = new QsciLexerMatlab (); |
19348
c364b9a44580
provide an editor lexer for text or unknown files (bug #43572)
Torsten <ttl@justmail.de>
parents:
19328
diff
changeset
|
600 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
601 lexer = new octave_txt_lexer (); |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
602 #endif |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
603 m_is_octave_file = true; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
604 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
605 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
606 if (! lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
607 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
608 if (m_file_name.endsWith (".c") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
609 || m_file_name.endsWith (".cc") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
610 || m_file_name.endsWith (".cpp") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
611 || m_file_name.endsWith (".cxx") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
612 || m_file_name.endsWith (".c++") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
613 || m_file_name.endsWith (".h") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
614 || m_file_name.endsWith (".hh") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
615 || m_file_name.endsWith (".hpp") |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
616 || m_file_name.endsWith (".h++")) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
617 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
618 lexer = new QsciLexerCPP (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
619 } |
29165
617d3aa713a4
add java file support in gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29163
diff
changeset
|
620 else if (m_file_name.endsWith (".java")) |
617d3aa713a4
add java file support in gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29163
diff
changeset
|
621 { |
617d3aa713a4
add java file support in gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29163
diff
changeset
|
622 lexer = new QsciLexerJava (); |
617d3aa713a4
add java file support in gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29163
diff
changeset
|
623 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
624 else if (m_file_name.endsWith (".pl")) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
625 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
626 lexer = new QsciLexerPerl (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
627 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
628 else if (m_file_name.endsWith (".bat")) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
629 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
630 lexer = new QsciLexerBatch (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
631 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
632 else if (m_file_name.endsWith (".diff")) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
633 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
634 lexer = new QsciLexerDiff (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
635 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
636 else if (m_file_name.endsWith (".sh")) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
637 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
638 lexer = new QsciLexerBash (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
639 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
640 else if (! valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
641 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
642 // new, not yet named file: let us assume it is octave |
16716
23b5dde25367
make octave lexer the default and dynamically set margin width for line numbers
Torsten <ttl@justmail.de>
parents:
16715
diff
changeset
|
643 #if defined (HAVE_LEXER_OCTAVE) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
644 lexer = new QsciLexerOctave (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
645 m_is_octave_file = true; |
16716
23b5dde25367
make octave lexer the default and dynamically set margin width for line numbers
Torsten <ttl@justmail.de>
parents:
16715
diff
changeset
|
646 #elif defined (HAVE_LEXER_MATLAB) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
647 lexer = new QsciLexerMatlab (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
648 m_is_octave_file = true; |
16716
23b5dde25367
make octave lexer the default and dynamically set margin width for line numbers
Torsten <ttl@justmail.de>
parents:
16715
diff
changeset
|
649 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
650 lexer = new octave_txt_lexer (); |
16716
23b5dde25367
make octave lexer the default and dynamically set margin width for line numbers
Torsten <ttl@justmail.de>
parents:
16715
diff
changeset
|
651 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
652 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
653 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
654 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
655 // other or no extension |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
656 lexer = new octave_txt_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
657 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
658 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
659 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
660 // Get any existing lexer |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
661 QsciLexer *old_lexer = m_edit_area->lexer (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
662 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
663 // If new file, no lexer, or lexer has changed, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
664 // delete old one and set the newly created as current lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
665 if (! old_lexer || ! valid_file_name () |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
666 || QString(old_lexer->lexer ()) != QString(lexer->lexer ())) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
667 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
668 // Delete and set new lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
669 if (old_lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
670 delete old_lexer; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
671 m_edit_area->setLexer (lexer); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
672 |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
673 // Build information for auto completion (APIs) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
674 m_lexer_apis = new QsciAPIs (lexer); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
675 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
676 connect (this, SIGNAL (request_add_octave_apis (const QStringList&)), |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
677 this, SLOT (handle_add_octave_apis (const QStringList&))); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
678 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
679 // Get the settings for this new lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
680 update_lexer_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
681 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
682 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
683 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
684 // Otherwise, delete the newly created lexer and |
26369
0249ba4c9589
Fix static analyzer detected V668 issues (bug #55347).
Andreas Weber <octave@josoansi.de>
parents:
26346
diff
changeset
|
685 // use the old, existing one. |
0249ba4c9589
Fix static analyzer detected V668 issues (bug #55347).
Andreas Weber <octave@josoansi.de>
parents:
26346
diff
changeset
|
686 delete lexer; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
687 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
688 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
689 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
690 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
691 // Update settings, which are lexer related and have to be updated |
28788
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
692 // when |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
693 // a) the lexer changes, |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
694 // b) the settings have changed, or |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
695 // c) a package was loaded/unloaded |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
696 void file_editor_tab::update_lexer_settings (bool update_apis_only) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
697 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
698 QsciLexer *lexer = m_edit_area->lexer (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
699 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
700 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
701 gui_settings *settings = rmgr.get_settings (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
702 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
703 if (m_lexer_apis) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
704 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
705 m_lexer_apis->cancelPreparation (); // stop preparing if apis exists |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
706 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
707 bool update_apis = false; // flag, whether update of apis files |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
708 |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
709 // Get path to prepared api info (cache). Temporarily set the |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
710 // application name to 'octave' instead of 'GNU Octave' name for |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
711 // not having blanks in the path. |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
712 QString tmp_app_name = QCoreApplication::applicationName (); |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
713 QCoreApplication::setApplicationName ("octave"); // Set new name |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
714 |
24827
1e0718c1867c
eliminate most Qt version checks
John W. Eaton <jwe@octave.org>
parents:
24738
diff
changeset
|
715 #if defined (HAVE_QSTANDARDPATHS) |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
716 QString local_data_path |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
717 = QStandardPaths::writableLocation (QStandardPaths::CacheLocation); |
22250
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22181
diff
changeset
|
718 #else |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
719 QString local_data_path |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
720 = QDesktopServices::storageLocation (QDesktopServices::CacheLocation); |
22250
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22181
diff
changeset
|
721 #endif |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
722 |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
723 QCoreApplication::setApplicationName ("octave"); // Set temp. name |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
724 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
725 m_prep_apis_path |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
726 = local_data_path + "/" + QString (OCTAVE_VERSION) + "/qsci/"; |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
727 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
728 // get settings which infos are used for octave |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
729 bool octave_builtins |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
730 = settings->value (ed_code_completion_octave_builtins).toBool (); |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
731 bool octave_functions |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
732 = settings->value (ed_code_completion_octave_functions).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
733 |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
734 QCoreApplication::setApplicationName (tmp_app_name); // Restore name |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
735 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
736 if (m_is_octave_file) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
737 { |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
738 // Keywords and Builtins do not change, this information can be |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
739 // stored in prepared form in a file. Information on function are |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
740 // changing frequently, then if functions should also be auto- |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
741 // completed, the date of any existing file is checked. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
742 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
743 // Keywords are always used |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
744 m_prep_apis_file = m_prep_apis_path + lexer->lexer () + "_k"; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
745 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
746 // Builtins are only used if the user settings say so |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
747 if (octave_builtins) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
748 m_prep_apis_file += 'b'; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
749 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
750 if (octave_functions) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
751 m_prep_apis_file += 'f'; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
752 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
753 m_prep_apis_file += ".pap"; // final name of apis file |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
754 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
755 // check whether the APIs info needs to be prepared and saved |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
756 QFileInfo apis_file = QFileInfo (m_prep_apis_file); |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
757 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
758 // flag whether apis file needs update |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
759 update_apis = ! apis_file.exists (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
760 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
761 if (octave_functions) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
762 { |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
763 // Functions may change frequently. Update the apis data |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
764 // if the file is older than a few minutes preventing from |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
765 // re-preparing data when the user opens several files. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
766 QDateTime apis_time = apis_file.lastModified (); |
28788
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
767 if (update_apis_only |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
768 || QDateTime::currentDateTime () > apis_time.addSecs (180)) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
769 update_apis = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
770 } |
23489
1b017f9ee3f1
more frequent preparation of data for autocompletion
Torsten <mttl@mailbox.org>
parents:
23457
diff
changeset
|
771 |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
772 } |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
773 else |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
774 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
775 // No octave file, just add extension. |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
776 m_prep_apis_file = m_prep_apis_path + lexer->lexer () + ".pap"; |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
777 } |
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
778 |
26841
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
779 // Make sure the apis file is usable, otherwise the gui might crash, |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
780 // e.g., in case of max. number of opened files |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
781 QFile f (m_prep_apis_file); |
26841
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
782 |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
783 bool apis_usable = f.open (QIODevice::ReadOnly); |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
784 if (! apis_usable) |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
785 { |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
786 QDir ().mkpath (QFileInfo (f).absolutePath ()); |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
787 apis_usable = f.open (QIODevice::WriteOnly); |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
788 } |
26522
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
789 if (apis_usable) |
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
790 f.close (); |
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
791 |
27277
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
792 if (apis_usable |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
793 && (update_apis || ! m_lexer_apis->loadPrepared (m_prep_apis_file))) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
794 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
795 // either we have decided to update the apis file or |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
796 // no prepared info was loaded, prepare and save if possible |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
797 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
798 // create raw apis info |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
799 |
28788
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
800 m_lexer_apis->clear (); // Clear current contents |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
801 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
802 if (m_is_octave_file) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
803 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
804 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
805 ([=] (interpreter& interp) |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
806 { |
27405
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
807 // INTERPRETER THREAD |
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
808 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
809 QStringList api_entries; |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
810 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
811 octave_value_list tmp = Fiskeyword (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
812 const Cell ctmp = tmp(0).cell_value (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
813 for (octave_idx_type i = 0; i < ctmp.numel (); i++) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
814 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
815 std::string kw = ctmp(i).string_value (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
816 api_entries.append (QString::fromStdString (kw)); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
817 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
818 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
819 if (octave_builtins) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
820 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
821 symbol_table& symtab = interp.get_symbol_table (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
822 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
823 string_vector bfl = symtab.built_in_function_names (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
824 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
825 for (octave_idx_type i = 0; i < bfl.numel (); i++) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
826 api_entries.append (QString::fromStdString (bfl[i])); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
827 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
828 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
829 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
830 if (octave_functions) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
831 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
832 load_path& lp = interp.get_load_path (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
833 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
834 string_vector ffl = lp.fcn_names (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
835 string_vector afl = interp.autoloaded_functions (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
836 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
837 for (octave_idx_type i = 0; i < ffl.numel (); i++) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
838 api_entries.append (QString::fromStdString (ffl[i])); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
839 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
840 for (octave_idx_type i = 0; i < afl.numel (); i++) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
841 api_entries.append (QString::fromStdString (afl[i])); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
842 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
843 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
844 emit request_add_octave_apis (api_entries); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
845 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
846 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
847 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
848 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
849 for (int i = 1; i <= 3; i++) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
850 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
851 // Get list, split, and add to API. |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
852 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
853 QString keyword = QString (lexer->keywords (i)); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
854 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
855 QStringList keyword_list |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
856 = keyword.split (QRegExp (R"(\s+)")); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
857 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
858 for (int j = 0; j < keyword_list.size (); j++) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
859 m_lexer_apis->add (keyword_list.at (j)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
860 } |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
861 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
862 emit api_entries_added (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
863 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
864 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
865 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
866 |
28788
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
867 if (update_apis_only) |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
868 return; // We are done here |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
869 |
29162
bb6bb306b8a6
copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29155
diff
changeset
|
870 rmgr.read_lexer_settings (lexer, settings); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
871 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
872 m_edit_area->setCaretForegroundColor (lexer->color (0)); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
873 m_edit_area->setIndentationGuidesForegroundColor (lexer->color (0)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
874 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
875 // set some colors depending on selected background color of the lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
876 QColor bg = lexer->paper (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
877 QColor fg = lexer->color (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
878 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
879 // margin colors |
29220
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
880 QColor bgm, fgm; |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
881 |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
882 bgm = interpolate_color (bg, fg, 0.5, 0.2); |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
883 m_edit_area->setEdgeColor (bgm); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
884 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
885 m_edit_area->setMarkerForegroundColor (lexer->color (0)); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
886 m_edit_area->setMarginsForegroundColor (lexer->color (0)); |
29220
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
887 |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
888 bgm = interpolate_color (bg, fg, 0.5, 0.125); |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
889 fgm = interpolate_color (bg, fg, 0.5, 0.25); |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
890 m_edit_area->setMarginsBackgroundColor (bgm); |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
891 m_edit_area->setFoldMarginColors (bgm, fgm); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
892 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
893 // color indicator for highlighting all occurrences: |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
894 // applications highlight color with more transparency |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
895 QColor hg = QApplication::palette ().color (QPalette::Highlight); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
896 m_edit_area->set_selection_marker_color (hg); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
897 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
898 // fix line number width with respect to the font size of the lexer and |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
899 // set the line numbers font depending on the lexer's font |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
900 if (settings->value (ed_show_line_numbers).toBool ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
901 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
902 // Line numbers width |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
903 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
904 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
905 // Line numbers font |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
906 QFont line_numbers_font = lexer->defaultFont (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
907 int font_size = line_numbers_font.pointSize (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
908 font_size = font_size |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
909 + settings->value (ed_line_numbers_size).toInt (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
910 if (font_size < 4) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
911 font_size = 4; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
912 line_numbers_font.setPointSize (font_size); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
913 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
914 m_edit_area->setMarginsFont (line_numbers_font); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
915 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
916 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
917 m_edit_area->setMarginWidth (2,0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
918 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
919 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
920 // function for adding entries to the octave lexer's APIs |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
921 void file_editor_tab::handle_add_octave_apis (const QStringList& api_entries) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
922 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
923 for (int idx = 0; idx < api_entries.size (); idx++) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
924 m_lexer_apis->add (api_entries.at (idx)); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
925 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
926 emit api_entries_added (); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
927 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
928 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
929 void file_editor_tab::handle_api_entries_added (void) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
930 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
931 // disconnect slot for saving prepared info if already connected |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
932 disconnect (m_lexer_apis, SIGNAL (apiPreparationFinished ()), |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
933 nullptr, nullptr); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
934 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
935 // check whether path for prepared info exists or can be created |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
936 if (QDir ("/").mkpath (m_prep_apis_path)) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
937 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
938 // path exists, apis info can be saved there |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
939 connect (m_lexer_apis, SIGNAL (apiPreparationFinished ()), |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
940 this, SLOT (save_apis_info ())); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
941 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
942 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
943 m_lexer_apis->prepare (); // prepare apis info |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
944 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
945 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
946 void file_editor_tab::save_apis_info (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
947 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
948 m_lexer_apis->savePrepared (m_prep_apis_file); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
949 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
950 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
951 // slot for fetab_set_focus: sets the focus to the current edit area |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
952 void file_editor_tab::set_focus (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
953 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
954 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
955 return; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
956 m_edit_area->setFocus (); |
27787
5169ed0ff0f0
only one find dialog for all editor tabs (bug #57238)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27672
diff
changeset
|
957 emit edit_area_changed (m_edit_area); // update the edit area in find dlg |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
958 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
959 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
960 void file_editor_tab::context_help (const QWidget *ID, bool doc) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
961 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
962 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
963 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
964 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
965 m_edit_area->context_help_doc (doc); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
966 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
967 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
968 void file_editor_tab::context_edit (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
969 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
970 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
971 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
972 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
973 m_edit_area->context_edit (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
974 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
975 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
976 void file_editor_tab::save_file (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
977 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
978 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
979 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
980 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
981 save_file (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
982 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
983 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
984 void file_editor_tab::save_file (const QWidget *ID, const QString& fileName, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
985 bool remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
986 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
987 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
988 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
989 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
990 save_file (fileName, remove_on_success); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
991 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
992 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
993 void file_editor_tab::save_file_as (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
994 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
995 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
996 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
997 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
998 save_file_as (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
999 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1000 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1001 void file_editor_tab::print_file (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1002 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1003 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1004 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1005 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1006 QsciPrinter *printer = new QsciPrinter (QPrinter::HighResolution); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1007 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1008 QPrintDialog printDlg (printer, this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1009 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1010 if (printDlg.exec () == QDialog::Accepted) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1011 printer->printRange (m_edit_area); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1012 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1013 delete printer; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1014 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1015 |
26873
9ec36417c262
debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26855
diff
changeset
|
1016 void file_editor_tab::run_file (const QWidget *ID, bool step_into) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1017 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1018 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1019 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1020 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1021 if (m_edit_area->isModified () | ! valid_file_name ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1022 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1023 save_file (m_file_name); // save file dialog |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1024 if (! valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1025 return; // still invalid filename: "save as" was cancelled |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1026 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1027 |
26873
9ec36417c262
debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26855
diff
changeset
|
1028 if (step_into) |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1029 { |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1030 // Get current first breakpoint and set breakpoint waiting for |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
1031 // the returned line number. Store whether to remove this breakpoint |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1032 // afterwards. |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1033 int first_bp_line |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1034 = m_edit_area->markerFindNext (0, (1 << marker::breakpoint)) + 1; |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1035 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1036 // Set flag for storing the line number of the breakpoint |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1037 m_breakpoint_info.remove_next = true; |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1038 m_breakpoint_info.do_not_remove_line = first_bp_line; |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1039 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1040 // Add breakpoint, storing its line number |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1041 handle_request_add_breakpoint (1, QString ()); |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1042 } |
26873
9ec36417c262
debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26855
diff
changeset
|
1043 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1044 QFileInfo info (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1045 emit run_file_signal (info); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1046 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1047 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1048 void file_editor_tab::context_run (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1049 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1050 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1051 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1052 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1053 m_edit_area->context_run (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1054 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1055 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1056 void file_editor_tab::toggle_bookmark (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1057 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1058 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1059 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1060 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1061 int line, cur; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1062 m_edit_area->getCursorPosition (&line, &cur); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1063 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1064 if (m_edit_area->markersAtLine (line) & (1 << marker::bookmark)) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1065 m_edit_area->markerDelete (line, marker::bookmark); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1066 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1067 m_edit_area->markerAdd (line, marker::bookmark); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1068 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1069 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1070 // Move the text cursor to the closest bookmark |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1071 // after the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1072 void file_editor_tab::next_bookmark (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1073 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1074 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1075 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1076 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1077 int line, cur; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1078 m_edit_area->getCursorPosition (&line, &cur); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1079 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1080 line++; // Find bookmark strictly after the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1081 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1082 int nextline = m_edit_area->markerFindNext (line, (1 << marker::bookmark)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1083 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1084 // Wrap. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1085 if (nextline == -1) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1086 nextline = m_edit_area->markerFindNext (1, (1 << marker::bookmark)); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1087 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1088 m_edit_area->setCursorPosition (nextline, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1089 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1090 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1091 // Move the text cursor to the closest bookmark |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1092 // before the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1093 void file_editor_tab::previous_bookmark (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1094 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1095 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1096 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1097 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1098 int line, cur; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1099 m_edit_area->getCursorPosition (&line, &cur); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1100 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1101 line--; // Find bookmark strictly before the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1102 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1103 int prevline = m_edit_area->markerFindPrevious (line, (1 << marker::bookmark)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1104 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1105 // Wrap. Should use the last line of the file, not 1<<15 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1106 if (prevline == -1) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1107 prevline = m_edit_area->markerFindPrevious (m_edit_area->lines (), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1108 (1 << marker::bookmark)); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1109 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1110 m_edit_area->setCursorPosition (prevline, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1111 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1112 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1113 void file_editor_tab::remove_bookmark (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1114 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1115 if (ID != this) |
24123
16c8ec7f0867
do not move the cursor when saving a file with breakpoints (bug #51793)
Torsten <mttl@mailbox.org>
parents:
24109
diff
changeset
|
1116 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1117 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1118 m_edit_area->markerDeleteAll (marker::bookmark); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1119 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1120 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1121 file_editor_tab::bp_info::bp_info (const QString& fname, int l, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1122 const QString& cond) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1123 : line (l), file (fname.toStdString ()), condition (cond.toStdString ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1124 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1125 QFileInfo file_info (fname); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1126 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1127 QString q_dir = file_info.absolutePath (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1128 QString q_function_name = file_info.fileName (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1129 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1130 // We have to cut off the suffix, because octave appends it. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1131 q_function_name.chop (file_info.suffix ().length () + 1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1132 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1133 dir = q_dir.toStdString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1134 function_name = q_function_name.toStdString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1135 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1136 // Is the last component of DIR @foo? If so, strip it and prepend it |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1137 // to the name of the function. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1138 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1139 size_t pos = dir.rfind (sys::file_ops::dir_sep_chars ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1140 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1141 if (pos != std::string::npos && pos < dir.length () - 1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1142 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1143 if (dir[pos+1] == '@') |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1144 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1145 function_name = sys::file_ops::concat (dir.substr (pos+1), function_name); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1146 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1147 dir = dir.substr (0, pos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1148 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1149 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1150 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1151 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1152 void file_editor_tab::handle_request_add_breakpoint (int line, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1153 const QString& condition) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1154 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1155 bp_info info (m_file_name, line, condition); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1156 |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1157 add_breakpoint_event (info); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1158 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1159 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1160 void file_editor_tab::handle_request_remove_breakpoint (int line) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1161 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1162 bp_info info (m_file_name, line); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1163 |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1164 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
1165 ([=] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1166 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1167 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1168 |
27396
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1169 load_path& lp = interp.get_load_path (); |
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1170 |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1171 bp_table::intmap line_info; |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1172 line_info[0] = info.line; |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1173 |
27396
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1174 if (lp.contains_file_in_dir (info.file, info.dir)) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1175 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1176 tree_evaluator& tw = interp.get_evaluator (); |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1177 |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1178 bp_table& bptab = tw.get_bp_table (); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1179 |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1180 bptab.remove_breakpoint (info.function_name, line_info); |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1181 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1182 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1183 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1184 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1185 void file_editor_tab::toggle_breakpoint (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1186 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1187 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1188 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1189 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1190 int editor_linenr, cur; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1191 m_edit_area->getCursorPosition (&editor_linenr, &cur); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1192 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1193 if (m_edit_area->markersAtLine (editor_linenr) & (1 << marker::breakpoint)) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1194 request_remove_breakpoint_via_editor_linenr (editor_linenr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1195 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1196 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1197 if (unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1198 handle_request_add_breakpoint (editor_linenr + 1, ""); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1199 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1200 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1201 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1202 // Move the text cursor to the closest breakpoint (conditional or unconditional) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1203 // after the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1204 void file_editor_tab::next_breakpoint (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1205 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1206 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1207 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1208 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1209 int line, cur; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1210 m_edit_area->getCursorPosition (&line, &cur); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1211 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1212 line++; // Find breakpoint strictly after the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1213 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1214 int nextline = m_edit_area->markerFindNext (line, (1 << marker::breakpoint)); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1215 int nextcond = m_edit_area->markerFindNext (line, (1 << marker::cond_break)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1216 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1217 // Check if the next conditional breakpoint is before next unconditional one. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1218 if (nextcond != -1 && (nextcond < nextline || nextline == -1)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1219 nextline = nextcond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1220 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1221 m_edit_area->setCursorPosition (nextline, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1222 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1223 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1224 // Move the text cursor to the closest breakpoint (conditional or unconditional) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1225 // before the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1226 void file_editor_tab::previous_breakpoint (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1227 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1228 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1229 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1230 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1231 int line, cur, prevline, prevcond; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1232 m_edit_area->getCursorPosition (&line, &cur); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1233 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1234 line--; // Find breakpoint strictly before the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1235 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1236 prevline = m_edit_area->markerFindPrevious (line, (1 << marker::breakpoint)); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1237 prevcond = m_edit_area->markerFindPrevious (line, (1 << marker::cond_break)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1238 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1239 // Check if the prev conditional breakpoint is closer than the unconditional. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1240 if (prevcond != -1 && prevcond > prevline) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1241 prevline = prevcond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1242 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1243 m_edit_area->setCursorPosition (prevline, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1244 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1245 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1246 void file_editor_tab::remove_all_breakpoints (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1247 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1248 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1249 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1250 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1251 bp_info info (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1252 |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1253 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
1254 ([=] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1255 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1256 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1257 |
27396
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1258 load_path& lp = interp.get_load_path (); |
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1259 |
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1260 if (lp.contains_file_in_dir (info.file, info.dir)) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1261 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1262 tree_evaluator& tw = interp.get_evaluator (); |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1263 |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1264 bp_table& bptab = tw.get_bp_table (); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1265 |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1266 bptab.remove_all_breakpoints_in_file (info.function_name, true); |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1267 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1268 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1269 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1270 |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
1271 void file_editor_tab::scintilla_command (const QWidget *ID, |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
1272 unsigned int sci_msg) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1273 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1274 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1275 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1276 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1277 m_edit_area->SendScintilla (sci_msg); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1278 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1279 |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
1280 void file_editor_tab::comment_selected_text (const QWidget *ID, |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
1281 bool input_str) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1282 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1283 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1284 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1285 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1286 do_comment_selected_text (true, input_str); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1287 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1288 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1289 void file_editor_tab::uncomment_selected_text (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1290 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1291 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1292 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1293 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1294 do_comment_selected_text (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1295 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1296 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1297 void file_editor_tab::indent_selected_text (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1298 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1299 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1300 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1301 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1302 do_indent_selected_text (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1303 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1304 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1305 void file_editor_tab::unindent_selected_text (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1306 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1307 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1308 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1309 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1310 do_indent_selected_text (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1311 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1312 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1313 void file_editor_tab::smart_indent_line_or_selected_text (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1314 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1315 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1316 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1317 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1318 do_smart_indent_line_or_selected_text (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1319 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1320 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1321 void file_editor_tab::convert_eol (const QWidget *ID, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1322 QsciScintilla::EolMode eol_mode) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1323 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1324 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1325 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1326 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1327 m_edit_area->convertEols (eol_mode); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1328 m_edit_area->setEolMode (eol_mode); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1329 update_eol_indicator (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1330 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1331 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1332 void file_editor_tab::zoom_in (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1333 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1334 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1335 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1336 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1337 m_edit_area->zoomIn (1); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1338 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1339 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1340 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1341 void file_editor_tab::zoom_out (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1342 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1343 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1344 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1345 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1346 m_edit_area->zoomOut (1); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1347 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1348 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1349 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1350 void file_editor_tab::zoom_normal (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1351 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1352 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1353 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1354 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1355 m_edit_area->zoomTo (0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1356 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1357 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1358 |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1359 void file_editor_tab::add_breakpoint_event (const bp_info& info) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1360 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1361 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
1362 ([=] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1363 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1364 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1365 |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1366 // FIXME: note duplication with the code in |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1367 // handle_context_menu_break_condition. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1368 |
27396
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1369 load_path& lp = interp.get_load_path (); |
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1370 |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1371 bp_table::intmap line_info; |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1372 line_info[0] = info.line; |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1373 |
27396
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1374 if (lp.contains_file_in_dir (info.file, info.dir)) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1375 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1376 tree_evaluator& tw = interp.get_evaluator (); |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1377 |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1378 bp_table& bptab = tw.get_bp_table (); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1379 |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1380 bp_table::intmap bpmap |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1381 = bptab.add_breakpoint (info.function_name, "", line_info, |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1382 info.condition); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1383 |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1384 if (! bpmap.empty ()) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1385 { |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1386 bp_table::intmap::iterator bp_it = bpmap.begin (); |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1387 |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1388 int remove_line = bp_it->second; |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1389 |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1390 emit maybe_remove_next (remove_line); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1391 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1392 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1393 }); |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1394 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1395 |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1396 void file_editor_tab::handle_remove_next (int remove_line) |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1397 { |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1398 // Store some info breakpoint |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1399 if (m_breakpoint_info.remove_next) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1400 { |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1401 m_breakpoint_info.remove_line = remove_line; |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1402 m_breakpoint_info.remove_next = false; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1403 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1404 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1405 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1406 void file_editor_tab::goto_line (const QWidget *ID, int line) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1407 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1408 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1409 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1410 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1411 if (m_bp_restore_count > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1412 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1413 // This goto-line request is invoked by restoring a breakpoint during |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1414 // saving the file, thus, do not go to the related line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1415 m_bp_restore_count--; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1416 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1417 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1418 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1419 if (line <= 0) // ask for desired line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1420 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1421 bool ok = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1422 int index; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1423 m_edit_area->getCursorPosition (&line, &index); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1424 line = QInputDialog::getInt (m_edit_area, tr ("Goto line"), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1425 tr ("Line number"), line+1, 1, |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1426 m_edit_area->lines (), 1, &ok); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1427 if (ok) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1428 m_edit_area->setCursorPosition (line-1, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1429 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1430 else // go to given line without dialog |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1431 m_edit_area->setCursorPosition (line-1, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1432 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1433 center_current_line (false); // only center line if at top or bottom |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1434 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1435 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1436 void file_editor_tab::move_match_brace (const QWidget *ID, bool select) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1437 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1438 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1439 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1440 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1441 if (select) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1442 m_edit_area->selectToMatchingBrace (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1443 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1444 m_edit_area->moveToMatchingBrace (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1445 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1446 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1447 void file_editor_tab::show_auto_completion (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1448 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1449 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1450 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1451 |
28382
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
1452 m_autoc_active = true; |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
1453 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1454 QsciScintilla::AutoCompletionSource s = m_edit_area->autoCompletionSource (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1455 switch (s) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1456 { |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1457 case QsciScintilla::AcsAll: |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1458 m_edit_area->autoCompleteFromAll (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1459 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1460 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1461 case QsciScintilla::AcsAPIs: |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1462 m_edit_area->autoCompleteFromAPIs (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1463 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1464 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1465 case QsciScintilla::AcsDocument: |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1466 m_edit_area->autoCompleteFromDocument (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1467 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1468 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1469 case QsciScintilla::AcsNone: |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1470 break; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1471 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1472 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1473 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1474 void file_editor_tab::do_indent_selected_text (bool indent) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1475 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1476 // FIXME: |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1477 m_edit_area->beginUndoAction (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1478 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1479 if (m_edit_area->hasSelectedText ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1480 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1481 int lineFrom, lineTo, colFrom, colTo; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1482 m_edit_area->getSelection (&lineFrom, &colFrom, &lineTo, &colTo); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1483 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1484 if (colTo == 0) // the beginning of last line is not selected |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1485 lineTo--; // stop at line above |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1486 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1487 for (int i = lineFrom; i <= lineTo; i++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1488 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1489 if (indent) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1490 m_edit_area->indent (i); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1491 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1492 m_edit_area->unindent (i); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1493 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1494 //set selection on (un)indented section |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1495 m_edit_area->setSelection (lineFrom, 0, lineTo, |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
1496 m_edit_area->text (lineTo).length ()-1); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1497 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1498 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1499 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1500 int cpline, col; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1501 m_edit_area->getCursorPosition (&cpline, &col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1502 if (indent) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1503 m_edit_area->indent (cpline); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1504 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1505 m_edit_area->unindent (cpline); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1506 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1507 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1508 m_edit_area->endUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1509 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1510 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1511 void file_editor_tab::do_smart_indent_line_or_selected_text (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1512 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1513 m_edit_area->beginUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1514 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1515 int lineFrom, lineTo; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1516 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1517 if (m_edit_area->hasSelectedText ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1518 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1519 int colFrom, colTo; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1520 m_edit_area->getSelection (&lineFrom, &colFrom, &lineTo, &colTo); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1521 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1522 if (colTo == 0) // the beginning of last line is not selected |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1523 lineTo--; // stop at line above |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1524 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1525 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1526 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1527 int col; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1528 m_edit_area->getCursorPosition (&lineFrom, &col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1529 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1530 lineTo = lineFrom; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1531 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1532 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1533 m_edit_area->smart_indent_line_or_selected_text (lineFrom, lineTo); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1534 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1535 m_edit_area->endUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1536 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1537 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1538 void file_editor_tab::do_comment_selected_text (bool comment, bool input_str) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1539 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1540 QRegExp rxc; |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27893
diff
changeset
|
1541 QString ws = "^(?:[ \\t]*)"; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1542 QStringList comment_str = m_edit_area->comment_string (comment); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1543 QString used_comment_str = comment_str.at (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1544 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1545 if (comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1546 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1547 if (input_str) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1548 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1549 bool ok; |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1550 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1551 gui_settings *settings = rmgr.get_settings (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1552 |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1553 used_comment_str |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1554 = QInputDialog::getText (this, tr ("Comment selected text"), |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1555 tr ("Comment string to use:\n"), |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1556 QLineEdit::Normal, |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1557 settings->value (ed_last_comment_str, comment_str.at (0)).toString (), |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1558 &ok); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1559 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1560 if ((! ok) || used_comment_str.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1561 return; // No input, do nothing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1562 else |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25566
diff
changeset
|
1563 settings->setValue (ed_last_comment_str, used_comment_str); // Store last |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1564 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1565 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1566 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1567 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1568 // Uncommenting (several strings possible) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1569 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1570 // Sort strings according their length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1571 QStringList comment_str_sorted (comment_str.at (0)); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1572 bool inserted; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1573 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1574 for (int i = 1; i < comment_str.length (); i++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1575 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1576 inserted = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1577 for (int j = 0; j < comment_str_sorted.length (); j++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1578 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1579 if (comment_str.at (i).length () > comment_str_sorted.at (j).length ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1580 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1581 comment_str_sorted.insert (j, comment_str.at (i)); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1582 inserted = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1583 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1584 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1585 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1586 if (! inserted) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1587 comment_str_sorted << comment_str.at (i); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1588 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1589 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1590 // Create regular expression |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1591 QString regexp; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1592 for (int i = 0; i < comment_str_sorted.length (); i++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1593 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1594 if (i > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1595 regexp = regexp + QString ("|"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1596 regexp = regexp + comment_str_sorted.at (i); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1597 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1598 rxc = QRegExp (ws + "(" + regexp + ")"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1599 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1600 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1601 // Do the commenting/uncommenting |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1602 int len = 0, lenc = 0; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1603 m_edit_area->beginUndoAction (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1604 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1605 if (m_edit_area->hasSelectedText ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1606 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1607 int lineFrom, lineTo, colFrom, colTo; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1608 int change_col_from = 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1609 int change_col_to = 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1610 bool removed; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1611 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1612 m_edit_area->getSelection (&lineFrom, &colFrom, &lineTo, &colTo); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1613 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1614 if (colTo == 0) // the beginning of last line is not selected |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1615 lineTo--; // stop at line above |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1616 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1617 for (int i = lineFrom; i <= lineTo; i++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1618 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1619 if (comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1620 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1621 m_edit_area->insertAt (used_comment_str, i, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1622 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1623 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1624 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1625 QString line (m_edit_area->text (i)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1626 if ((removed = line.contains (rxc))) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1627 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1628 len = rxc.matchedLength (); // complete length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1629 QString matched_text = rxc.capturedTexts ().at (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1630 lenc = matched_text.remove (QRegExp (ws)).length (); // only comment string |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1631 m_edit_area->setSelection (i, len-lenc, i, len); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1632 m_edit_area->removeSelectedText (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1633 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1634 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1635 // handle case, where the selection remains unchanged |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1636 if (i == lineFrom && (colFrom < len-lenc || ! removed)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1637 change_col_from = 0; // do not change start of selection |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1638 if (i == lineTo && (colTo < len-lenc || ! removed)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1639 change_col_to = 0; // do not change end of selection |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1640 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1641 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1642 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1643 // update the selection area |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1644 if (comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1645 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1646 colFrom = colFrom + lenc; // shift start position by comment length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1647 if (colTo > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1648 colTo = colTo + lenc; // shift end position by comment length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1649 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1650 lineTo++; // colTo == 0 , fully select previous line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1651 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1652 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1653 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1654 if (colTo == 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1655 lineTo++; // colTo == 0 , fully select previous line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1656 colFrom = colFrom - change_col_from*lenc; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1657 colTo = colTo - change_col_to*lenc; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1658 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1659 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1660 // set updated selection area |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1661 m_edit_area->setSelection (lineFrom, colFrom, lineTo, colTo); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1662 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1663 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1664 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1665 int cpline, col; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1666 m_edit_area->getCursorPosition (&cpline, &col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1667 if (comment) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1668 m_edit_area->insertAt (used_comment_str, cpline, 0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1669 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1670 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1671 QString line (m_edit_area->text (cpline)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1672 if (line.contains (rxc)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1673 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1674 len = rxc.matchedLength (); // complete length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1675 QString matched_text = rxc.capturedTexts ().at (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1676 lenc = matched_text.remove (QRegExp (ws)).length (); // only comment string |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1677 m_edit_area->setSelection (cpline, len-lenc, cpline, len); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1678 m_edit_area->removeSelectedText (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1679 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1680 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1681 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1682 m_edit_area->endUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1683 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1684 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1685 void file_editor_tab::update_window_title (bool modified) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1686 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1687 QString title (""); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1688 QString tooltip (""); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1689 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1690 if (! valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1691 title = tr ("<unnamed>"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1692 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1693 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1694 if (m_long_title) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1695 title = m_file_name; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1696 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1697 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1698 QFileInfo file (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1699 title = file.fileName (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1700 tooltip = m_file_name; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1701 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1702 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1703 |
27053
1bdfd2b523c9
use tab icon for indicating a modified editor file (bug #56158)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27037
diff
changeset
|
1704 emit file_name_changed (title, tooltip, modified); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1705 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1706 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1707 void file_editor_tab::handle_copy_available (bool enableCopy) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1708 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1709 m_copy_available = enableCopy; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1710 emit editor_state_changed (m_copy_available, m_is_octave_file); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1711 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1712 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1713 // show_dialog: shows a modal or non modal dialog depending on input arg |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1714 void file_editor_tab::show_dialog (QDialog *dlg, bool modal) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1715 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1716 dlg->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1717 if (modal) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1718 dlg->exec (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1719 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1720 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1721 dlg->setWindowModality (Qt::NonModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1722 dlg->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1723 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1724 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1725 |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1726 int file_editor_tab::check_file_modified (bool remove) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1727 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1728 int decision = QMessageBox::Yes; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1729 if (m_edit_area->isModified ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1730 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1731 // File is modified but not saved, ask user what to do. The file |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1732 // editor tab can't be made parent because it may be deleted depending |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1733 // upon the response. Instead, change the m_edit_area to read only. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1734 QMessageBox::StandardButtons buttons = QMessageBox::Save | |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
1735 QMessageBox::Discard | |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
1736 QMessageBox::Cancel; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1737 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1738 // For now, just a warning message about closing a tab that has been |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1739 // modified seems sufficient. Exit-condition-specific messages could |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1740 // be achieved by making 'available_actions' a function input string. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1741 QString available_actions = |
19714
21015ca26566
Restructure shutdown flow and behavior for improved robustness
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
19697
diff
changeset
|
1742 tr ("Do you want to cancel closing, save or discard the changes?"); |
16638
3c2e457eeb72
ask for saving modified editor files if octave is closed (bug #38689)
Torsten <ttl@justmail.de>
parents:
16635
diff
changeset
|
1743 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1744 QString file; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1745 if (valid_file_name ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1746 file = m_file_name; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1747 else |
17973
6925dca34807
fix saving unnamed editor files when closing octave (bug #40637)
Torsten <ttl@justmail.de>
parents:
17962
diff
changeset
|
1748 file = tr ("<unnamed>"); |
6925dca34807
fix saving unnamed editor files when closing octave (bug #40637)
Torsten <ttl@justmail.de>
parents:
17962
diff
changeset
|
1749 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1750 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1751 = new QMessageBox (QMessageBox::Warning, tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1752 tr ("The file\n\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1753 " %1\n\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1754 "is about to be closed but has been modified. " |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1755 "%2"). |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1756 arg (file). arg (available_actions), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1757 buttons, qobject_cast<QWidget *> (parent ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1758 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1759 msgBox->setDefaultButton (QMessageBox::Save); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1760 m_edit_area->setReadOnly (true); |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1761 |
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1762 decision = msgBox->exec (); // show_dialog (msgBox, true); |
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1763 |
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1764 if (decision == QMessageBox::Cancel) |
27633
fd009322dd9f
eliminate static variable in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27629
diff
changeset
|
1765 m_edit_area->setReadOnly (false); |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1766 else if (decision == QMessageBox::Save) |
27651
c9ebcb9050b4
fix broken storing of editor session data at shutdown
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27639
diff
changeset
|
1767 save_file (m_file_name, remove, false); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1768 else |
27651
c9ebcb9050b4
fix broken storing of editor session data at shutdown
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27639
diff
changeset
|
1769 emit tab_ready_to_close (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1770 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1771 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1772 { |
27651
c9ebcb9050b4
fix broken storing of editor session data at shutdown
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27639
diff
changeset
|
1773 emit tab_ready_to_close (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1774 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1775 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1776 return decision; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1777 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1778 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1779 void file_editor_tab::set_modified (bool modified) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1780 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1781 m_edit_area->setModified (modified); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1782 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1783 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1784 void file_editor_tab::recover_from_exit (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1785 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1786 // reset the possibly still existing read only state |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1787 m_edit_area->setReadOnly (false); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1788 |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
1789 // if we are in this slot and the list of breakpoints is not empty, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1790 // then this tab was saved during an exit of the applications (not |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1791 // restoring the breakpoints and not emptying the list) and the user |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1792 // canceled this closing late on. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1793 check_restore_breakpoints (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1794 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1795 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1796 void file_editor_tab::check_restore_breakpoints (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1797 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1798 if (! m_bp_lines.isEmpty ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1799 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1800 // At least one breakpoint is present. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1801 // Get rid of breakpoints at old (now possibly invalid) linenumbers |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1802 remove_all_breakpoints (this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1803 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1804 // and set breakpoints at the new linenumbers |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1805 m_bp_restore_count = m_bp_lines.length (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1806 for (int i = 0; i < m_bp_lines.length (); i++) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1807 handle_request_add_breakpoint (m_bp_lines.value (i) + 1, |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1808 m_bp_conditions.value (i)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1809 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1810 // Keep the list of breakpoints empty, except after explicit requests. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1811 m_bp_lines.clear (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1812 m_bp_conditions.clear (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1813 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1814 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1815 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1816 QString file_editor_tab::load_file (const QString& fileName) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1817 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1818 // get the absolute path |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1819 QFileInfo file_info = QFileInfo (fileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1820 QString file_to_load; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1821 if (file_info.exists ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1822 file_to_load = file_info.canonicalFilePath (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1823 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1824 file_to_load = fileName; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1825 QFile file (file_to_load); |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1826 if (!file.open(QIODevice::ReadOnly)) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1827 return file.errorString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1828 |
26131
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1829 int col = 0, line = 0; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1830 if (fileName == m_file_name) |
26131
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1831 { |
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1832 // We have to reload the current file, thus get current cursor position |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1833 line = m_line; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1834 col = m_col; |
26131
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1835 } |
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1836 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1837 QApplication::setOverrideCursor (Qt::WaitCursor); |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1838 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1839 // read the file binary, decoding later |
28134
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1840 QByteArray text_data = file.readAll (); |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1841 |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1842 // remove newline at end of file if we add one again when saving |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1843 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1844 gui_settings *settings = rmgr.get_settings (); |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1845 |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1846 if (settings->value (ed_force_newline).toBool ()) |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1847 { |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1848 const QByteArray eol_lf = QByteArray (1,0x0a); |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1849 const QByteArray eol_cr = QByteArray (1,0x0d); |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1850 |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1851 if (text_data.endsWith (eol_lf)) |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1852 text_data.chop (1); // remove LF |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1853 |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1854 if (text_data.endsWith (eol_cr)) // remove CR (altogether CRLF, too) |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1855 text_data.chop (1); |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1856 } |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1857 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1858 // decode |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1859 QTextCodec::ConverterState st; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1860 QTextCodec *codec = QTextCodec::codecForName (m_encoding.toLatin1 ()); |
26172
a7be718a9dd3
validate editor file codec derived from name (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26131
diff
changeset
|
1861 if (codec == nullptr) |
a7be718a9dd3
validate editor file codec derived from name (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26131
diff
changeset
|
1862 codec = QTextCodec::codecForLocale (); |
a7be718a9dd3
validate editor file codec derived from name (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26131
diff
changeset
|
1863 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1864 const QString text = codec->toUnicode(text_data.constData(), |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1865 text_data.size(), &st); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1866 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1867 // Decoding with invalid characters? |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1868 if (st.invalidChars > 0) |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1869 { |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1870 // Set read only |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1871 m_edit_area->setReadOnly (true); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1872 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1873 // Message box for user decision |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1874 QString msg = tr ("There were problems reading the file\n" |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1875 "%1\n" |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1876 "with the selected encoding %2.\n\n" |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1877 "Modifying and saving the file might " |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1878 "cause data loss!") |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1879 .arg (file_to_load).arg (m_encoding); |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1880 QMessageBox *msg_box = new QMessageBox (); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1881 msg_box->setIcon (QMessageBox::Warning); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1882 msg_box->setText (msg); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1883 msg_box->setWindowTitle (tr ("Octave Editor")); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1884 msg_box->addButton (tr ("&Edit anyway"), QMessageBox::YesRole); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1885 msg_box->addButton (tr ("Chan&ge encoding"), QMessageBox::AcceptRole); |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1886 msg_box->addButton (tr ("&Close"), QMessageBox::RejectRole); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1887 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1888 connect (msg_box, SIGNAL (buttonClicked (QAbstractButton *)), |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1889 this, SLOT (handle_decode_warning_answer (QAbstractButton *))); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1890 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1891 msg_box->setWindowModality (Qt::WindowModal); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1892 msg_box->setAttribute (Qt::WA_DeleteOnClose); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1893 msg_box->show (); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1894 } |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1895 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1896 m_edit_area->setText (text); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1897 m_edit_area->setEolMode (detect_eol_mode ()); |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1898 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1899 QApplication::restoreOverrideCursor (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1900 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1901 m_copy_available = false; // no selection yet available |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1902 set_file_name (file_to_load); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1903 update_window_title (false); // window title (no modification) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1904 m_edit_area->setModified (false); // loaded file is not modified yet |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1905 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1906 update_eol_indicator (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1907 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1908 m_edit_area->setCursorPosition (line, col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1909 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1910 return QString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1911 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1912 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1913 void file_editor_tab::handle_decode_warning_answer (QAbstractButton *btn) |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1914 { |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1915 QString txt = btn->text (); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1916 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1917 if (txt == tr ("&Close")) |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1918 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1919 // Just close the file |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1920 close (); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1921 return; |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1922 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1923 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1924 if (txt == tr ("Chan&ge encoding")) |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1925 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1926 // Dialog for reloading the file with another encoding |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1927 QDialog dlg; |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1928 dlg.setWindowTitle (tr ("Select new default encoding")); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1929 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1930 QLabel *text |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1931 = new QLabel (tr ("Please select a new encoding\n" |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1932 "for reloading the current file.\n\n" |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1933 "This does not change the default encoding.\n")); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1934 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1935 QComboBox *enc_combo = new QComboBox (); |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1936 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1937 rmgr.combo_encoding (enc_combo); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1938 m_new_encoding = enc_combo->currentText (); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1939 connect (enc_combo, SIGNAL (currentTextChanged (const QString&)), |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
1940 this, SLOT (handle_current_enc_changed (const QString&))); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1941 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1942 QDialogButtonBox *buttons |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1943 = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel, |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1944 Qt::Horizontal); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1945 connect (buttons, SIGNAL (accepted ()), &dlg, SLOT (accept ())); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1946 connect (buttons, SIGNAL (rejected ()), &dlg, SLOT (reject ())); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1947 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1948 QGridLayout *main_layout = new QGridLayout; |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1949 main_layout->setSizeConstraint (QLayout::SetFixedSize); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1950 main_layout->addWidget (text, 0, 0); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1951 main_layout->addWidget (enc_combo, 1, 0); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1952 main_layout->addWidget (buttons, 2, 0); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1953 dlg.setLayout (main_layout); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1954 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1955 int answer = dlg.exec (); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1956 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1957 if (answer == QDialog::Accepted) |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1958 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1959 // Reload the file with new encoding but using the same tab |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1960 QString reload_file_name = m_file_name; // store file name |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1961 m_file_name = ""; // force reuse of this tab when opening a new file |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1962 emit request_open_file (reload_file_name, m_new_encoding); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1963 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1964 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1965 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1966 // Continue editing, set writable again |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1967 m_edit_area->setReadOnly (false); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1968 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1969 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1970 void file_editor_tab::handle_current_enc_changed (const QString& enc) |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1971 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1972 m_new_encoding = enc; |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1973 } |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1974 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1975 QsciScintilla::EolMode file_editor_tab::detect_eol_mode (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1976 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1977 QByteArray text = m_edit_area->text ().toLatin1 (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1978 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1979 QByteArray eol_lf = QByteArray (1,0x0a); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1980 QByteArray eol_cr = QByteArray (1,0x0d); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1981 QByteArray eol_crlf = eol_cr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1982 eol_crlf.append (eol_lf); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1983 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1984 int count_crlf = text.count (eol_crlf); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1985 int count_lf = text.count (eol_lf) - count_crlf; // isolated lf |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
1986 int count_cr = text.count (eol_cr) - count_crlf; // isolated cr |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1987 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1988 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1989 gui_settings *settings = rmgr.get_settings (); |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1990 QsciScintilla::EolMode eol_mode |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
1991 = static_cast<QsciScintilla::EolMode> (settings->value (ed_default_eol_mode).toInt ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1992 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1993 int count_max = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1994 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1995 if (count_crlf > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1996 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1997 eol_mode = QsciScintilla::EolWindows; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1998 count_max = count_crlf; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1999 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2000 if (count_lf > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2001 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2002 eol_mode = QsciScintilla::EolUnix; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2003 count_max = count_lf; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2004 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2005 if (count_cr > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2006 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2007 eol_mode = QsciScintilla::EolMac; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2008 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2009 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2010 return eol_mode; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2011 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2012 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2013 void file_editor_tab::update_eol_indicator (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2014 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2015 switch (m_edit_area->eolMode ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2016 { |
19237
c766a1f63c40
detect eol mode when opening a file in the editor of the gui (#bug 43334)
Torsten <ttl@justmail.de>
parents:
18237
diff
changeset
|
2017 case QsciScintilla::EolWindows: |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2018 m_eol_indicator->setText ("CRLF"); |
19237
c766a1f63c40
detect eol mode when opening a file in the editor of the gui (#bug 43334)
Torsten <ttl@justmail.de>
parents:
18237
diff
changeset
|
2019 break; |
c766a1f63c40
detect eol mode when opening a file in the editor of the gui (#bug 43334)
Torsten <ttl@justmail.de>
parents:
18237
diff
changeset
|
2020 case QsciScintilla::EolMac: |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2021 m_eol_indicator->setText ("CR"); |
19237
c766a1f63c40
detect eol mode when opening a file in the editor of the gui (#bug 43334)
Torsten <ttl@justmail.de>
parents:
18237
diff
changeset
|
2022 break; |
c766a1f63c40
detect eol mode when opening a file in the editor of the gui (#bug 43334)
Torsten <ttl@justmail.de>
parents:
18237
diff
changeset
|
2023 case QsciScintilla::EolUnix: |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2024 m_eol_indicator->setText ("LF"); |
19237
c766a1f63c40
detect eol mode when opening a file in the editor of the gui (#bug 43334)
Torsten <ttl@justmail.de>
parents:
18237
diff
changeset
|
2025 break; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2026 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2027 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2028 |
25923
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2029 void file_editor_tab::update_breakpoints () |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2030 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2031 if (m_file_name.isEmpty ()) |
25923
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2032 return; |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2033 |
27255
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2034 // Create and queue the command object. |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2035 |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
2036 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
2037 ([=] (interpreter& interp) |
27255
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2038 { |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2039 // INTERPRETER THREAD |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2040 |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2041 octave_value_list argout = Fdbstatus (interp, ovl (), 1); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2042 |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2043 connect (this, SIGNAL (update_breakpoints_signal (const octave_value_list&)), |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2044 this, SLOT (update_breakpoints_handler (const octave_value_list&)), |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2045 Qt::QueuedConnection); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2046 |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2047 emit update_breakpoints_signal (argout); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2048 }); |
25923
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2049 } |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2050 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2051 void file_editor_tab::update_breakpoints_handler (const octave_value_list& argout) |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2052 { |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2053 octave_map dbg = argout(0).map_value (); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2054 octave_idx_type n_dbg = dbg.numel (); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2055 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2056 Cell file = dbg.contents ("file"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2057 Cell line = dbg.contents ("line"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2058 Cell cond = dbg.contents ("cond"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2059 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2060 for (octave_idx_type i = 0; i < n_dbg; i++) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2061 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2062 if (file (i).string_value () == m_file_name.toStdString ()) |
25923
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2063 do_breakpoint_marker (true, this, line (i).int_value (), |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2064 QString::fromStdString (cond (i).string_value ())); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2065 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2066 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2067 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2068 void file_editor_tab::new_file (const QString& commands) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2069 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2070 update_window_title (false); // window title (no modification) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2071 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
2072 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
2073 gui_settings *settings = rmgr.get_settings (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2074 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2075 // set the eol mode from the settings or depending on the OS if the entry is |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2076 // missing in the settings |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2077 m_edit_area->setEolMode (static_cast<QsciScintilla::EolMode> (settings->value (ed_default_eol_mode).toInt ())); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2078 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2079 update_eol_indicator (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2080 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2081 update_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2082 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2083 m_edit_area->setText (commands); |
29201
6695a6bf4836
mark script created with commands from history as modified
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29177
diff
changeset
|
2084 m_edit_area->setModified (!commands.isEmpty ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2085 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2086 |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2087 void file_editor_tab::confirm_dbquit_and_save (const QString& file_to_save, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2088 const QString& base_name, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2089 bool remove_on_success, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2090 bool restore_breakpoints) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2091 { |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2092 int ans = QMessageBox::question (nullptr, tr ("Debug or Save"), |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2093 tr ("This file is currently being executed.\n" |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2094 "Quit debugging and save?"), |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2095 QMessageBox::Save | QMessageBox::Cancel); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2096 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2097 if (ans == QMessageBox::Save) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2098 { |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2099 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
2100 ([=] (interpreter& interp) |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2101 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2102 // INTERPRETER THREAD |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2103 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2104 tree_evaluator& tw = interp.get_evaluator (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2105 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2106 tw.dbquit (true); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2107 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2108 command_editor::interrupt (true); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2109 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2110 std::string std_base_name = base_name.toStdString (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2111 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2112 symbol_table& symtab = interp.get_symbol_table (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2113 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2114 symtab.clear_user_function (std_base_name); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2115 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2116 emit do_save_file_signal (file_to_save, remove_on_success, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2117 restore_breakpoints); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2118 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2119 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2120 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2121 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2122 void file_editor_tab::save_file (const QString& saveFileName, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2123 bool remove_on_success, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2124 bool restore_breakpoints) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2125 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2126 // If it is a new file with no name, signal that saveFileAs |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2127 // should be performed. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2128 if (! valid_file_name (saveFileName)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2129 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2130 save_file_as (remove_on_success); |
22181
acdd8983d308
Force reload of a function after it is saved in the editor (bug #46632)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
22180
diff
changeset
|
2131 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2132 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2133 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2134 m_encoding = m_new_encoding; // consider a possible new encoding |
26393
1e3c42fbf4d3
Don't overwrite content of non-encodable .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26376
diff
changeset
|
2135 |
1e3c42fbf4d3
Don't overwrite content of non-encodable .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26376
diff
changeset
|
2136 // set the desired codec (if suitable for contents) |
1e3c42fbf4d3
Don't overwrite content of non-encodable .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26376
diff
changeset
|
2137 QTextCodec *codec = check_valid_codec (); |
1e3c42fbf4d3
Don't overwrite content of non-encodable .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26376
diff
changeset
|
2138 if (! codec) |
1e3c42fbf4d3
Don't overwrite content of non-encodable .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26376
diff
changeset
|
2139 return; // No valid codec |
1e3c42fbf4d3
Don't overwrite content of non-encodable .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26376
diff
changeset
|
2140 |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2141 // Get a list of breakpoint line numbers, before exiting debug mode |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2142 // and clearing function in interpreter_event action below. |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2143 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2144 emit report_marker_linenr (m_bp_lines, m_bp_conditions); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2145 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2146 // get the absolute path (if existing) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2147 QFileInfo file_info = QFileInfo (saveFileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2148 QString file_to_save; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2149 if (file_info.exists ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2150 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2151 file_to_save = file_info.canonicalFilePath (); |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2152 QString base_name = file_info.baseName (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2153 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2154 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
2155 ([=] (interpreter& interp) |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2156 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2157 // INTERPRETER THREAD |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2158 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2159 // Force reloading of a file after it is saved. |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2160 // This is needed to get the right line numbers for |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2161 // breakpoints (bug #46632). |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2162 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2163 tree_evaluator& tw = interp.get_evaluator (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2164 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2165 symbol_table& symtab = interp.get_symbol_table (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2166 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2167 std::string std_base_name = base_name.toStdString (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2168 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2169 if (tw.in_debug_repl ()) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2170 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2171 octave_value sym; |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2172 try |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2173 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2174 sym = symtab.find_user_function (std_base_name); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2175 } |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29162
diff
changeset
|
2176 catch (const execution_exception&) |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2177 { |
27474
3fec8e9fa2aa
make recover_from_exception a member function
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
2178 interp.recover_from_exception (); |
27471 | 2179 |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2180 // Ignore syntax error. It was in the old file on disk; |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2181 // the user may have fixed it already. |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2182 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2183 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2184 // Return early if this file is not loaded in the symbol table |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2185 if (! sym.is_defined () || ! sym.is_user_code ()) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2186 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2187 emit do_save_file_signal (file_to_save, remove_on_success, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2188 restore_breakpoints); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2189 return; |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2190 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2191 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2192 octave_user_code *fcn = sym.user_code_value (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2193 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2194 std::string full_name = file_to_save.toStdString (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2195 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2196 if (sys::canonicalize_file_name (full_name) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2197 != sys::canonicalize_file_name (fcn->fcn_file_name ())) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2198 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2199 emit do_save_file_signal (file_to_save, remove_on_success, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2200 restore_breakpoints); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2201 return; |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2202 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2203 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2204 // If this file is loaded, check that we aren't currently |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2205 // running it. |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2206 // FIXME: is there a better way to get this info? |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2207 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2208 octave_idx_type curr_frame = -1; |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2209 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2210 octave_map stk = tw.backtrace (curr_frame, false); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2211 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2212 Cell names = stk.contents ("name"); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2213 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2214 for (octave_idx_type i = names.numel () - 1; i >= 0; i--) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2215 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2216 if (names(i).string_value () == std_base_name) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2217 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2218 emit confirm_dbquit_and_save_signal |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2219 (file_to_save, base_name, remove_on_success, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2220 restore_breakpoints); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2221 return; |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2222 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2223 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2224 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2225 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2226 symtab.clear_user_function (std_base_name); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2227 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2228 emit do_save_file_signal (file_to_save, remove_on_success, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2229 restore_breakpoints); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2230 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2231 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2232 else |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2233 emit do_save_file_signal (saveFileName, remove_on_success, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2234 restore_breakpoints); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2235 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2236 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2237 void file_editor_tab::do_save_file (const QString& file_to_save, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2238 bool remove_on_success, |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2239 bool restore_breakpoints) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2240 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2241 QFile file (file_to_save); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2242 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2243 // stop watching file |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2244 QStringList trackedFiles = m_file_system_watcher.files (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2245 if (trackedFiles.contains (file_to_save)) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2246 m_file_system_watcher.removePath (file_to_save); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2247 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2248 // open the file for writing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2249 if (! file.open (QIODevice::WriteOnly)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2250 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2251 // Unsuccessful, begin watching file again if it was being |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2252 // watched previously. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2253 if (trackedFiles.contains (file_to_save)) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2254 m_file_system_watcher.addPath (file_to_save); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2255 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2256 // Create a NonModal message about error. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2257 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2258 = new QMessageBox (QMessageBox::Critical, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2259 tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2260 tr ("Could not open file %1 for write:\n%2."). |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2261 arg (file_to_save).arg (file.errorString ()), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2262 QMessageBox::Ok, nullptr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2263 show_dialog (msgBox, false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2264 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2265 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2266 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2267 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2268 // save the contents into the file |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2269 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2270 // write the file |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2271 QTextStream out (&file); |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2272 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2273 // set the desired codec (if suitable for contents) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2274 QTextCodec *codec = check_valid_codec (); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2275 if (! codec) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2276 return; // No valid codec |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2277 |
28134
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
2278 // Remove trailing white spaces if desired |
28132
4cfe24f56336
add editor prefs for forcing coding standards (bug #57860, bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28118
diff
changeset
|
2279 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
4cfe24f56336
add editor prefs for forcing coding standards (bug #57860, bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28118
diff
changeset
|
2280 gui_settings *settings = rmgr.get_settings (); |
4cfe24f56336
add editor prefs for forcing coding standards (bug #57860, bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28118
diff
changeset
|
2281 |
28134
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
2282 if (settings->value (ed_rm_trailing_spaces).toBool ()) |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28361
diff
changeset
|
2283 m_edit_area->replace_all ("[ \\t]+$", "", true, false, false); |
28132
4cfe24f56336
add editor prefs for forcing coding standards (bug #57860, bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28118
diff
changeset
|
2284 |
4cfe24f56336
add editor prefs for forcing coding standards (bug #57860, bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28118
diff
changeset
|
2285 // Save the file |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2286 out.setCodec (codec); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2287 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2288 QApplication::setOverrideCursor (Qt::WaitCursor); |
28134
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
2289 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2290 out << m_edit_area->text (); |
28142
908bdd05398a
do not add a newline on empty editor files (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28141
diff
changeset
|
2291 if (settings->value (ed_force_newline).toBool () |
908bdd05398a
do not add a newline on empty editor files (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28141
diff
changeset
|
2292 && m_edit_area->text ().length ()) |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28361
diff
changeset
|
2293 out << m_edit_area->eol_string (); // Add newline if desired |
28134
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
2294 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2295 out.flush (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2296 QApplication::restoreOverrideCursor (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2297 file.flush (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2298 file.close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2299 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2300 // file exists now |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2301 QFileInfo file_info = QFileInfo (file); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2302 QString full_file_to_save = file_info.canonicalFilePath (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2303 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2304 // save filename after closing file as set_file_name starts watching again |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2305 set_file_name (full_file_to_save); // make absolute |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2306 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2307 // set the window title to actual filename (not modified) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2308 update_window_title (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2309 |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
2310 // file is save -> not modified, update encoding in statusbar |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2311 m_edit_area->setModified (false); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2312 m_enc_indicator->setText (m_encoding); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2313 |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
2314 emit tab_ready_to_close (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2315 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2316 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2317 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2318 emit tab_remove_request (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2319 return; // Don't touch member variables after removal |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2320 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2321 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2322 // Attempt to restore the breakpoints if that is desired. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2323 // This is only allowed if the tab is not closing since changing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2324 // breakpoints would reopen the tab in this case. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2325 if (restore_breakpoints) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2326 check_restore_breakpoints (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2327 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2328 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2329 void file_editor_tab::save_file_as (bool remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2330 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2331 // Simply put up the file chooser dialog box with a slot connection |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2332 // then return control to the system waiting for a file selection. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2333 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2334 // reset m_new_encoding |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2335 m_new_encoding = m_encoding; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2336 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2337 // If the tab is removed in response to a QFileDialog signal, the tab |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2338 // can't be a parent. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2339 QFileDialog *fileDialog; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2340 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2341 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2342 // If tab is closed, "this" cannot be parent in which case modality |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2343 // has no effect. Disable editing instead. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2344 m_edit_area->setReadOnly (true); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2345 fileDialog = new QFileDialog (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2346 } |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
2347 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2348 fileDialog = new QFileDialog (this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2349 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2350 // add the possible filters and the default suffix |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2351 QStringList filters; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2352 filters << tr ("Octave Files (*.m)") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2353 << tr ("All Files (*)"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2354 fileDialog->setNameFilters (filters); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2355 fileDialog->setDefaultSuffix ("m"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2356 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2357 if (valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2358 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2359 fileDialog->selectFile (m_file_name); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2360 QFileInfo file_info (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2361 if (file_info.suffix () != "m") |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2362 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2363 // it is not an octave file |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2364 fileDialog->selectNameFilter (filters.at (1)); // "All Files" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2365 fileDialog->setDefaultSuffix (""); // no default suffix |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2366 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2367 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2368 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2369 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2370 fileDialog->selectFile (""); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2371 fileDialog->setDirectory (m_ced); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2372 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2373 // propose a name corresponding to the function name |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2374 QString fname = get_function_name (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2375 if (! fname.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2376 fileDialog->selectFile (fname + ".m"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2377 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2378 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2379 fileDialog->setAcceptMode (QFileDialog::AcceptSave); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2380 fileDialog->setViewMode (QFileDialog::Detail); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2381 |
26096
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2382 // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved. |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
2383 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
2384 gui_settings *settings = rmgr.get_settings (); |
28497
2813ac10ca1e
force non-native file dialogs on Mac ignoring current user pref (bug #52840)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28382
diff
changeset
|
2385 if (! settings->value (global_use_native_dialogs).toBool ()) |
26096
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2386 fileDialog->setOption(QFileDialog::DontUseNativeDialog); |
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2387 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2388 connect (fileDialog, SIGNAL (filterSelected (const QString&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2389 this, SLOT (handle_save_as_filter_selected (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2390 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2391 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2392 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2393 connect (fileDialog, SIGNAL (fileSelected (const QString&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2394 this, SLOT (handle_save_file_as_answer_close (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2395 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2396 connect (fileDialog, SIGNAL (rejected ()), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2397 this, SLOT (handle_save_file_as_answer_cancel ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2398 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2399 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2400 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2401 connect (fileDialog, SIGNAL (fileSelected (const QString&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2402 this, SLOT (handle_save_file_as_answer (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2403 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2404 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2405 show_dialog (fileDialog, ! valid_file_name ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2406 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2407 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2408 void file_editor_tab::handle_save_as_filter_selected (const QString& filter) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2409 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2410 QFileDialog *file_dialog = qobject_cast<QFileDialog *> (sender ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2411 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2412 QRegExp rx ("\\*\\.([^ ^\\)]*)[ \\)]"); // regexp for suffix in filter |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2413 int index = rx.indexIn (filter,0); // get first suffix in filter |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2414 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2415 if (index > -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2416 file_dialog->setDefaultSuffix (rx.cap (1)); // found a suffix, set default |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2417 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2418 file_dialog->setDefaultSuffix (""); // not found, clear default |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2419 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2420 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2421 bool file_editor_tab::check_valid_identifier (QString file_name) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2422 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2423 QFileInfo file = QFileInfo (file_name); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2424 QString base_name = file.baseName (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2425 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2426 if ((file.suffix () == "m") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2427 && (! valid_identifier (base_name.toStdString ()))) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2428 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2429 int ans = QMessageBox::question (nullptr, tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2430 tr ("\"%1\"\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2431 "is not a valid identifier.\n\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2432 "If you keep this filename, you will not be able to\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2433 "call your script using its name as an Octave command.\n\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2434 "Do you want to choose another name?").arg (base_name), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2435 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2436 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2437 if (ans == QMessageBox::Yes) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2438 return true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2439 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2440 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2441 return false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2442 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2443 |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2444 QTextCodec* file_editor_tab::check_valid_codec () |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2445 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2446 QTextCodec *codec = QTextCodec::codecForName (m_encoding.toLatin1 ()); |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2447 |
27272
9de4741a896e
Do not ignore user preferences for locale encoding on non-Windows platforms.
Markus Mützel <markus.muetzel@gmx.de>
parents:
27271
diff
changeset
|
2448 // "SYSTEM" is used as alias for the locale encoding. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2449 if ((! codec) && m_encoding.startsWith("SYSTEM")) |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2450 codec = QTextCodec::codecForLocale (); |
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2451 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2452 if (! codec) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2453 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2454 QMessageBox::critical (nullptr, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2455 tr ("Octave Editor"), |
25062 | 2456 tr ("The current encoding %1\n" |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2457 "can not be applied.\n\n" |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2458 "Please select another one!").arg (m_encoding)); |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2459 |
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2460 return nullptr; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2461 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2462 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2463 QString editor_text = m_edit_area->text (); |
26331
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2464 bool can_encode = codec->canEncode (editor_text); |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2465 |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2466 // We cannot rely on QTextCodec::canEncode because it uses the |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2467 // ConverterState of convertFromUnicode which isn't updated by some |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2468 // implementations. |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2469 if (can_encode) |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2470 { |
26346
fd890481c408
file-editor-tab.cc: Use function available since Qt4.2.
Markus Mützel <markus.muetzel@gmx.de>
parents:
26331
diff
changeset
|
2471 QVector<uint> u32_str = editor_text.toUcs4 (); |
26331
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2472 const uint32_t *src = reinterpret_cast<const uint32_t *> |
26346
fd890481c408
file-editor-tab.cc: Use function available since Qt4.2.
Markus Mützel <markus.muetzel@gmx.de>
parents:
26331
diff
changeset
|
2473 (u32_str.data ()); |
26331
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2474 |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2475 size_t length; |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2476 char *res_str = |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2477 octave_u32_conv_to_encoding_strict (m_encoding.toStdString ().c_str (), |
26429
ba8493779dc8
file-editor-tab.cc: Revert accidental change in 1e3c42fbf4d3.
Markus Mützel <markus.muetzel@gmx.de>
parents:
26394
diff
changeset
|
2478 src, u32_str.size (), &length); |
26331
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2479 if (! res_str) |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2480 { |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2481 if (errno == EILSEQ) |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2482 can_encode = false; |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2483 } |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2484 else |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2485 ::free (static_cast<void *> (res_str)); |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2486 } |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2487 |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2488 if (! can_encode) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2489 { |
26394
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2490 QMessageBox::StandardButton pressed_button |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2491 = QMessageBox::critical (nullptr, |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2492 tr ("Octave Editor"), |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2493 tr ("The current editor contents can not be encoded\n" |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2494 "with the selected encoding %1.\n" |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2495 "Using it would result in data loss!\n\n" |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2496 "Please select another one!").arg (m_encoding), |
26394
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2497 QMessageBox::Cancel | QMessageBox::Ignore, |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2498 QMessageBox::Cancel); |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2499 |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2500 if (pressed_button == QMessageBox::Ignore) |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2501 return codec; |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2502 else |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2503 return nullptr; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2504 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2505 |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2506 return codec; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2507 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2508 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2509 void file_editor_tab::handle_save_file_as_answer (const QString& saveFileName) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2510 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2511 if (saveFileName == m_file_name) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2512 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2513 save_file (saveFileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2514 } |
16702
553cfdd5d660
make white space visibility in the editor configurable
Torsten <ttl@justmail.de>
parents:
16701
diff
changeset
|
2515 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2516 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2517 // Have editor check for conflict, do not delete tab after save. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2518 if (check_valid_identifier (saveFileName)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2519 save_file_as (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2520 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2521 emit editor_check_conflict_save (saveFileName, false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2522 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2523 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2524 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2525 void file_editor_tab::handle_save_file_as_answer_close (const QString& saveFileName) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2526 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2527 // saveFileName == m_file_name can not happen, because we only can get here |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2528 // when we close a tab and m_file_name is not a valid filename yet |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2529 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2530 // Have editor check for conflict, delete tab after save. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2531 if (check_valid_identifier (saveFileName)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2532 save_file_as (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2533 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2534 emit editor_check_conflict_save (saveFileName, true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2535 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2536 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2537 void file_editor_tab::handle_save_file_as_answer_cancel (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2538 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2539 // User canceled, allow editing again. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2540 m_edit_area->setReadOnly (false); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2541 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2542 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2543 void file_editor_tab::file_has_changed (const QString&, bool do_close) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2544 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2545 bool file_exists = QFile::exists (m_file_name); |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2546 |
25741
a3f2b06c599a
fix broken file closing when deleted/renamed in file browser
Torsten <mttl@mailbox.org>
parents:
25646
diff
changeset
|
2547 if (file_exists && ! do_close) |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2548 { |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2549 // Test if file is really modified or if just the timezone has |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
2550 // changed. In the latter, just return without doing anything. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2551 QDateTime modified = QFileInfo (m_file_name).lastModified ().toUTC (); |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2552 |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2553 if (modified <= m_last_modified) |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2554 return; |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2555 |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2556 m_last_modified = modified; |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2557 } |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2558 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2559 // Prevent popping up multiple message boxes when the file has |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2560 // been changed multiple times by temporarily removing from the |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2561 // file watcher. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2562 QStringList trackedFiles = m_file_system_watcher.files (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2563 if (! trackedFiles.isEmpty ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2564 m_file_system_watcher.removePath (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2565 |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2566 if (file_exists && ! do_close) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2567 { |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2568 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2569 // The file is modified |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2570 if (m_always_reload_changed_files) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2571 load_file (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2572 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2573 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2574 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2575 // give editor and this tab the focus, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2576 // possibly making the editor visible if it is hidden |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2577 emit set_focus_editor_signal (this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2578 m_edit_area->setFocus (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2579 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2580 // Create a WindowModal message that blocks the edit area |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2581 // by making m_edit_area parent. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2582 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2583 = new QMessageBox (QMessageBox::Warning, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2584 tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2585 tr ("It seems that \'%1\' has been modified by another application. Do you want to reload it?"). |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2586 arg (m_file_name), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2587 QMessageBox::Yes | QMessageBox::No, this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2588 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2589 connect (msgBox, SIGNAL (finished (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2590 this, SLOT (handle_file_reload_answer (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2591 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2592 msgBox->setWindowModality (Qt::WindowModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2593 msgBox->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2594 msgBox->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2595 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2596 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2597 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2598 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2599 // If desired and if file is not modified, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2600 // close the file without any user interaction |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2601 if (do_close && ! m_edit_area->isModified ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2602 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2603 handle_file_resave_answer (QMessageBox::Cancel); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2604 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2605 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2606 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2607 // give editor and this tab the focus, |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
2608 // possibly making the editor visible if it is hidden |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2609 emit set_focus_editor_signal (this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2610 m_edit_area->setFocus (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2611 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2612 QString modified = ""; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2613 if (m_edit_area->isModified ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2614 modified = tr ("\n\nWarning: The contents in the editor is modified!"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2615 |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2616 // Create a WindowModal message. The file editor tab can't be made |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2617 // parent because it may be deleted depending upon the response. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2618 // Instead, change the m_edit_area to read only. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2619 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2620 = new QMessageBox (QMessageBox::Warning, tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2621 tr ("It seems that the file\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2622 "%1\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2623 "has been deleted or renamed. Do you want to save it now?%2"). |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2624 arg (m_file_name).arg (modified), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2625 QMessageBox::Save | QMessageBox::Close, nullptr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2626 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2627 m_edit_area->setReadOnly (true); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2628 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2629 connect (msgBox, SIGNAL (finished (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2630 this, SLOT (handle_file_resave_answer (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2631 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2632 msgBox->setWindowModality (Qt::WindowModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2633 msgBox->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2634 msgBox->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2635 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2636 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2637 |
27611
0495b64288f7
use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents:
27605
diff
changeset
|
2638 void file_editor_tab::notice_settings (const gui_settings *settings, bool init) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2639 { |
27611
0495b64288f7
use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents:
27605
diff
changeset
|
2640 if (! settings) |
0495b64288f7
use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents:
27605
diff
changeset
|
2641 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2642 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2643 if (! init) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2644 update_lexer_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2645 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2646 // code folding |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2647 if (settings->value (ed_code_folding).toBool ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2648 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2649 m_edit_area->setMarginType (3, QsciScintilla::SymbolMargin); |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
2650 m_edit_area->setFolding (QsciScintilla::BoxedTreeFoldStyle, 3); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2651 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2652 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2653 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2654 m_edit_area->setFolding (QsciScintilla::NoFoldStyle, 3); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2655 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2656 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2657 // status bar |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2658 if (settings->value (ed_show_edit_status_bar).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2659 m_status_bar->show (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2660 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2661 m_status_bar->hide (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2662 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2663 //highlight current line color |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2664 QColor setting_color = settings->value (ed_highlight_current_line_color).value<QColor> (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2665 m_edit_area->setCaretLineBackgroundColor (setting_color); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2666 m_edit_area->setCaretLineVisible |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2667 (settings->value (ed_highlight_current_line).toBool ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2668 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2669 bool match_keywords = settings->value |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2670 (ed_code_completion_keywords).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2671 bool match_document = settings->value |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2672 (ed_code_completion_document).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2673 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2674 QsciScintilla::AutoCompletionSource source = QsciScintilla::AcsNone; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2675 if (match_keywords) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2676 if (match_document) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2677 source = QsciScintilla::AcsAll; |
23996
a5b20fc6588a
editor: more consistent behavior of lon line marker settings in (bug #51872)
Torsten <mttl@mailbox.org>
parents:
23905
diff
changeset
|
2678 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2679 source = QsciScintilla::AcsAPIs; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2680 else if (match_document) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2681 source = QsciScintilla::AcsDocument; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2682 m_edit_area->setAutoCompletionSource (source); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2683 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2684 m_edit_area->setAutoCompletionReplaceWord |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2685 (settings->value (ed_code_completion_replace).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2686 m_edit_area->setAutoCompletionCaseSensitivity |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2687 (settings->value (ed_code_completion_case).toBool ()); |
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2688 |
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2689 if (settings->value (ed_code_completion).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2690 m_edit_area->setAutoCompletionThreshold |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2691 (settings->value (ed_code_completion_threshold).toInt ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2692 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2693 m_edit_area->setAutoCompletionThreshold (-1); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2694 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2695 if (settings->value (ed_show_white_space).toBool ()) |
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2696 if (settings->value (ed_show_white_space_indent).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2697 m_edit_area->setWhitespaceVisibility (QsciScintilla::WsVisibleAfterIndent); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2698 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2699 m_edit_area->setWhitespaceVisibility (QsciScintilla::WsVisible); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2700 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2701 m_edit_area->setWhitespaceVisibility (QsciScintilla::WsInvisible); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2702 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2703 m_edit_area->setEolVisibility (settings->value (ed_show_eol_chars).toBool ()); |
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2704 |
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2705 if (settings->value (ed_show_line_numbers).toBool ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2706 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2707 m_edit_area->setMarginLineNumbers (2, true); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2708 auto_margin_width (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2709 connect (m_edit_area, SIGNAL (linesChanged ()), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2710 this, SLOT (auto_margin_width ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2711 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2712 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2713 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2714 m_edit_area->setMarginLineNumbers (2, false); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2715 disconnect (m_edit_area, SIGNAL (linesChanged ()), nullptr, nullptr); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2716 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2717 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2718 m_smart_indent = settings->value (ed_auto_indent).toBool (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2719 m_edit_area->setAutoIndent (m_smart_indent); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2720 m_edit_area->setTabIndents |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2721 (settings->value (ed_tab_indents_line).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2722 m_edit_area->setBackspaceUnindents |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2723 (settings->value (ed_backspace_unindents_line).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2724 m_edit_area->setIndentationGuides |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2725 (settings->value (ed_show_indent_guides).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2726 m_edit_area->setIndentationsUseTabs |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2727 (settings->value (ed_indent_uses_tabs).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2728 m_edit_area->setIndentationWidth |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2729 (settings->value (ed_indent_width).toInt ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2730 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2731 m_edit_area->setTabWidth |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2732 (settings->value (ed_tab_width).toInt ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2733 |
27198
dffdabfd0213
fix cursor position for editor smart indent after keyword (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27160
diff
changeset
|
2734 m_ind_char_width = 1; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2735 if (m_edit_area->indentationsUseTabs ()) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2736 m_ind_char_width = m_edit_area->tabWidth (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2737 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2738 m_edit_area->SendScintilla (QsciScintillaBase::SCI_SETHSCROLLBAR, |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
2739 settings->value (ed_show_hscroll_bar).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2740 m_edit_area->SendScintilla (QsciScintillaBase::SCI_SETSCROLLWIDTH,-1); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2741 m_edit_area->SendScintilla (QsciScintillaBase::SCI_SETSCROLLWIDTHTRACKING,true); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2742 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2743 m_long_title = settings->value (ed_long_window_title).toBool (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2744 update_window_title (m_edit_area->isModified ()); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2745 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2746 m_auto_endif = settings->value (ed_auto_endif).toInt (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2747 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2748 // long line marker |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2749 int line_length = settings->value (ed_long_line_column).toInt (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2750 m_edit_area->setEdgeColumn (line_length); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2751 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2752 if (settings->value (ed_long_line_marker).toBool ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2753 { |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2754 if (settings->value (ed_long_line_marker_line).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2755 m_edit_area->setEdgeMode (QsciScintilla::EdgeLine); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2756 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2757 { |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2758 if (settings->value (ed_long_line_marker_background) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2759 .toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2760 m_edit_area->setEdgeMode (QsciScintilla::EdgeBackground); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2761 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2762 m_edit_area->setEdgeMode (QsciScintilla::EdgeLine); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2763 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2764 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2765 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2766 m_edit_area->setEdgeMode (QsciScintilla::EdgeNone); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2767 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2768 // line wrapping and breaking |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2769 m_edit_area->setWrapVisualFlags (QsciScintilla::WrapFlagByBorder); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2770 m_edit_area->setWrapIndentMode (QsciScintilla::WrapIndentSame); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2771 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2772 if (settings->value (ed_wrap_lines).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2773 m_edit_area->setWrapMode (QsciScintilla::WrapWord); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2774 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2775 m_edit_area->setWrapMode (QsciScintilla::WrapNone); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2776 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2777 if (settings->value (ed_break_lines).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2778 m_line_break = line_length; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2779 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2780 m_line_break = 0; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2781 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2782 m_line_break_comments = |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2783 settings->value (ed_break_lines_comments).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2784 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2785 // highlight all occurrences of a word selected by a double click |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2786 m_highlight_all_occurrences = |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2787 settings->value (ed_highlight_all_occurrences).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2788 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2789 // reload changed files |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2790 m_always_reload_changed_files = |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2791 settings->value (ed_always_reload_changed_files).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2792 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2793 // Set cursor blinking depending on the settings. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2794 // QScintilla ignores the application global settings, so some special |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2795 // handling is required |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2796 bool cursor_blinking; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2797 |
27583
315c35e6037c
use symbolic constants for command widget preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27562
diff
changeset
|
2798 if (settings->contains (global_cursor_blinking.key)) |
27672
a36443e94f8a
simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents:
27671
diff
changeset
|
2799 cursor_blinking = settings->value (global_cursor_blinking).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2800 else |
27672
a36443e94f8a
simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents:
27671
diff
changeset
|
2801 cursor_blinking = settings->value (cs_cursor_blinking).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2802 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2803 if (cursor_blinking) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2804 m_edit_area->SendScintilla (QsciScintillaBase::SCI_SETCARETPERIOD,500); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2805 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2806 m_edit_area->SendScintilla (QsciScintillaBase::SCI_SETCARETPERIOD,0); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2807 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2808 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2809 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2810 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2811 void file_editor_tab::auto_margin_width (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2812 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2813 m_edit_area->setMarginWidth (2, "1" + QString::number (m_edit_area->lines ())); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2814 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2815 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2816 // the following close request was changed from a signal slot into a |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2817 // normal function because we need the return value from close whether |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2818 // the tab really was closed (for canceling exiting octave). |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2819 // When emitting a signal, only the return value from the last slot |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2820 // goes back to the sender |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2821 bool file_editor_tab::conditional_close (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2822 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2823 return close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2824 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2825 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2826 void file_editor_tab::change_editor_state (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2827 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2828 if (ID != this) |
15848
424edeca3c66
Redo portions of file editor to use more signals/slots rather than casting.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
15449
diff
changeset
|
2829 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2830 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2831 emit editor_state_changed (m_copy_available, m_is_octave_file); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2832 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2833 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2834 void file_editor_tab::handle_file_reload_answer (int decision) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2835 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2836 if (decision == QMessageBox::Yes) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2837 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2838 // reload: file is readded to the file watcher in set_file_name () |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2839 load_file (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2840 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2841 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2842 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
2843 // do not reload: readd to the file watcher |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2844 m_file_system_watcher.addPath (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2845 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2846 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2847 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2848 void file_editor_tab::handle_file_resave_answer (int decision) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2849 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2850 // check decision of user in dialog |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2851 if (decision == QMessageBox::Save) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2852 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2853 save_file (m_file_name); // readds file to watcher in set_file_name () |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2854 m_edit_area->setReadOnly (false); // delete read only flag |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2855 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2856 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2857 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2858 // Definitely close the file. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2859 // Set modified to false to prevent the dialog box when the close event |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2860 // is posted. If the user cancels the close in this dialog the tab is |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2861 // left open with a non-existing file. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2862 m_edit_area->setModified (false); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2863 close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2864 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2865 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2866 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2867 void file_editor_tab::insert_debugger_pointer (const QWidget *ID, int line) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2868 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2869 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2870 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2871 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2872 emit remove_all_positions (); // debugger_position, unsure_debugger_position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2873 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2874 if (line > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2875 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2876 marker *dp; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2877 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2878 if (m_edit_area->isModified ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2879 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
2880 // The best that can be done if the editor contents have been |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2881 // modified is to see if there is a match with the original |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2882 // line number of any existing breakpoints. We can put a normal |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2883 // debugger pointer at that breakpoint position. Otherwise, it |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2884 // isn't certain whether the original line number and current line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2885 // number match. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2886 int editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2887 marker *dummy; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2888 emit find_translated_line_number (line, editor_linenr, dummy); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2889 if (editor_linenr != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2890 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2891 // Match with an existing breakpoint. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2892 dp = new marker (m_edit_area, line, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2893 marker::debugger_position, editor_linenr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2894 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2895 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2896 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2897 int original_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2898 editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2899 emit find_linenr_just_before (line, original_linenr, editor_linenr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2900 if (original_linenr >= 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2901 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2902 // Make a guess by using an offset from the breakpoint. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2903 int linenr_guess = editor_linenr + line - original_linenr; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2904 dp = new marker (m_edit_area, line, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2905 marker::unsure_debugger_position, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2906 linenr_guess); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2907 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2908 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2909 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2910 // Can't make a very good guess, so just use the debugger |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2911 // line number. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2912 dp = new marker (m_edit_area, line, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2913 marker::unsure_debugger_position); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2914 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2915 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2916 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2917 else |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2918 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2919 dp = new marker (m_edit_area, line, marker::debugger_position); |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2920 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2921 // In case of a not modified file we might have to remove |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2922 // a breakpoint here if we have stepped into the file |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2923 if (line == m_breakpoint_info.remove_line) |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2924 { |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2925 m_breakpoint_info.remove_line = -1; |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2926 if (line != m_breakpoint_info.do_not_remove_line) |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2927 handle_request_remove_breakpoint (line); |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2928 } |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2929 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2930 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2931 connect (this, SIGNAL (remove_position_via_debugger_linenr (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2932 dp, SLOT (handle_remove_via_original_linenr (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2933 connect (this, SIGNAL (remove_all_positions (void)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2934 dp, SLOT (handle_remove (void))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2935 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2936 center_current_line (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2937 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2938 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2939 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2940 void file_editor_tab::delete_debugger_pointer (const QWidget *ID, int line) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2941 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2942 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2943 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2944 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2945 if (line > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2946 emit remove_position_via_debugger_linenr (line); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2947 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2948 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2949 void file_editor_tab::do_breakpoint_marker (bool insert, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2950 const QWidget *ID, int line, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2951 const QString& cond) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2952 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2953 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2954 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2955 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2956 if (line > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2957 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2958 if (insert) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2959 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2960 int editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2961 marker *bp = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2962 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2963 // If comes back indicating a non-zero breakpoint marker, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2964 // reuse it if possible |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2965 emit find_translated_line_number (line, editor_linenr, bp); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2966 if (bp != nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2967 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2968 if ((cond == "") != (bp->get_cond () == "")) |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2969 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2970 // can only reuse conditional bp as conditional |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2971 emit remove_breakpoint_via_debugger_linenr (line); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2972 bp = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2973 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2974 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2975 bp->set_cond (cond); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2976 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2977 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2978 if (bp == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2979 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2980 bp = new marker (m_edit_area, line, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2981 cond == "" ? marker::breakpoint |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2982 : marker::cond_break, cond); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2983 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2984 connect (this, SIGNAL (remove_breakpoint_via_debugger_linenr |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2985 (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2986 bp, SLOT (handle_remove_via_original_linenr (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2987 connect (this, SIGNAL (request_remove_breakpoint_via_editor_linenr |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2988 (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2989 bp, SLOT (handle_request_remove_via_editor_linenr |
21651
b4354327d2b5
dbstop: Fix confusion when breakpoints are changed by the GUI (bug #47675)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21578
diff
changeset
|
2990 (int))); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2991 connect (this, SIGNAL (remove_all_breakpoints (void)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2992 bp, SLOT (handle_remove (void))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2993 connect (this, SIGNAL (find_translated_line_number (int, int&, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2994 marker*&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2995 bp, SLOT (handle_find_translation (int, int&, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2996 marker*&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2997 connect (this, SIGNAL (find_linenr_just_before (int, int&, int&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2998 bp, SLOT (handle_find_just_before (int, int&, int&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2999 connect (this, SIGNAL (report_marker_linenr (QIntList&, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3000 QStringList&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3001 bp, SLOT (handle_report_editor_linenr (QIntList&, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3002 QStringList&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3003 connect (bp, SIGNAL (request_remove (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3004 this, SLOT (handle_request_remove_breakpoint (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3005 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3006 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3007 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3008 emit remove_breakpoint_via_debugger_linenr (line); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3009 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3010 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3011 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3012 void file_editor_tab::center_current_line (bool always) |
23181
78f04a9dfeee
allow line breaking in the editor (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23179
diff
changeset
|
3013 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3014 long int visible_lines |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3015 = m_edit_area->SendScintilla (QsciScintillaBase::SCI_LINESONSCREEN); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3016 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3017 if (visible_lines > 2) |
23237
904c8a356e76
provide the possibility for breaking lines only in comments (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23236
diff
changeset
|
3018 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3019 int line, index; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3020 m_edit_area->getCursorPosition (&line, &index); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3021 // compensate for "folding": |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3022 // step 1: expand the current line, if it was folded |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3023 m_edit_area->SendScintilla (2232, line); // SCI_ENSUREVISIBLE |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3024 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3025 // step 2: map file line num to "visible" one // SCI_VISIBLEFROMDOCLINE |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3026 int vis_line = m_edit_area->SendScintilla (2220, line); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3027 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3028 int first_line = m_edit_area->firstVisibleLine (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3029 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3030 if (always || vis_line == first_line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3031 || vis_line > first_line + visible_lines - 2) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3032 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3033 first_line += (vis_line - first_line - (visible_lines - 1) / 2); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3034 m_edit_area->SendScintilla (2613, first_line); // SCI_SETFIRSTVISIBLELINE |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3035 } |
23237
904c8a356e76
provide the possibility for breaking lines only in comments (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23236
diff
changeset
|
3036 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3037 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3038 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3039 void file_editor_tab::handle_lines_changed (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3040 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3041 // the related signal is emitted before cursor-move-signal! |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3042 m_lines_changed = true; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3043 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3044 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3045 void file_editor_tab::handle_cursor_moved (int line, int col) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3046 { |
28382
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3047 // Cursor has moved, first check wether an autocompletion list |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3048 // is active or if it was closed. Scintilla provides signals for |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3049 // completed or cancelled lists, but not for list that where hidden |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3050 // due to a new character not matching anymore with the list entries |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3051 if (m_edit_area->SendScintilla (QsciScintillaBase::SCI_AUTOCACTIVE)) |
28382
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3052 m_autoc_active = true; |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3053 else if (m_autoc_active) |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3054 { |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3055 m_autoc_active = false; |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3056 emit autoc_closed (); // Tell editor about closed list |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3057 } |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3058 |
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3059 // Lines changed? Take care of indentation |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3060 if (m_lines_changed) // cursor moved and lines have changed |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3061 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3062 m_lines_changed = false; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3063 if (m_is_octave_file && line == m_line+1 && col < m_col) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3064 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3065 // Obviously, we have a newline here |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3066 if (m_smart_indent || m_auto_endif) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3067 m_edit_area->smart_indent (m_smart_indent, m_auto_endif, |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3068 m_line, m_ind_char_width); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3069 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3070 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3071 |
28382
2b52e473b6ef
fix focus issues in editor due to qt bug with focus proxy chains (bug #57635)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28297
diff
changeset
|
3072 // Update line and column indicator in the status bar |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3073 m_line = line; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3074 m_col = col; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3075 m_row_indicator->setNum (line+1); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3076 m_col_indicator->setNum (col+1); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3077 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3078 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3079 // Slot that is entered each time a new character was typed. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3080 // It is used for handling line breaking if this is desired. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3081 // The related signal is emitted after the signal for a moved cursor |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3082 // such that m_col and m_line can not be used for current position. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3083 void file_editor_tab::handle_char_added (int) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3084 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3085 if (m_line_break) |
23181
78f04a9dfeee
allow line breaking in the editor (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23179
diff
changeset
|
3086 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3087 // If line breaking is desired, get the current line and column. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3088 // For taking the tab width into consideration, use own function |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3089 int line, col, pos; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3090 m_edit_area->get_current_position (&pos, &line, &col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3091 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3092 // immediately return if line has not reached the max. line length |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3093 if (col <= m_line_break) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3094 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3095 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3096 // If line breaking is only desired in comments, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3097 // return if not in a comment |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3098 int style_comment = octave_qscintilla::ST_NONE; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3099 if (m_line_break_comments) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3100 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3101 // line breaking only in comments, check for comment style |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3102 style_comment = m_edit_area->is_style_comment (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3103 if (! style_comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3104 return; // no comment, return |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3105 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3106 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3107 // Here we go for breaking the current line by inserting a newline. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3108 // For determining the position of a specific column, we have to get |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
3109 // the column from the QScintilla function without taking tab lengths |
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
3110 // into account, since the calculation from line/col to position |
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
3111 // ignores this, too. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3112 m_edit_area->getCursorPosition (&line, &col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3113 int c = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3114 int col_space = col; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3115 int indentation = m_edit_area->indentation (line); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3116 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
3117 // Search the first occurrence of space or tab backwards starting from |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3118 // the current column (col_space). |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3119 while (c != ' ' && c != '\t' && col_space > indentation) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3120 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3121 pos = m_edit_area->positionFromLineIndex (line, col_space--); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3122 c = m_edit_area->SendScintilla (QsciScintillaBase::SCI_GETCHARAT, pos); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3123 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3124 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3125 // If a space or tab was found, break at this char, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3126 // otherwise break at cursor position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3127 int col_newline = col - 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3128 if (c == ' ' || c == '\t') |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3129 col_newline = col_space + 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3130 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3131 // Insert a newline char for breaking the line possibly followed |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3132 // by a line comment string |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3133 QString newline = QString ("\n"); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3134 style_comment = m_edit_area->is_style_comment (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3135 if (style_comment == octave_qscintilla::ST_LINE_COMMENT) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3136 newline = newline + m_edit_area->comment_string ().at (0); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3137 m_edit_area->insertAt (newline, line, col_newline); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3138 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3139 // Automatically indent the new line to the indentation of previous line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3140 // and set the cursor position to the end of the indentation. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3141 m_edit_area->setIndentation (line + 1, indentation); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3142 m_edit_area->SendScintilla (QsciScintillaBase::SCI_LINEEND); |
23181
78f04a9dfeee
allow line breaking in the editor (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23179
diff
changeset
|
3143 } |
78f04a9dfeee
allow line breaking in the editor (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23179
diff
changeset
|
3144 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3145 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3146 // Slot handling a double click into the text area |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3147 void file_editor_tab::handle_double_click (int, int, int modifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3148 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3149 if (! modifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3150 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3151 // double clicks without modifier |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3152 // clear any existing indicators of this type |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3153 m_edit_area->clear_selection_markers (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3154 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3155 if (m_highlight_all_occurrences) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3156 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3157 // Clear any previous selection. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3158 m_edit_area->set_word_selection (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3159 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3160 // highlighting of all occurrences of the clicked word is enabled |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3161 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3162 // get the resulting cursor position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3163 // (required if click was beyond a line ending) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3164 int line, col; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3165 m_edit_area->getCursorPosition (&line, &col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3166 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3167 // get the word at the cursor (if any) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3168 QString word = m_edit_area->wordAtLineIndex (line, col); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3169 word = word.trimmed (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3170 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3171 if (! word.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3172 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3173 // word is not empty, so find all occurrences of the word |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3174 |
28297
1127bcb30e61
Restore editor x-offset after highlight-all-occurrences double-click (bug #58372)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
28118
diff
changeset
|
3175 // remember first visible line and x-offset for restoring the view afterwards |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3176 int first_line = m_edit_area->firstVisibleLine (); |
28301 | 3177 int x_offset = m_edit_area->SendScintilla (QsciScintillaBase::SCI_GETXOFFSET); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3178 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3179 // search for first occurrence of the detected word |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3180 bool find_result_available |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3181 = m_edit_area->findFirst (word, |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3182 false, // no regexp |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3183 true, // case sensitive |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3184 true, // whole words only |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3185 false, // do not wrap |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3186 true, // forward |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3187 0,0, // from the beginning |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3188 false |
23190
4a2c42792d6c
highlight all occurrences of a selected word in the editor (bug #41470)
Torsten <mttl@mailbox.org>
parents:
23186
diff
changeset
|
3189 #if defined (HAVE_QSCI_VERSION_2_6_0) |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3190 , true |
23190
4a2c42792d6c
highlight all occurrences of a selected word in the editor (bug #41470)
Torsten <mttl@mailbox.org>
parents:
23186
diff
changeset
|
3191 #endif |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3192 ); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3193 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3194 // loop over all occurrences and set the related indicator |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3195 int oline, ocol; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3196 int wlen = word.length (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3197 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3198 while (find_result_available) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3199 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3200 // get cursor position after having found an occurrence |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3201 m_edit_area->getCursorPosition (&oline, &ocol); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3202 // mark the selection |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3203 m_edit_area->show_selection_markers (oline, ocol-wlen, oline, ocol); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3204 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3205 // find next occurrence |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3206 find_result_available = m_edit_area->findNext (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3207 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3208 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3209 // restore the visible area of the file, the cursor position, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3210 // and the selection |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3211 m_edit_area->setFirstVisibleLine (first_line); |
28301 | 3212 m_edit_area->SendScintilla (QsciScintillaBase::SCI_SETXOFFSET, x_offset); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3213 m_edit_area->setCursorPosition (line, col); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3214 m_edit_area->setSelection (line, col - wlen, line, col); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3215 m_edit_area->set_word_selection (word); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3216 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3217 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3218 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3219 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3220 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3221 QString file_editor_tab::get_function_name (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3222 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3223 QRegExp rxfun1 ("^[\t ]*function[^=]+=([^\\(]+)\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3224 QRegExp rxfun2 ("^[\t ]*function[\t ]+([^\\(]+)\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3225 QRegExp rxfun3 ("^[\t ]*function[^=]+=[\t ]*([^\\s]+)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3226 QRegExp rxfun4 ("^[\t ]*function[\t ]+([^\\s]+)[\t ]*$"); |
26624
7994f91cbdb8
Provide correct guess at filename when saving classdef file from GUI (bug #55497).
Rik <rik@octave.org>
parents:
26561
diff
changeset
|
3227 QRegExp rxfun5 ("^[\t ]*classdef[\t ]+([^\\s]+)[\t ]*$"); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3228 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3229 QStringList lines = m_edit_area->text ().split ("\n"); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3230 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3231 for (int i = 0; i < lines.count (); i++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3232 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3233 if (rxfun1.indexIn (lines.at (i)) != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3234 return rxfun1.cap (1).remove (QRegExp ("[ \t]*")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3235 else if (rxfun2.indexIn (lines.at (i)) != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3236 return rxfun2.cap (1).remove (QRegExp ("[ \t]*")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3237 else if (rxfun3.indexIn (lines.at (i)) != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3238 return rxfun3.cap (1).remove (QRegExp ("[ \t]*")); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3239 else if (rxfun4.indexIn (lines.at (i)) != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3240 return rxfun4.cap (1).remove (QRegExp ("[ \t]*")); |
26624
7994f91cbdb8
Provide correct guess at filename when saving classdef file from GUI (bug #55497).
Rik <rik@octave.org>
parents:
26561
diff
changeset
|
3241 else if (rxfun5.indexIn (lines.at (i)) != -1) |
7994f91cbdb8
Provide correct guess at filename when saving classdef file from GUI (bug #55497).
Rik <rik@octave.org>
parents:
26561
diff
changeset
|
3242 return rxfun5.cap (1).remove (QRegExp ("[ \t]*")); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3243 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3244 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3245 return QString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3246 } |
18834
0e6f7b5f6556
propose function name as file name when saving a new file (bug #42568)
Torsten <ttl@justmail.de>
parents:
18833
diff
changeset
|
3247 } |
0e6f7b5f6556
propose function name as file name when saving a new file (bug #42568)
Torsten <ttl@justmail.de>
parents:
18833
diff
changeset
|
3248 |
15873
7d300b85ee25
allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents:
15860
diff
changeset
|
3249 #endif |