Mercurial > octave
annotate libgui/src/m-editor/file-editor-tab.cc @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | d4d83344d653 |
children | 83f9f8bda883 2b4f7287aa3a |
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 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30398
diff
changeset
|
3 // Copyright (C) 2011-2022 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" |
29560
5b7e721844df
provide QOverload template if it is not in <QtGlobal> (bug #60416)
John W. Eaton <jwe@octave.org>
parents:
29542
diff
changeset
|
76 #include "octave-qtutils.h" |
19348
c364b9a44580
provide an editor lexer for text or unknown files (bug #43572)
Torsten <ttl@justmail.de>
parents:
19328
diff
changeset
|
77 #include "octave-txt-lexer.h" |
16547
3cd80afc3509
improve debugging with the GUI
John W. Eaton <jwe@octave.org>
parents:
16520
diff
changeset
|
78 |
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
|
79 #include "cmd-edit.h" |
21310
fc6a9bd59094
backout changeset e8c3590da9ff
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
80 #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
|
81 #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
|
82 #include "uniconv-wrappers.h" |
21310
fc6a9bd59094
backout changeset e8c3590da9ff
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
83 |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23084
diff
changeset
|
84 #include "bp-table.h" |
27405
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
85 #include "builtin-defun-decls.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
86 #include "interpreter-private.h" |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
87 #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
|
88 #include "load-path.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
89 #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
|
90 #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
|
91 #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
|
92 #include "symtab.h" |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21148
diff
changeset
|
93 #include "unwind-prot.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
94 #include "utils.h" |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
95 #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
|
96 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
97 namespace octave |
14676
35512b788af2
Editor can now handle multiple files in tabs.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff
changeset
|
98 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
99 //! 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
|
100 //! 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
|
101 //! 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
|
102 //! sections of text. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
103 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
104 // 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
|
105 // 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
|
106 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
|
107 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
|
108 : 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
|
109 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
110 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
|
111 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
|
112 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
|
113 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
|
114 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
115 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
|
116 |
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_name = ""; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
118 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
|
119 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
120 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
|
121 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
|
122 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
|
123 |
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_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
|
125 m_bp_conditions.clear (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
126 m_bp_restore_count = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
127 |
27008
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_next = false; |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
129 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
|
130 |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
131 // Initialize last modification date to now |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
132 m_last_modified = QDateTime::currentDateTimeUtc(); |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
133 |
29707
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
134 connect (m_edit_area, SIGNAL (cursorPositionChanged (int, int)), |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
135 this, SLOT (handle_cursor_moved (int,int))); |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
136 |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
137 connect (m_edit_area, SIGNAL (SCN_CHARADDED (int)), |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
138 this, SLOT (handle_char_added (int))); |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
139 |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
140 connect (m_edit_area, SIGNAL (SCN_DOUBLECLICK (int, int, int)), |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
141 this, SLOT (handle_double_click (int, int, int))); |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
142 |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
143 connect (m_edit_area, SIGNAL (linesChanged ()), |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
144 this, SLOT (handle_lines_changed ())); |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
145 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
146 connect (m_edit_area, &octave_qscintilla::context_menu_edit_signal, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
147 this, &file_editor_tab::handle_context_menu_edit); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
148 |
29716
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
149 connect (m_edit_area, &octave_qscintilla::update_rowcol_indicator_signal, |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
150 this, &file_editor_tab::update_rowcol_indicator); |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
151 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
152 // 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
|
153 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
|
154 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
155 // 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
|
156 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
|
157 QFontMetrics fm = m_row_indicator->fontMetrics (); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
158 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
|
159 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
|
160 m_col_indicator = new QLabel ("", this); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
161 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
|
162 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
|
163 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
|
164 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
|
165 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
|
166 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
|
167 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
168 // status bar: encoding |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
169 QLabel *enc_label = new QLabel (tr ("encoding:"), this); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
170 m_enc_indicator = new QLabel ("", this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
171 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
|
172 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
|
173 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
|
174 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
175 // status bar: eol mode |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
176 QLabel *eol_label = new QLabel (tr ("eol:"), this); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
177 m_eol_indicator = new QLabel ("", this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
178 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
|
179 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
|
180 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
|
181 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
182 // symbols |
27378
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->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
|
184 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
|
185 m_edit_area->markerDefine (QsciScintilla::RightTriangle, marker::bookmark); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
186 m_edit_area->setMarkerBackgroundColor (QColor (0, 0, 232), 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
|
187 m_edit_area->markerDefine (QsciScintilla::Circle, marker::breakpoint); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
188 m_edit_area->setMarkerBackgroundColor (QColor (192, 0, 0), marker::breakpoint); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
189 m_edit_area->markerDefine (QsciScintilla::Circle, marker::cond_break); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
190 m_edit_area->setMarkerBackgroundColor (QColor (255, 127, 0), marker::cond_break); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
191 m_edit_area->markerDefine (QsciScintilla::RightArrow, |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
192 marker::debugger_position); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
193 m_edit_area->setMarkerBackgroundColor (QColor (255, 255, 0), |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
194 marker::debugger_position); |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
195 m_edit_area->markerDefine (QsciScintilla::RightArrow, |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
196 marker::unsure_debugger_position); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
197 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
|
198 marker::unsure_debugger_position); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
199 |
29707
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
200 connect (m_edit_area, SIGNAL (marginClicked (int, int, |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
201 Qt::KeyboardModifiers)), |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
202 this, SLOT (handle_margin_clicked (int, int, |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
203 Qt::KeyboardModifiers))); |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
204 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
205 connect (m_edit_area, &octave_qscintilla::context_menu_break_condition_signal, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
206 this, &file_editor_tab::handle_context_menu_break_condition); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
207 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
208 // 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
|
209 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
|
210 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
|
211 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
|
212 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
213 // 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
|
214 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
|
215 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
|
216 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
|
217 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
|
218 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
219 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
|
220 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
221 // 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
|
222 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
|
223 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
224 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
|
225 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
|
226 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
|
227 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
|
228 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
|
229 setLayout (edit_area_layout); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
230 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
231 // 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
|
232 // 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
|
233 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
234 connect (m_edit_area, QOverload<const fcn_callback&>::of (&octave_qscintilla::interpreter_event), |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
235 this, QOverload<const fcn_callback&>::of (&file_editor_tab::interpreter_event)); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
236 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
237 connect (m_edit_area, QOverload<const meth_callback&>::of (&octave_qscintilla::interpreter_event), |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
238 this, QOverload<const meth_callback&>::of (&file_editor_tab::interpreter_event)); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27474
diff
changeset
|
239 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
240 // connect modified signal |
29707
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
241 connect (m_edit_area, SIGNAL (modificationChanged (bool)), |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
242 this, SLOT (update_window_title (bool))); |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
243 |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
244 connect (m_edit_area, SIGNAL (copyAvailable (bool)), |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
245 this, SLOT (handle_copy_available (bool))); |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
246 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
247 connect (&m_file_system_watcher, &QFileSystemWatcher::fileChanged, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
248 this, [=] (const QString& path) { file_has_changed (path); }); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
249 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
250 connect (this, &file_editor_tab::maybe_remove_next, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
251 this, &file_editor_tab::handle_remove_next); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
252 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
253 connect (this, &file_editor_tab::dbstop_if, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
254 this, &file_editor_tab::handle_dbstop_if); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
255 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
256 connect (this, &file_editor_tab::request_add_breakpoint, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
257 this, &file_editor_tab::handle_request_add_breakpoint); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
258 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
259 connect (this, &file_editor_tab::api_entries_added, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
260 this, &file_editor_tab::handle_api_entries_added); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
261 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
262 connect (this, &file_editor_tab::confirm_dbquit_and_save_signal, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
263 this, &file_editor_tab::confirm_dbquit_and_save); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
264 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
265 connect (this, &file_editor_tab::do_save_file_signal, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
266 this, &file_editor_tab::do_save_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
|
267 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
268 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
|
269 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
|
270 if (settings) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
271 notice_settings (settings, true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
272 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
273 // 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
|
274 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
|
275 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
|
276 // 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
|
277 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
|
278 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
279 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
280 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
|
281 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
282 // Tell all connected markers to self-destruct. |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
283 emit remove_all_breakpoints_signal (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
284 emit remove_all_positions (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
285 |
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
|
286 // 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
|
287 // 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
|
288 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
|
289 if (lexer) |
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 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
|
292 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
|
293 } |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
296 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
|
297 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
298 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
|
299 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
300 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
301 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
|
302 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
|
303 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
|
304 set_modified (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
305 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
306 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
307 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
|
308 { |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
309 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
|
310 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
|
311 (save_dialog == QMessageBox::Save)) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
312 { |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
313 // 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
|
314 // 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
|
315 // successful saving. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
316 e->ignore (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
317 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
318 else |
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 e->accept (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
321 emit tab_remove_request (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
322 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
323 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
324 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
325 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
|
326 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
327 m_ced = dir; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
328 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
329 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
330 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
|
331 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
332 // 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
|
333 // 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
|
334 // search path. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
335 QRegExp rxfun1 ("^[\t ]*function[^=]+=[\t ]*" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
336 + word_at_cursor + "[\t ]*\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
337 QRegExp rxfun2 ("^[\t ]*function[\t ]+" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
338 + word_at_cursor + "[\t ]*\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
339 QRegExp rxfun3 ("^[\t ]*function[\t ]+" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
340 + word_at_cursor + "[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
341 QRegExp rxfun4 ("^[\t ]*function[^=]+=[\t ]*" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
342 + word_at_cursor + "[\t ]*$"); |
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 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
|
345 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
|
346 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
347 int line; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
348 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
|
349 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
350 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
|
351 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
352 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
|
353 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
354 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
|
355 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
356 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
|
357 break; |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
360 if (pos_fct > -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
361 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
362 // 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
|
363 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
|
364 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
|
365 // 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
|
366 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
|
367 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
|
368 return; |
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 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
371 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
|
372 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
373 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
374 // 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
|
375 // 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
|
376 // 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
|
377 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
|
378 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
379 // 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
|
380 // 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
|
381 if (! unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
382 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
383 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
384 QString cond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
385 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
386 // 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
|
387 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
|
388 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
389 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
|
390 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
|
391 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
|
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 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
|
394 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
395 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
396 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
|
397 m_bp_conditions.clear (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
398 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
399 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
400 // 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
|
401 // 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
|
402 // 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
|
403 // 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
|
404 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
|
405 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
406 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
|
407 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
|
408 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
409 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
|
410 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
411 |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
412 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
|
413 } |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
414 |
27971
ec769a7ab9fb
fix more spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
415 // 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
|
416 // 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
|
417 // 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
|
418 // 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
|
419 // new dialog. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
420 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
421 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
|
422 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
|
423 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
424 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
|
425 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
|
426 = 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
|
427 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
|
428 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
429 // 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
|
430 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
431 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
|
432 { |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
433 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
434 ([=] (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
|
435 { |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
436 // INTERPRETER THREAD |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
437 |
27471 | 438 error_system& es = interp.get_error_system (); |
439 | |
440 unwind_protect frame; | |
441 | |
442 // Prevent an error in the evaluation here from sending us | |
443 // into the debugger. | |
444 | |
445 es.interpreter_try (frame); | |
446 | |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
447 bool eval_error = false; |
27471 | 448 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
|
449 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
450 try |
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 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
|
453 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
|
454 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
455 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
|
456 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
457 // 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
|
458 // breakpoint. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
459 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
460 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
|
461 } |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29162
diff
changeset
|
462 catch (const execution_exception& ee) |
27471 | 463 { |
27474
3fec8e9fa2aa
make recover_from_exception a member function
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
464 interp.recover_from_exception (); |
27471 | 465 |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29162
diff
changeset
|
466 msg = ee.message (); |
27471 | 467 eval_error = true; |
468 } | |
469 catch (const interrupt_exception&) | |
470 { | |
27474
3fec8e9fa2aa
make recover_from_exception a member function
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
471 interp.recover_from_exception (); |
27471 | 472 |
473 msg = "evaluation interrupted"; | |
474 eval_error = true; | |
475 } | |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
476 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
477 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
|
478 { |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
479 // 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
|
480 // 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
|
481 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
482 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
|
483 + 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
|
484 + "\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
|
485 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
486 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
|
487 } |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
488 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
489 } |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
492 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
|
493 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
494 // 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
|
495 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
|
496 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
|
497 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
|
498 if (! fileName.isEmpty () && QFile::exists (fileName)) |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
499 { |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
500 m_file_system_watcher.addPath (fileName); |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
501 m_last_modified = QFileInfo (fileName).lastModified ().toUTC (); |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
502 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
503 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
504 // 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
|
505 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
|
506 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
507 m_file_name = fileName; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
508 update_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
509 } |
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 // update the file editor with current editing directory |
29698
bbf5d4ea616c
fix enabled state of editor save action depending on modification state
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29657
diff
changeset
|
512 emit editor_state_changed (m_copy_available, m_is_octave_file, |
bbf5d4ea616c
fix enabled state of editor save action depending on modification state
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29657
diff
changeset
|
513 m_edit_area->isModified ()); |
24716
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 // 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
|
516 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
|
517 } |
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 // 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
|
520 // 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
|
521 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
|
522 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
523 if (file.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
524 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
525 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
|
526 return false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
527 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
528 return true; |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
531 return true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
532 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
533 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
534 // 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
|
535 // 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
|
536 // 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
|
537 // 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
|
538 // 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
|
539 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
|
540 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
541 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
|
542 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
|
543 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
544 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
|
545 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
|
546 "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
|
547 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
|
548 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
549 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
|
550 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
|
551 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
552 retval = false; |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
555 return retval; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
556 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
557 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
558 // 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
|
559 // 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
|
560 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
|
561 Qt::KeyboardModifiers state) |
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 (margin == 1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
564 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
565 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
|
566 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
567 if (state & Qt::ControlModifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
568 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
569 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
|
570 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
|
571 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
572 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
|
573 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
574 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
575 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
576 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
|
577 | (1 << marker::cond_break))) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
578 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
|
579 else |
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 if (unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
582 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
|
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 } |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
588 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
589 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
|
590 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
591 // Create a new lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
592 QsciLexer *lexer = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
593 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
594 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
|
595 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
596 // 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
|
597 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
|
598 || 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
|
599 { |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
600 #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
|
601 lexer = new QsciLexerOctave (); |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
602 #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
|
603 lexer = new QsciLexerMatlab (); |
19348
c364b9a44580
provide an editor lexer for text or unknown files (bug #43572)
Torsten <ttl@justmail.de>
parents:
19328
diff
changeset
|
604 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
605 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
|
606 #endif |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
607 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
|
608 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
609 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
610 if (! lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
611 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
612 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
|
613 || 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
|
614 || 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
|
615 || 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
|
616 || 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
|
617 || 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
|
618 || 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
|
619 || 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
|
620 || 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
|
621 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
622 lexer = new QsciLexerCPP (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
623 } |
29165
617d3aa713a4
add java file support in gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29163
diff
changeset
|
624 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
|
625 { |
617d3aa713a4
add java file support in gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29163
diff
changeset
|
626 lexer = new QsciLexerJava (); |
617d3aa713a4
add java file support in gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29163
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 (".pl")) |
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 QsciLexerPerl (); |
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 (".bat")) |
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 QsciLexerBatch (); |
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 (".diff")) |
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 QsciLexerDiff (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
639 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
640 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
|
641 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
642 lexer = new QsciLexerBash (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
643 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
644 else if (! valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
645 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
646 // 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
|
647 #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
|
648 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
|
649 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
|
650 #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
|
651 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
|
652 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
|
653 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
654 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
|
655 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
656 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
657 else |
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 // other or no extension |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
660 lexer = new octave_txt_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
661 } |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
664 // 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
|
665 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
|
666 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
667 // 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
|
668 // 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
|
669 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
|
670 || 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
|
671 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
672 // Delete and set new lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
673 if (old_lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
674 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
|
675 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
|
676 |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
677 // 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
|
678 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
|
679 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
680 connect (this, &file_editor_tab::request_add_octave_apis, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
681 this, &file_editor_tab::handle_add_octave_apis); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
682 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
683 // 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
|
684 update_lexer_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
685 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
686 else |
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 // 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
|
689 // use the old, existing one. |
0249ba4c9589
Fix static analyzer detected V668 issues (bug #55347).
Andreas Weber <octave@josoansi.de>
parents:
26346
diff
changeset
|
690 delete lexer; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
691 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
692 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
693 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
694 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
695 // 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
|
696 // when |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
697 // 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
|
698 // 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
|
699 // 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
|
700 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
|
701 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
702 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
|
703 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
704 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
|
705 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
|
706 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
707 if (m_lexer_apis) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
708 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
709 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
|
710 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
711 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
|
712 |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
713 // 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
|
714 // 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
|
715 // 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
|
716 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
|
717 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
|
718 |
24827
1e0718c1867c
eliminate most Qt version checks
John W. Eaton <jwe@octave.org>
parents:
24738
diff
changeset
|
719 #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
|
720 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
|
721 = QStandardPaths::writableLocation (QStandardPaths::CacheLocation); |
22250
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22181
diff
changeset
|
722 #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
|
723 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
|
724 = QDesktopServices::storageLocation (QDesktopServices::CacheLocation); |
22250
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22181
diff
changeset
|
725 #endif |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
726 |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
727 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
|
728 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
729 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
|
730 = 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
|
731 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
732 // 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
|
733 bool octave_builtins |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
734 = 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
|
735 bool octave_functions |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
736 = 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
|
737 |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
738 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
|
739 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
740 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
|
741 { |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
742 // 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
|
743 // 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
|
744 // 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
|
745 // 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
|
746 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
747 // 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
|
748 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
|
749 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
750 // 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
|
751 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
|
752 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
|
753 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
754 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
|
755 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
|
756 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
757 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
|
758 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
759 // 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
|
760 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
|
761 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
762 // 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
|
763 update_apis = ! apis_file.exists (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
764 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
765 if (octave_functions) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
766 { |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
767 // 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
|
768 // 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
|
769 // 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
|
770 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
|
771 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
|
772 || 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
|
773 update_apis = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
774 } |
23489
1b017f9ee3f1
more frequent preparation of data for autocompletion
Torsten <mttl@mailbox.org>
parents:
23457
diff
changeset
|
775 |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
776 } |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
777 else |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
778 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
779 // 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
|
780 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
|
781 } |
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
782 |
26841
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
783 // 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
|
784 // 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
|
785 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
|
786 |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
787 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
|
788 if (! apis_usable) |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
789 { |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
790 QDir ().mkpath (QFileInfo (f).absolutePath ()); |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
791 apis_usable = f.open (QIODevice::WriteOnly); |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
792 } |
26522
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
793 if (apis_usable) |
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
794 f.close (); |
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
795 |
27277
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
796 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
|
797 && (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
|
798 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
799 // 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
|
800 // 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
|
801 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
802 // create raw apis info |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
803 |
28788
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
804 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
|
805 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
806 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
|
807 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
808 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
809 ([=] (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
|
810 { |
27405
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
811 // INTERPRETER THREAD |
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
812 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
813 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
|
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 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
|
816 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
|
817 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
|
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 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
|
820 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
|
821 } |
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 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
|
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 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
|
826 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
827 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
|
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 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
|
830 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
|
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 |
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 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
|
835 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
836 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
|
837 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
838 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
|
839 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
|
840 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
841 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
|
842 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
|
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 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
|
845 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
|
846 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
847 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
848 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
|
849 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
850 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
851 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
852 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
853 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
|
854 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
855 // 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
|
856 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
857 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
|
858 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
859 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
|
860 = 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
|
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 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
|
863 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
|
864 } |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
865 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
866 emit api_entries_added (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
867 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
868 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
869 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
870 |
28788
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28499
diff
changeset
|
871 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
|
872 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
|
873 |
29498
5384bb4efc51
rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29468
diff
changeset
|
874 int mode = settings->value (ed_color_mode).toInt (); |
5384bb4efc51
rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29468
diff
changeset
|
875 rmgr.read_lexer_settings (lexer, settings, mode); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
876 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
877 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
|
878 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
|
879 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
880 // 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
|
881 QColor bg = lexer->paper (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
882 QColor fg = lexer->color (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
883 |
29498
5384bb4efc51
rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29468
diff
changeset
|
884 // margin and current line marker colors |
29220
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
885 QColor bgm, fgm; |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
886 |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
887 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
|
888 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
|
889 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
890 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
|
891 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
|
892 |
ab8aa1bb3c2f
add gui utilities with first function for color interpolation
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29205
diff
changeset
|
893 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
|
894 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
|
895 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
|
896 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
|
897 |
29498
5384bb4efc51
rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29468
diff
changeset
|
898 bgm = interpolate_color (bg, fg, 0.5, 0.1); |
5384bb4efc51
rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29468
diff
changeset
|
899 m_edit_area->setCaretLineBackgroundColor (bgm); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
900 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
901 // 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
|
902 // 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
|
903 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
|
904 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
|
905 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
906 // 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
|
907 // 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
|
908 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
|
909 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
910 // Line numbers width |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
911 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
912 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
913 // Line numbers font |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
914 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
|
915 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
|
916 font_size = font_size |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
917 + 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
|
918 if (font_size < 4) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
919 font_size = 4; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
920 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
|
921 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
922 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
|
923 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
924 else |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
925 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
|
926 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
927 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
928 // 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
|
929 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
|
930 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
931 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
|
932 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
|
933 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
934 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
|
935 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
936 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
937 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
|
938 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
939 // disconnect slot for saving prepared info if already connected |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
940 disconnect (m_lexer_apis, &QsciAPIs::apiPreparationFinished, |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
941 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
|
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 // 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
|
944 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
|
945 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
946 // path exists, apis info can be saved there |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
947 connect (m_lexer_apis, &QsciAPIs::apiPreparationFinished, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
948 this, &file_editor_tab::save_apis_info); |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
949 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
950 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
951 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
|
952 } |
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 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
|
955 { |
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_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
|
957 } |
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 // 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
|
960 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
|
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; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
964 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
|
965 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
|
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_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
|
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_help_doc (doc); |
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::context_edit (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 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
|
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) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
985 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
986 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
987 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
988 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
989 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
|
990 } |
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 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
|
993 bool remove_on_success) |
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 (fileName, remove_on_success); |
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::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
|
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 save_file_as (); |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1009 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
|
1010 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1011 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1012 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1013 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1014 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
|
1015 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1016 QPrintDialog printDlg (printer, this); |
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 (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
|
1019 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
|
1020 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1021 delete printer; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1022 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1023 |
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
|
1024 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
|
1025 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1026 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1027 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1028 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1029 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
|
1030 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1031 save_file (m_file_name); // save file dialog |
29437
c24e190ae34f
do not run files that are not saved as octave files (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29436
diff
changeset
|
1032 |
c24e190ae34f
do not run files that are not saved as octave files (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29436
diff
changeset
|
1033 // Running a file is disabled for non-octave files. But when saving |
c24e190ae34f
do not run files that are not saved as octave files (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29436
diff
changeset
|
1034 // a new file, an octave file is assumed but might actually saved |
c24e190ae34f
do not run files that are not saved as octave files (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29436
diff
changeset
|
1035 // as another file or with an invalid file name. |
c24e190ae34f
do not run files that are not saved as octave files (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29436
diff
changeset
|
1036 if (! (m_is_octave_file && valid_file_name ())) |
c24e190ae34f
do not run files that are not saved as octave files (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29436
diff
changeset
|
1037 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1038 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1039 |
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
|
1040 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
|
1041 { |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1042 // 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
|
1043 // 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
|
1044 // afterwards. |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1045 int first_bp_line |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
1046 = 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
|
1047 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1048 // 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
|
1049 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
|
1050 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
|
1051 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1052 // 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
|
1053 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
|
1054 } |
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
|
1055 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1056 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
|
1057 emit run_file_signal (info); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1058 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1059 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1060 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
|
1061 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1062 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1063 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1064 |
27378
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->context_run (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1066 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1067 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1068 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
|
1069 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1070 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1071 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1072 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1073 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
|
1074 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
|
1075 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1076 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
|
1077 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
|
1078 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1079 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
|
1080 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1081 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1082 // 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
|
1083 // after the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1084 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
|
1085 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1086 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1087 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1088 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1089 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
|
1090 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
|
1091 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1092 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
|
1093 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1094 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
|
1095 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1096 // Wrap. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1097 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
|
1098 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
|
1099 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1100 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
|
1101 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1102 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1103 // 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
|
1104 // before the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1105 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
|
1106 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1107 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1108 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1109 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1110 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
|
1111 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
|
1112 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1113 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
|
1114 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1115 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
|
1116 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1117 // 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
|
1118 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
|
1119 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
|
1120 (1 << marker::bookmark)); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1121 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1122 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
|
1123 } |
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 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
|
1126 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1127 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
|
1128 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1129 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1130 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
|
1131 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1132 |
29458
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1133 void |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1134 file_editor_tab::handle_request_add_breakpoint (int line, |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1135 const QString& condition) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1136 { |
29439
fe06fafb4cac
fix en-/disabling some editor actions depending on file type (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29359
diff
changeset
|
1137 if (! m_is_octave_file) |
fe06fafb4cac
fix en-/disabling some editor actions depending on file type (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29359
diff
changeset
|
1138 return; |
fe06fafb4cac
fix en-/disabling some editor actions depending on file type (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29359
diff
changeset
|
1139 |
29458
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1140 add_breakpoint_event (line, condition); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1141 } |
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 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
|
1144 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1145 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
1146 ([=] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1147 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1148 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1149 |
29458
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1150 tree_evaluator& tw = interp.get_evaluator (); |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1151 bp_table& bptab = tw.get_bp_table (); |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1152 |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1153 bptab.remove_breakpoint_from_file (m_file_name.toStdString (), line); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1154 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1155 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1156 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1157 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
|
1158 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1159 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1160 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1161 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1162 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
|
1163 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
|
1164 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1165 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
|
1166 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
|
1167 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1168 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1169 if (unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1170 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
|
1171 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1172 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1173 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1174 // 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
|
1175 // after the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1176 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
|
1177 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1178 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1179 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1180 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1181 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
|
1182 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
|
1183 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1184 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
|
1185 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1186 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
|
1187 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
|
1188 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1189 // 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
|
1190 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
|
1191 nextline = nextcond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1192 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1193 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
|
1194 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1195 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1196 // 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
|
1197 // before the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1198 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
|
1199 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1200 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1201 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1202 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1203 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
|
1204 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
|
1205 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1206 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
|
1207 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1208 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
|
1209 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
|
1210 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1211 // 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
|
1212 if (prevcond != -1 && prevcond > prevline) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1213 prevline = prevcond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1214 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1215 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
|
1216 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1217 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1218 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
|
1219 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1220 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1221 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1222 |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1223 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
1224 ([=] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1225 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1226 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1227 |
29458
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1228 tree_evaluator& tw = interp.get_evaluator (); |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1229 bp_table& bptab = tw.get_bp_table (); |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1230 |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1231 bptab.remove_all_breakpoints_from_file (m_file_name.toStdString (), |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1232 true); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1233 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1234 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1235 |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
1236 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
|
1237 unsigned int sci_msg) |
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 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1240 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1241 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1242 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
|
1243 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1244 |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
1245 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
|
1246 bool input_str) |
24716
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1251 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
|
1252 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1253 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1254 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
|
1255 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1256 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1257 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1258 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1259 do_comment_selected_text (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1260 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1261 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1262 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
|
1263 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1264 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1265 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1266 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1267 do_indent_selected_text (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1268 } |
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 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
|
1271 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1272 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1273 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1274 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1275 do_indent_selected_text (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1276 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1277 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1278 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
|
1279 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1280 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1281 return; |
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 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
|
1284 } |
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 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
|
1287 QsciScintilla::EolMode eol_mode) |
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 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1290 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1291 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1292 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
|
1293 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
|
1294 update_eol_indicator (); |
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::zoom_in (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 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1302 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
|
1303 auto_margin_width (); |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1306 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
|
1307 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1308 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1309 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1310 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1311 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
|
1312 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1313 } |
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 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
|
1316 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1317 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1318 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1319 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1320 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
|
1321 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1322 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1323 |
29458
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1324 void file_editor_tab::add_breakpoint_event (int line, const QString& cond) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1325 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1326 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
1327 ([=] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1328 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1329 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1330 |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1331 // 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
|
1332 // 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
|
1333 |
29458
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1334 tree_evaluator& tw = interp.get_evaluator (); |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1335 bp_table& bptab = tw.get_bp_table (); |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1336 |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1337 int lineno = bptab.add_breakpoint_in_file (m_file_name.toStdString (), |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1338 line, cond.toStdString ()); |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1339 |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1340 if (lineno) |
c0f86150aa6c
begin allowing breakpoints to be set using file name
John W. Eaton <jwe@octave.org>
parents:
29457
diff
changeset
|
1341 emit maybe_remove_next (lineno); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1342 }); |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1343 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1344 |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1345 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
|
1346 { |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1347 // 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
|
1348 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
|
1349 { |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1350 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
|
1351 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
|
1352 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1353 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1354 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1355 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
|
1356 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1357 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1358 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1359 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1360 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
|
1361 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1362 // 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
|
1363 // 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
|
1364 m_bp_restore_count--; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1365 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1366 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1367 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1368 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
|
1369 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1370 bool ok = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1371 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
|
1372 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
|
1373 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
|
1374 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
|
1375 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
|
1376 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
|
1377 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
|
1378 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1379 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
|
1380 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
|
1381 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1382 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
|
1383 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1384 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1385 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
|
1386 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1387 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1388 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1389 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1390 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
|
1391 m_edit_area->selectToMatchingBrace (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1392 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1393 m_edit_area->moveToMatchingBrace (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1394 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1395 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1396 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
|
1397 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1398 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1399 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1400 |
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
|
1401 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
|
1402 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1403 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
|
1404 switch (s) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1405 { |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1406 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
|
1407 m_edit_area->autoCompleteFromAll (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1408 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1409 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1410 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
|
1411 m_edit_area->autoCompleteFromAPIs (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1412 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1413 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1414 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
|
1415 m_edit_area->autoCompleteFromDocument (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1416 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1417 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1418 case QsciScintilla::AcsNone: |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1419 break; |
24716
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 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1422 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1423 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
|
1424 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1425 // FIXME: |
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->beginUndoAction (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1427 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1428 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
|
1429 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1430 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
|
1431 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
|
1432 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1433 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
|
1434 lineTo--; // stop at line above |
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 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
|
1437 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1438 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
|
1439 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
|
1440 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1441 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
|
1442 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1443 //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
|
1444 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
|
1445 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
|
1446 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1447 else |
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 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
|
1450 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
|
1451 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
|
1452 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
|
1453 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1454 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
|
1455 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1456 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1457 m_edit_area->endUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1458 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1459 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1460 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
|
1461 { |
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->beginUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1463 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1464 int lineFrom, lineTo; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1465 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1466 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
|
1467 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1468 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
|
1469 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
|
1470 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1471 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
|
1472 lineTo--; // stop at line above |
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 else |
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 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
|
1477 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
|
1478 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1479 lineTo = lineFrom; |
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 |
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->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
|
1483 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1484 m_edit_area->endUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1485 } |
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 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
|
1488 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1489 QRegExp rxc; |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27893
diff
changeset
|
1490 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
|
1491 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
|
1492 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
|
1493 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1494 if (comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1495 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1496 if (input_str) |
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 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
|
1499 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
|
1500 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
|
1501 |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1502 used_comment_str |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1503 = 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
|
1504 tr ("Comment string to use:\n"), |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1505 QLineEdit::Normal, |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1506 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
|
1507 &ok); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1508 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1509 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
|
1510 return; // No input, do nothing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1511 else |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25566
diff
changeset
|
1512 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
|
1513 } |
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 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1516 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1517 // Uncommenting (several strings possible) |
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 // Sort strings according their length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1520 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
|
1521 bool inserted; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1522 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1523 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
|
1524 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1525 inserted = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1526 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
|
1527 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1528 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
|
1529 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1530 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
|
1531 inserted = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1532 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1533 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1534 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1535 if (! inserted) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1536 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
|
1537 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1538 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1539 // Create regular expression |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1540 QString regexp; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1541 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
|
1542 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1543 if (i > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1544 regexp = regexp + QString ("|"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1545 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
|
1546 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1547 rxc = QRegExp (ws + "(" + regexp + ")"); |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1550 // Do the commenting/uncommenting |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1551 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
|
1552 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
|
1553 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1554 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
|
1555 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1556 int lineFrom, lineTo, colFrom, colTo; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1557 int change_col_from = 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1558 int change_col_to = 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1559 bool removed; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1560 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1561 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
|
1562 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1563 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
|
1564 lineTo--; // stop at line above |
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 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
|
1567 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1568 if (comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1569 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1570 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
|
1571 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1572 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1573 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1574 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
|
1575 if ((removed = line.contains (rxc))) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1576 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1577 len = rxc.matchedLength (); // complete length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1578 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
|
1579 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
|
1580 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
|
1581 m_edit_area->removeSelectedText (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1582 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1583 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1584 // 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
|
1585 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
|
1586 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
|
1587 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
|
1588 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
|
1589 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1590 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1591 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1592 // update the selection area |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1593 if (comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1594 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1595 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
|
1596 if (colTo > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1597 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
|
1598 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1599 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
|
1600 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1601 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1602 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1603 if (colTo == 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1604 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
|
1605 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
|
1606 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
|
1607 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1608 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1609 // 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
|
1610 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
|
1611 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1612 else |
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 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
|
1615 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
|
1616 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
|
1617 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
|
1618 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1619 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1620 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
|
1621 if (line.contains (rxc)) |
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 len = rxc.matchedLength (); // complete length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1624 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
|
1625 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
|
1626 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
|
1627 m_edit_area->removeSelectedText (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1628 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1629 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1630 } |
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->endUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1632 } |
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 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
|
1635 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1636 QString title (""); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1637 QString tooltip (""); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1638 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1639 if (! valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1640 title = tr ("<unnamed>"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1641 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1642 { |
29468
46def32e6806
do not allow full path in editor tabs
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29458
diff
changeset
|
1643 QFileInfo file (m_file_name); |
46def32e6806
do not allow full path in editor tabs
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29458
diff
changeset
|
1644 title = file.fileName (); |
46def32e6806
do not allow full path in editor tabs
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29458
diff
changeset
|
1645 tooltip = m_file_name; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1646 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1647 |
27053
1bdfd2b523c9
use tab icon for indicating a modified editor file (bug #56158)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27037
diff
changeset
|
1648 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
|
1649 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1650 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1651 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
|
1652 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1653 m_copy_available = enableCopy; |
29698
bbf5d4ea616c
fix enabled state of editor save action depending on modification state
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29657
diff
changeset
|
1654 emit editor_state_changed (m_copy_available, m_is_octave_file, |
bbf5d4ea616c
fix enabled state of editor save action depending on modification state
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29657
diff
changeset
|
1655 m_edit_area->isModified ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1656 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1657 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1658 // 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
|
1659 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
|
1660 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1661 dlg->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1662 if (modal) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1663 dlg->exec (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1664 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1665 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1666 dlg->setWindowModality (Qt::NonModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1667 dlg->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1668 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1669 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1670 |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1671 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
|
1672 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1673 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
|
1674 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
|
1675 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1676 // 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
|
1677 // 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
|
1678 // 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
|
1679 QMessageBox::StandardButtons buttons = QMessageBox::Save | |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
1680 QMessageBox::Discard | |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
1681 QMessageBox::Cancel; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1682 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1683 // 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
|
1684 // 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
|
1685 // 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
|
1686 QString available_actions = |
19714
21015ca26566
Restructure shutdown flow and behavior for improved robustness
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
19697
diff
changeset
|
1687 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
|
1688 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1689 QString file; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1690 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
|
1691 file = m_file_name; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1692 else |
17973
6925dca34807
fix saving unnamed editor files when closing octave (bug #40637)
Torsten <ttl@justmail.de>
parents:
17962
diff
changeset
|
1693 file = tr ("<unnamed>"); |
6925dca34807
fix saving unnamed editor files when closing octave (bug #40637)
Torsten <ttl@justmail.de>
parents:
17962
diff
changeset
|
1694 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1695 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1696 = 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
|
1697 tr ("The file\n\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1698 " %1\n\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1699 "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
|
1700 "%2"). |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1701 arg (file). arg (available_actions), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1702 buttons, qobject_cast<QWidget *> (parent ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1703 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1704 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
|
1705 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
|
1706 |
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1707 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
|
1708 |
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
1709 if (decision == QMessageBox::Cancel) |
27633
fd009322dd9f
eliminate static variable in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27629
diff
changeset
|
1710 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
|
1711 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
|
1712 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
|
1713 else |
27651
c9ebcb9050b4
fix broken storing of editor session data at shutdown
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27639
diff
changeset
|
1714 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
|
1715 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1716 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1717 { |
27651
c9ebcb9050b4
fix broken storing of editor session data at shutdown
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27639
diff
changeset
|
1718 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
|
1719 } |
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 return decision; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1722 } |
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 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
|
1725 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1726 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
|
1727 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1728 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1729 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
|
1730 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1731 // 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
|
1732 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
|
1733 |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
1734 // 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
|
1735 // 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
|
1736 // 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
|
1737 // canceled this closing late on. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1738 check_restore_breakpoints (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1739 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1740 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1741 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
|
1742 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1743 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
|
1744 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1745 // 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
|
1746 // 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
|
1747 remove_all_breakpoints (this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1748 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1749 // 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
|
1750 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
|
1751 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
|
1752 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
|
1753 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
|
1754 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1755 // 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
|
1756 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
|
1757 m_bp_conditions.clear (); |
24716
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 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1760 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1761 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
|
1762 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1763 // get the absolute path |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1764 QFileInfo file_info = QFileInfo (fileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1765 QString file_to_load; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1766 if (file_info.exists ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1767 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
|
1768 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1769 file_to_load = fileName; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1770 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
|
1771 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
|
1772 return file.errorString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1773 |
26131
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1774 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
|
1775 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
|
1776 { |
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1777 // 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
|
1778 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
|
1779 col = m_col; |
26131
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1780 } |
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1781 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1782 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
|
1783 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1784 // 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
|
1785 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
|
1786 |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1787 // 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
|
1788 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
|
1789 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
|
1790 |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1791 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
|
1792 { |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
1793 const QByteArray eol_lf = QByteArray (1, 0x0a); |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
1794 const QByteArray eol_cr = QByteArray (1, 0x0d); |
28134
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1795 |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1796 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
|
1797 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
|
1798 |
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
1799 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
|
1800 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
|
1801 } |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1802 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1803 // decode |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1804 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
|
1805 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
|
1806 if (codec == nullptr) |
a7be718a9dd3
validate editor file codec derived from name (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26131
diff
changeset
|
1807 codec = QTextCodec::codecForLocale (); |
a7be718a9dd3
validate editor file codec derived from name (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26131
diff
changeset
|
1808 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1809 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
|
1810 text_data.size(), &st); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1811 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1812 // Decoding with invalid characters? |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1813 if (st.invalidChars > 0) |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1814 { |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1815 // 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
|
1816 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
|
1817 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1818 // 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
|
1819 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
|
1820 "%1\n" |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1821 "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
|
1822 "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
|
1823 "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
|
1824 .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
|
1825 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
|
1826 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
|
1827 msg_box->setText (msg); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1828 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
|
1829 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
|
1830 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
|
1831 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
|
1832 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
1833 connect (msg_box, &QMessageBox::buttonClicked, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
1834 this, &file_editor_tab::handle_decode_warning_answer); |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1835 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1836 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
|
1837 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
|
1838 msg_box->show (); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1839 } |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1840 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1841 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
|
1842 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
|
1843 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1844 QApplication::restoreOverrideCursor (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1845 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1846 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
|
1847 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
|
1848 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
|
1849 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
|
1850 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1851 update_eol_indicator (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1852 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1853 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
|
1854 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1855 return QString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1856 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1857 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1858 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
|
1859 { |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1860 QString txt = btn->text (); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1861 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1862 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
|
1863 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1864 // 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
|
1865 close (); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1866 return; |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1867 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1868 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1869 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
|
1870 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1871 // 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
|
1872 QDialog dlg; |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1873 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
|
1874 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1875 QLabel *text |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1876 = 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
|
1877 "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
|
1878 "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
|
1879 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1880 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
|
1881 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
|
1882 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
|
1883 m_new_encoding = enc_combo->currentText (); |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
1884 connect (enc_combo, &QComboBox::currentTextChanged, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
1885 this, &file_editor_tab::handle_current_enc_changed); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1886 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1887 QDialogButtonBox *buttons |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1888 = 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
|
1889 Qt::Horizontal); |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
1890 connect (buttons, &QDialogButtonBox::accepted, &dlg, &QDialog::accept); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
1891 connect (buttons, &QDialogButtonBox::rejected, &dlg, &QDialog::reject); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1892 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1893 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
|
1894 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
|
1895 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
|
1896 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
|
1897 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
|
1898 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
|
1899 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1900 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
|
1901 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1902 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
|
1903 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1904 // 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
|
1905 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
|
1906 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
|
1907 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
|
1908 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1909 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1910 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1911 // 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
|
1912 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
|
1913 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1914 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1915 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
|
1916 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1917 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
|
1918 } |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1919 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1920 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
|
1921 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1922 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
|
1923 |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
1924 QByteArray eol_lf = QByteArray (1, 0x0a); |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
1925 QByteArray eol_cr = QByteArray (1, 0x0d); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1926 QByteArray eol_crlf = eol_cr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1927 eol_crlf.append (eol_lf); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1928 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1929 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
|
1930 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
|
1931 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
|
1932 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1933 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
|
1934 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
|
1935 QsciScintilla::EolMode eol_mode |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
1936 = 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
|
1937 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1938 int count_max = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1939 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1940 if (count_crlf > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1941 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1942 eol_mode = QsciScintilla::EolWindows; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1943 count_max = count_crlf; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1944 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1945 if (count_lf > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1946 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1947 eol_mode = QsciScintilla::EolUnix; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1948 count_max = count_lf; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1949 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1950 if (count_cr > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1951 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1952 eol_mode = QsciScintilla::EolMac; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1953 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1954 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1955 return eol_mode; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1956 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1957 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1958 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
|
1959 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1960 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
|
1961 { |
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
|
1962 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
|
1963 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
|
1964 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
|
1965 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
|
1966 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
|
1967 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
|
1968 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
|
1969 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
|
1970 break; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1971 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1972 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1973 |
25923
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
1974 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
|
1975 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1976 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
|
1977 return; |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
1978 |
27255
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1979 // Create and queue the command object. |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1980 |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1981 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
1982 ([=] (interpreter& interp) |
27255
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1983 { |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1984 // INTERPRETER THREAD |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1985 |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1986 octave_value_list argout = Fdbstatus (interp, ovl (), 1); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1987 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
1988 connect (this, &file_editor_tab::update_breakpoints_signal, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
1989 this, &file_editor_tab::update_breakpoints_handler, |
27255
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1990 Qt::QueuedConnection); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1991 |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1992 emit update_breakpoints_signal (argout); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
1993 }); |
25923
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
1994 } |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
1995 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
1996 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
|
1997 { |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
1998 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
|
1999 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
|
2000 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2001 Cell file = dbg.contents ("file"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2002 Cell line = dbg.contents ("line"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2003 Cell cond = dbg.contents ("cond"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2004 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2005 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
|
2006 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2007 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
|
2008 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
|
2009 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
|
2010 } |
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::new_file (const QString& commands) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2014 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2015 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
|
2016 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
2017 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
|
2018 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
|
2019 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2020 // 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
|
2021 // missing in the settings |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2022 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
|
2023 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2024 update_eol_indicator (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2025 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2026 update_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2027 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2028 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
|
2029 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
|
2030 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2031 |
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
|
2032 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
|
2033 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
|
2034 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
|
2035 bool restore_breakpoints) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2036 { |
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
|
2037 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
|
2038 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
|
2039 "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
|
2040 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
|
2041 |
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
|
2042 if (ans == QMessageBox::Save) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2043 { |
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
|
2044 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28788
diff
changeset
|
2045 ([=] (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
|
2046 { |
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
|
2047 // 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
|
2048 |
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
|
2049 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
|
2050 |
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
|
2051 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
|
2052 |
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
|
2053 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
|
2054 |
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
|
2055 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
|
2056 |
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
|
2057 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
|
2058 |
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
|
2059 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
|
2060 |
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
|
2061 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
|
2062 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
|
2063 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2064 } |
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 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
|
2068 bool remove_on_success, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2069 bool restore_breakpoints) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2070 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2071 // 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
|
2072 // should be performed. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2073 if (! valid_file_name (saveFileName)) |
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 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
|
2076 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2077 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2078 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2079 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
|
2080 |
1e3c42fbf4d3
Don't overwrite content of non-encodable .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26376
diff
changeset
|
2081 // 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
|
2082 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
|
2083 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
|
2084 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
|
2085 |
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
|
2086 // 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
|
2087 // 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
|
2088 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2089 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
|
2090 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2091 // 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
|
2092 QFileInfo file_info = QFileInfo (saveFileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2093 QString file_to_save; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2094 if (file_info.exists ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2095 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2096 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
|
2097 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
|
2098 |
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 // 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
|
2105 // 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
|
2106 // 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
|
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 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
|
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 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
|
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 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
|
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 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
|
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 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
|
2117 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
|
2118 { |
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
|
2119 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
|
2120 } |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29162
diff
changeset
|
2121 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
|
2122 { |
27474
3fec8e9fa2aa
make recover_from_exception a member function
John W. Eaton <jwe@octave.org>
parents:
27471
diff
changeset
|
2123 interp.recover_from_exception (); |
27471 | 2124 |
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
|
2125 // 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
|
2126 // 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
|
2127 } |
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
|
2128 |
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
|
2129 // 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
|
2130 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
|
2131 { |
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
|
2132 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
|
2133 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
|
2134 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
|
2135 } |
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
|
2136 |
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
|
2137 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
|
2138 |
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
|
2139 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
|
2140 |
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 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
|
2142 != 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
|
2143 { |
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
|
2144 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
|
2145 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
|
2146 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
|
2147 } |
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
|
2148 |
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
|
2149 // 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
|
2150 // 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
|
2151 // 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
|
2152 |
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 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
|
2154 |
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
|
2155 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
|
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 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
|
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 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
|
2160 { |
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 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
|
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 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
|
2164 (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
|
2165 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
|
2166 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
|
2167 } |
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 } |
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 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
|
2172 |
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 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
|
2174 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
|
2175 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2176 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2177 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
|
2178 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
|
2179 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
|
2180 } |
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 |
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 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
|
2183 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
|
2184 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
|
2185 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2186 QFile file (file_to_save); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2187 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2188 // 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
|
2189 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
|
2190 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
|
2191 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
|
2192 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2193 // open the file for writing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2194 if (! file.open (QIODevice::WriteOnly)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2195 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2196 // 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
|
2197 // watched previously. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2198 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
|
2199 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
|
2200 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2201 // 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
|
2202 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2203 = new QMessageBox (QMessageBox::Critical, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2204 tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2205 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
|
2206 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
|
2207 QMessageBox::Ok, nullptr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2208 show_dialog (msgBox, false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2209 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2210 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2211 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2212 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2213 // 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
|
2214 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2215 // write the file |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2216 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
|
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 // 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
|
2219 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
|
2220 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
|
2221 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
|
2222 |
28134
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
2223 // 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
|
2224 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
|
2225 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
|
2226 |
28134
480490faf659
change behavior for handling newline at end of file (bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28132
diff
changeset
|
2227 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
|
2228 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
|
2229 |
4cfe24f56336
add editor prefs for forcing coding standards (bug #57860, bug #57861)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28118
diff
changeset
|
2230 // Save the file |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2231 out.setCodec (codec); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2232 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2233 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
|
2234 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2235 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
|
2236 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
|
2237 && 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
|
2238 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
|
2239 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2240 out.flush (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2241 QApplication::restoreOverrideCursor (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2242 file.flush (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2243 file.close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2244 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2245 // 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
|
2246 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
|
2247 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
|
2248 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2249 // 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
|
2250 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
|
2251 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2252 // 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
|
2253 update_window_title (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2254 |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
2255 // 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
|
2256 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
|
2257 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
|
2258 |
27605
60cecb3fed04
fix saving modified files when closing editor tabs or octave
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27583
diff
changeset
|
2259 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
|
2260 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2261 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2262 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2263 emit tab_remove_request (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2264 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
|
2265 } |
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 // 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
|
2268 // 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
|
2269 // 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
|
2270 if (restore_breakpoints) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2271 check_restore_breakpoints (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2272 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2273 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2274 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
|
2275 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2276 // 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
|
2277 // 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
|
2278 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2279 // 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
|
2280 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
|
2281 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2282 // 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
|
2283 // can't be a parent. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2284 QFileDialog *fileDialog; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2285 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2286 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2287 // 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
|
2288 // 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
|
2289 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
|
2290 fileDialog = new QFileDialog (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2291 } |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
2292 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2293 fileDialog = new QFileDialog (this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2294 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2295 // 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
|
2296 QStringList filters; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2297 filters << tr ("Octave Files (*.m)") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2298 << tr ("All Files (*)"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2299 fileDialog->setNameFilters (filters); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2300 fileDialog->setDefaultSuffix ("m"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2301 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2302 if (valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2303 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2304 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
|
2305 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
|
2306 if (file_info.suffix () != "m") |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2307 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2308 // 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
|
2309 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
|
2310 fileDialog->setDefaultSuffix (""); // no default suffix |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2311 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2312 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2313 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2314 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2315 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
|
2316 fileDialog->setDirectory (m_ced); |
24716
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 // propose a name corresponding to the function name |
29436
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2319 // if the new file contains a function |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2320 QString fname = get_function_name (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2321 if (! fname.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2322 fileDialog->selectFile (fname + ".m"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2323 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2324 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2325 fileDialog->setAcceptMode (QFileDialog::AcceptSave); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2326 fileDialog->setViewMode (QFileDialog::Detail); |
29438
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2327 fileDialog->setOption (QFileDialog::HideNameFilterDetails, false); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2328 |
26096
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2329 // 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
|
2330 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
|
2331 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
|
2332 if (! settings->value (global_use_native_dialogs).toBool ()) |
29438
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2333 { |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2334 // Qt file dialogs |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2335 fileDialog->setOption(QFileDialog::DontUseNativeDialog); |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2336 } |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2337 else |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2338 { |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2339 // Native file dialogs: Test for already existing files is done manually |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2340 // since native file dialogs might not consider the automatically |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2341 // appended default extension when checking if the file already exists |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2342 fileDialog->setOption(QFileDialog::DontConfirmOverwrite); |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2343 } |
26096
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2344 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2345 connect (fileDialog, &QFileDialog::filterSelected, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2346 this, &file_editor_tab::handle_save_as_filter_selected); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2347 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2348 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2349 { |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2350 connect (fileDialog, &QFileDialog::fileSelected, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2351 this, &file_editor_tab::handle_save_file_as_answer_close); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2352 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2353 connect (fileDialog, &QFileDialog::rejected, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2354 this, &file_editor_tab::handle_save_file_as_answer_cancel); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2355 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2356 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2357 { |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2358 connect (fileDialog, &QFileDialog::fileSelected, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2359 this, &file_editor_tab::handle_save_file_as_answer); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2360 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2361 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2362 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
|
2363 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2364 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2365 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
|
2366 { |
29436
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2367 // On some systems, the filterSelected signal is emitted without user |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2368 // action and with an empty filter string when the file dialog is shown. |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2369 // Just return in this case and do not remove the current default suffix. |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2370 if (filter.isEmpty ()) |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2371 return; |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2372 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2373 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
|
2374 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2375 QRegExp rx ("\\*\\.([^ ^\\)]*)[ \\)]"); // regexp for suffix in filter |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
2376 int index = rx.indexIn (filter, 0); // get first suffix in filter |
24716
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 if (index > -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2379 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
|
2380 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2381 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
|
2382 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2383 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2384 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
|
2385 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2386 QFileInfo file = QFileInfo (file_name); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2387 QString base_name = file.baseName (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2388 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2389 if ((file.suffix () == "m") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2390 && (! valid_identifier (base_name.toStdString ()))) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2391 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2392 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
|
2393 tr ("\"%1\"\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2394 "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
|
2395 "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
|
2396 "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
|
2397 "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
|
2398 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
|
2399 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2400 if (ans == QMessageBox::Yes) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2401 return true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2402 } |
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 return false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2405 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2406 |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2407 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
|
2408 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2409 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
|
2410 |
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
|
2411 // "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
|
2412 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
|
2413 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
|
2414 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2415 if (! codec) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2416 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2417 QMessageBox::critical (nullptr, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2418 tr ("Octave Editor"), |
25062 | 2419 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
|
2420 "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
|
2421 "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
|
2422 |
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2423 return nullptr; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2424 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2425 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2426 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
|
2427 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
|
2428 |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2429 // 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
|
2430 // 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
|
2431 // implementations. |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2432 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
|
2433 { |
26346
fd890481c408
file-editor-tab.cc: Use function available since Qt4.2.
Markus Mützel <markus.muetzel@gmx.de>
parents:
26331
diff
changeset
|
2434 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
|
2435 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
|
2436 (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
|
2437 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29649
diff
changeset
|
2438 std::size_t length; |
29608
dc171e0452cf
libgui: Avoid dangling reference with QString::toStdString.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29572
diff
changeset
|
2439 const std::string encoding = m_encoding.toStdString (); |
26331
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2440 char *res_str = |
29608
dc171e0452cf
libgui: Avoid dangling reference with QString::toStdString.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29572
diff
changeset
|
2441 octave_u32_conv_to_encoding_strict (encoding.c_str (), src, |
dc171e0452cf
libgui: Avoid dangling reference with QString::toStdString.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29572
diff
changeset
|
2442 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
|
2443 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
|
2444 { |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2445 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
|
2446 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
|
2447 } |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2448 else |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2449 ::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
|
2450 } |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2451 |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2452 if (! can_encode) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2453 { |
26394
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2454 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
|
2455 = 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
|
2456 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
|
2457 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
|
2458 "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
|
2459 "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
|
2460 "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
|
2461 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
|
2462 QMessageBox::Cancel); |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2463 |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2464 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
|
2465 return codec; |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2466 else |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2467 return nullptr; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2468 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2469 |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2470 return codec; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2471 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2472 |
29436
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2473 void file_editor_tab::handle_save_file_as_answer (const QString& save_file_name) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2474 { |
29436
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2475 QString saveFileName = save_file_name; |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2476 QFileInfo file (saveFileName); |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2477 QFileDialog *file_dialog = qobject_cast<QFileDialog *> (sender ()); |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2478 |
29438
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2479 // Test if the file dialog should have added a default file |
29436
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2480 // suffix, but the selected file still has no suffix (see Qt bug |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2481 // https://bugreports.qt.io/browse/QTBUG-59401) |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2482 if ((! file_dialog->defaultSuffix ().isEmpty ()) && file.suffix ().isEmpty ()) |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2483 { |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2484 saveFileName = saveFileName + "." + file_dialog->defaultSuffix (); |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2485 } |
2c60e63ff1db
fix missing file suffix m when saving a new script (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29358
diff
changeset
|
2486 |
29438
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2487 file.setFile (saveFileName); |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2488 |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2489 // If overwrite confirmation was not done by the file dialog (in case |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2490 // of native file dialogs, see above), do it here |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
2491 if (file_dialog->testOption (QFileDialog::DontConfirmOverwrite) && file.exists ()) |
29438
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2492 { |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2493 int ans = QMessageBox::question (file_dialog, |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2494 tr ("Octave Editor"), |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2495 tr ("%1\n already exists\n" |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2496 "Do you want to overwrite it?").arg (saveFileName), |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2497 QMessageBox::Yes | QMessageBox::No); |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2498 if (ans != QMessageBox::Yes) |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2499 { |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2500 // Try again, if edit area is read only, remove on success |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2501 save_file_as (m_edit_area->isReadOnly ()); |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2502 return; |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2503 } |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2504 } |
23424aa7a11a
fix confirm overwrite for native editor file save as dialogs (bug #60214)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29437
diff
changeset
|
2505 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2506 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
|
2507 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2508 save_file (saveFileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2509 } |
16702
553cfdd5d660
make white space visibility in the editor configurable
Torsten <ttl@justmail.de>
parents:
16701
diff
changeset
|
2510 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2511 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2512 // 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
|
2513 if (check_valid_identifier (saveFileName)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2514 save_file_as (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2515 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2516 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
|
2517 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2518 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2519 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2520 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
|
2521 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2522 // 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
|
2523 // 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
|
2524 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2525 // 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
|
2526 if (check_valid_identifier (saveFileName)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2527 save_file_as (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2528 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2529 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
|
2530 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2531 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2532 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
|
2533 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2534 // 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
|
2535 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
|
2536 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2537 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2538 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
|
2539 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2540 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
|
2541 |
25741
a3f2b06c599a
fix broken file closing when deleted/renamed in file browser
Torsten <mttl@mailbox.org>
parents:
25646
diff
changeset
|
2542 if (file_exists && ! do_close) |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2543 { |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2544 // 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
|
2545 // 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
|
2546 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
|
2547 |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2548 if (modified <= m_last_modified) |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2549 return; |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2550 |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2551 m_last_modified = modified; |
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 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2554 // 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
|
2555 // 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
|
2556 // 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
|
2557 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
|
2558 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
|
2559 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
|
2560 |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2561 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
|
2562 { |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2563 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2564 // 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
|
2565 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
|
2566 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
|
2567 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2568 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2569 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2570 // 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
|
2571 // 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
|
2572 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
|
2573 m_edit_area->setFocus (); |
24716
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 // 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
|
2576 // 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
|
2577 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2578 = new QMessageBox (QMessageBox::Warning, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2579 tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2580 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
|
2581 arg (m_file_name), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2582 QMessageBox::Yes | QMessageBox::No, this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2583 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2584 connect (msgBox, &QMessageBox::finished, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2585 this, &file_editor_tab::handle_file_reload_answer); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2586 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2587 msgBox->setWindowModality (Qt::WindowModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2588 msgBox->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2589 msgBox->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2590 } |
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 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2593 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2594 // 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
|
2595 // 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
|
2596 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
|
2597 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2598 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
|
2599 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2600 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2601 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2602 // 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
|
2603 // 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
|
2604 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
|
2605 m_edit_area->setFocus (); |
24716
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 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
|
2608 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
|
2609 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
|
2610 |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2611 // 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
|
2612 // 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
|
2613 // 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
|
2614 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2615 = 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
|
2616 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
|
2617 "%1\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2618 "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
|
2619 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
|
2620 QMessageBox::Save | QMessageBox::Close, nullptr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2621 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2622 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
|
2623 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2624 connect (msgBox, &QMessageBox::finished, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2625 this, &file_editor_tab::handle_file_resave_answer); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2626 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2627 msgBox->setWindowModality (Qt::WindowModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2628 msgBox->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2629 msgBox->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2630 } |
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 |
27611
0495b64288f7
use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents:
27605
diff
changeset
|
2633 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
|
2634 { |
27611
0495b64288f7
use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents:
27605
diff
changeset
|
2635 if (! settings) |
0495b64288f7
use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents:
27605
diff
changeset
|
2636 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2637 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2638 if (! init) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2639 update_lexer_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2640 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2641 // code folding |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2642 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
|
2643 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2644 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
|
2645 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
|
2646 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2647 else |
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->setFolding (QsciScintilla::NoFoldStyle, 3); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2650 } |
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 // status bar |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2653 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
|
2654 m_status_bar->show (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2655 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2656 m_status_bar->hide (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2657 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2658 //highlight current line color |
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_edit_area->setCaretLineVisible |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2660 (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
|
2661 |
29498
5384bb4efc51
rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29468
diff
changeset
|
2662 // auto completion |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2663 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
|
2664 (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
|
2665 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
|
2666 (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
|
2667 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2668 QsciScintilla::AutoCompletionSource source = QsciScintilla::AcsNone; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2669 if (match_keywords) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2670 if (match_document) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2671 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
|
2672 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2673 source = QsciScintilla::AcsAPIs; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2674 else if (match_document) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2675 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
|
2676 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
|
2677 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2678 m_edit_area->setAutoCompletionReplaceWord |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2679 (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
|
2680 m_edit_area->setAutoCompletionCaseSensitivity |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2681 (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
|
2682 |
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2683 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
|
2684 m_edit_area->setAutoCompletionThreshold |
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_threshold).toInt ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2686 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2687 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
|
2688 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2689 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
|
2690 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
|
2691 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
|
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->setWhitespaceVisibility (QsciScintilla::WsVisible); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2694 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2695 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
|
2696 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2697 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
|
2698 |
29649
1583728a5819
fix eol mode when saving files under new names (bug #60585)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29438
diff
changeset
|
2699 m_save_as_desired_eol = static_cast<QsciScintilla::EolMode> |
1583728a5819
fix eol mode when saving files under new names (bug #60585)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29438
diff
changeset
|
2700 (settings->value (ed_default_eol_mode).toInt ()); |
1583728a5819
fix eol mode when saving files under new names (bug #60585)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29438
diff
changeset
|
2701 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2702 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
|
2703 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2704 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
|
2705 auto_margin_width (); |
29707
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
2706 connect (m_edit_area, SIGNAL (linesChanged ()), |
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
2707 this, SLOT (auto_margin_width ())); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2708 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2709 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2710 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2711 m_edit_area->setMarginLineNumbers (2, false); |
29707
81be7e4ddb0f
revert connection of qscintilla signals back to old syntax (bug #60469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29698
diff
changeset
|
2712 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
|
2713 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2714 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2715 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
|
2716 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
|
2717 m_edit_area->setTabIndents |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2718 (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
|
2719 m_edit_area->setBackspaceUnindents |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2720 (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
|
2721 m_edit_area->setIndentationGuides |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2722 (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
|
2723 m_edit_area->setIndentationsUseTabs |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2724 (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
|
2725 m_edit_area->setIndentationWidth |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2726 (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
|
2727 |
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->setTabWidth |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2729 (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
|
2730 |
27198
dffdabfd0213
fix cursor position for editor smart indent after keyword (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27160
diff
changeset
|
2731 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
|
2732 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
|
2733 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
|
2734 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2735 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
|
2736 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
|
2737 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
|
2738 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
|
2739 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2740 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
|
2741 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2742 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
|
2743 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2744 // long line marker |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2745 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
|
2746 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
|
2747 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2748 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
|
2749 { |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2750 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
|
2751 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
|
2752 else |
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_background) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2755 .toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2756 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
|
2757 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2758 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
|
2759 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2760 } |
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::EdgeNone); |
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 // 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
|
2765 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
|
2766 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
|
2767 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2768 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
|
2769 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
|
2770 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2771 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
|
2772 |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2773 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
|
2774 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
|
2775 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2776 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
|
2777 |
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_comments = |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2779 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
|
2780 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2781 // 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
|
2782 m_highlight_all_occurrences = |
27861
3fada47cc58a
replacing literals for editor prefs by symbolic constants
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27805
diff
changeset
|
2783 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
|
2784 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2785 // 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
|
2786 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
|
2787 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
|
2788 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2789 // 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
|
2790 // 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
|
2791 // handling is required |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2792 bool cursor_blinking; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2793 |
27583
315c35e6037c
use symbolic constants for command widget preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27562
diff
changeset
|
2794 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
|
2795 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
|
2796 else |
27672
a36443e94f8a
simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents:
27671
diff
changeset
|
2797 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
|
2798 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2799 if (cursor_blinking) |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
2800 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
|
2801 else |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
2802 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
|
2803 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2804 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2805 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2806 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2807 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
|
2808 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2809 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
|
2810 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2811 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2812 // 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
|
2813 // 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
|
2814 // 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
|
2815 // 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
|
2816 // goes back to the sender |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2817 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
|
2818 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2819 return close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2820 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2821 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2822 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
|
2823 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2824 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
|
2825 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2826 |
29698
bbf5d4ea616c
fix enabled state of editor save action depending on modification state
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29657
diff
changeset
|
2827 emit editor_state_changed (m_copy_available, m_is_octave_file, |
bbf5d4ea616c
fix enabled state of editor save action depending on modification state
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29657
diff
changeset
|
2828 m_edit_area->isModified ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2829 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2830 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2831 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
|
2832 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2833 if (decision == QMessageBox::Yes) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2834 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2835 // 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
|
2836 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
|
2837 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2838 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2839 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
2840 // 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
|
2841 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
|
2842 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2843 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2844 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2845 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
|
2846 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2847 // 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
|
2848 if (decision == QMessageBox::Save) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2849 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2850 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
|
2851 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
|
2852 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2853 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2854 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2855 // Definitely close the file. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2856 // 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
|
2857 // 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
|
2858 // 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
|
2859 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
|
2860 close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2861 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2862 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2863 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2864 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
|
2865 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2866 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2867 return; |
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 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
|
2870 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2871 if (line > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2872 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2873 marker *dp; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2874 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2875 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
|
2876 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27861
diff
changeset
|
2877 // 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
|
2878 // 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
|
2879 // 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
|
2880 // 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
|
2881 // 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
|
2882 // number match. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2883 int editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2884 marker *dummy; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2885 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
|
2886 if (editor_linenr != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2887 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2888 // 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
|
2889 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
|
2890 marker::debugger_position, editor_linenr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2891 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2892 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2893 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2894 int original_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2895 editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2896 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
|
2897 if (original_linenr >= 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2898 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2899 // 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
|
2900 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
|
2901 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
|
2902 marker::unsure_debugger_position, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2903 linenr_guess); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2904 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2905 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2906 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2907 // 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
|
2908 // 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
|
2909 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
|
2910 marker::unsure_debugger_position); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2911 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2912 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2913 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2914 else |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2915 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2916 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
|
2917 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2918 // 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
|
2919 // 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
|
2920 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
|
2921 { |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2922 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
|
2923 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
|
2924 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
|
2925 } |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
2926 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2927 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2928 connect (this, &file_editor_tab::remove_position_via_debugger_linenr, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2929 dp, &marker::handle_remove_via_original_linenr); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2930 |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2931 connect (this, &file_editor_tab::remove_all_positions, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2932 dp, &marker::handle_remove); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2933 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2934 center_current_line (false); |
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 } |
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 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
|
2939 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2940 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2941 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2942 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2943 if (line > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2944 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
|
2945 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2946 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2947 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
|
2948 const QWidget *ID, int line, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2949 const QString& cond) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2950 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2951 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2952 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2953 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2954 if (line > 0) |
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 (insert) |
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 int editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2959 marker *bp = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2960 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2961 // 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
|
2962 // reuse it if possible |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2963 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
|
2964 if (bp != nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2965 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2966 if ((cond == "") != (bp->get_cond () == "")) |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2967 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2968 // 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
|
2969 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
|
2970 bp = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2971 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2972 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2973 bp->set_cond (cond); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2974 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2975 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2976 if (bp == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2977 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2978 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
|
2979 cond == "" ? marker::breakpoint |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2980 : marker::cond_break, cond); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2981 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2982 connect (this, &file_editor_tab::remove_breakpoint_via_debugger_linenr, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2983 bp, &marker::handle_remove_via_original_linenr); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2984 connect (this, &file_editor_tab::request_remove_breakpoint_via_editor_linenr, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2985 bp, &marker::handle_request_remove_via_editor_linenr); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2986 connect (this, &file_editor_tab::remove_all_breakpoints_signal, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2987 bp, &marker::handle_remove); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2988 connect (this, &file_editor_tab::find_translated_line_number, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2989 bp, &marker::handle_find_translation); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2990 connect (this, &file_editor_tab::find_linenr_just_before, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2991 bp, &marker::handle_find_just_before); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2992 connect (this, &file_editor_tab::report_marker_linenr, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2993 bp, &marker::handle_report_editor_linenr); |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2994 connect (bp, &marker::request_remove, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
2995 this, &file_editor_tab::handle_request_remove_breakpoint); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2996 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2997 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2998 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2999 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
|
3000 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3001 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3002 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3003 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
|
3004 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3005 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
|
3006 = 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
|
3007 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3008 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
|
3009 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3010 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
|
3011 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
|
3012 // compensate for "folding": |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3013 // 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
|
3014 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
|
3015 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3016 // 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
|
3017 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
|
3018 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3019 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
|
3020 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3021 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
|
3022 || 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
|
3023 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3024 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
|
3025 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
|
3026 } |
23237
904c8a356e76
provide the possibility for breaking lines only in comments (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23236
diff
changeset
|
3027 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3028 } |
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 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
|
3031 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3032 // 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
|
3033 m_lines_changed = true; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3034 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3035 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3036 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
|
3037 { |
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
|
3038 // 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
|
3039 // 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
|
3040 // 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
|
3041 // 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
|
3042 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
|
3043 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
|
3044 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
|
3045 { |
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
|
3046 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
|
3047 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
|
3048 } |
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 |
29716
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3050 // Lines changed? Take care of indentation! |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3051 bool do_smart_indent = m_lines_changed && m_is_octave_file |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3052 && (line == m_line+1) && (col < m_col) |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3053 && (m_smart_indent || m_auto_endif); |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3054 m_lines_changed = false; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3055 |
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
|
3056 // Update line and column indicator in the status bar |
29716
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3057 int o_line = m_line; |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3058 update_rowcol_indicator (line, col); |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3059 |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3060 // Do smart indent after update of line indicator for having |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3061 // consistent indicator data |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3062 if (do_smart_indent) |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3063 m_edit_area->smart_indent (m_smart_indent, m_auto_endif, |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3064 o_line, m_ind_char_width); |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3065 } |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3066 |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3067 void file_editor_tab::update_rowcol_indicator (int line, int col) |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
3068 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3069 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
|
3070 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
|
3071 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
|
3072 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
|
3073 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3074 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3075 // 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
|
3076 // 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
|
3077 // 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
|
3078 // 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
|
3079 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
|
3080 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3081 if (m_line_break) |
23181
78f04a9dfeee
allow line breaking in the editor (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23179
diff
changeset
|
3082 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3083 // 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
|
3084 // 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
|
3085 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
|
3086 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
|
3087 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3088 // 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
|
3089 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
|
3090 return; |
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 // 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
|
3093 // 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
|
3094 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
|
3095 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
|
3096 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3097 // 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
|
3098 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
|
3099 if (! style_comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3100 return; // no comment, return |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3101 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3102 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3103 // 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
|
3104 // 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
|
3105 // 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
|
3106 // 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
|
3107 // 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
|
3108 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
|
3109 int c = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3110 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
|
3111 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
|
3112 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
3113 // 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
|
3114 // the current column (col_space). |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3115 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
|
3116 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3117 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
|
3118 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
|
3119 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3120 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3121 // 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
|
3122 // otherwise break at cursor position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3123 int col_newline = col - 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3124 if (c == ' ' || c == '\t') |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3125 col_newline = col_space + 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3126 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3127 // 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
|
3128 // by a line comment string |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3129 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
|
3130 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
|
3131 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
|
3132 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
|
3133 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
|
3134 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3135 // 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
|
3136 // 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
|
3137 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
|
3138 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
|
3139 } |
78f04a9dfeee
allow line breaking in the editor (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23179
diff
changeset
|
3140 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3141 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3142 // 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
|
3143 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
|
3144 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3145 if (! modifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3146 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3147 // double clicks without modifier |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3148 // 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
|
3149 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
|
3150 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3151 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
|
3152 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3153 // 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
|
3154 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
|
3155 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3156 // 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
|
3157 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3158 // get the resulting cursor position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3159 // (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
|
3160 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
|
3161 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
|
3162 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3163 // 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
|
3164 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
|
3165 word = word.trimmed (); |
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 if (! word.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3168 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3169 // 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
|
3170 |
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
|
3171 // 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
|
3172 int first_line = m_edit_area->firstVisibleLine (); |
28301 | 3173 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
|
3174 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3175 // 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
|
3176 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
|
3177 = m_edit_area->findFirst (word, |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3178 false, // no regexp |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3179 true, // case sensitive |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3180 true, // whole words only |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3181 false, // do not wrap |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3182 true, // forward |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29716
diff
changeset
|
3183 0, 0, // from the beginning |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3184 false |
23190
4a2c42792d6c
highlight all occurrences of a selected word in the editor (bug #41470)
Torsten <mttl@mailbox.org>
parents:
23186
diff
changeset
|
3185 #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
|
3186 , true |
23190
4a2c42792d6c
highlight all occurrences of a selected word in the editor (bug #41470)
Torsten <mttl@mailbox.org>
parents:
23186
diff
changeset
|
3187 #endif |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
3188 ); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3189 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3190 // 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
|
3191 int oline, ocol; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3192 int wlen = word.length (); |
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 while (find_result_available) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3195 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3196 // 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
|
3197 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
|
3198 // 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
|
3199 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
|
3200 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3201 // 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
|
3202 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
|
3203 } |
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 // 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
|
3206 // 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
|
3207 m_edit_area->setFirstVisibleLine (first_line); |
28301 | 3208 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
|
3209 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
|
3210 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
|
3211 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
|
3212 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3213 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3214 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3215 } |
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 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
|
3218 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3219 QRegExp rxfun1 ("^[\t ]*function[^=]+=([^\\(]+)\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3220 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
|
3221 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
|
3222 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
|
3223 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
|
3224 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3225 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
|
3226 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3227 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
|
3228 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3229 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
|
3230 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
|
3231 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
|
3232 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
|
3233 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
|
3234 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
|
3235 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
|
3236 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
|
3237 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
|
3238 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
|
3239 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3240 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3241 return QString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3242 } |
18834
0e6f7b5f6556
propose function name as file name when saving a new file (bug #42568)
Torsten <ttl@justmail.de>
parents:
18833
diff
changeset
|
3243 } |
0e6f7b5f6556
propose function name as file name when saving a new file (bug #42568)
Torsten <ttl@justmail.de>
parents:
18833
diff
changeset
|
3244 |
15873
7d300b85ee25
allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents:
15860
diff
changeset
|
3245 #endif |