Mercurial > octave
annotate libgui/src/m-editor/file-editor-tab.cc @ 27471:fd32c1a9b1bd
revamp error handling
In "error" and similar functions that ultimately call it, simply throw
an exception that contains information about the error (message, id,
stack info) instead of printing an error message immediately and then
throwing an exception. The new approach is more flexible and sllows
for some simplification of the error message routines as they no
longer need feedback from the interpreter to know when to display or
buffer messages. It is now the responsibility of any code that
catches an execution exception to determine whether and when to
display error messages.
* quit.h, quit.cc (class frame_info): New class.
(execution_exception::m_err_type, execution_exception::m_id,
execution_exception::m_message, execution_exception::m_stack_info):
New data members.
(class execution_exception): Store error type, message, id, and stack
info. Provide methods setting and accessing data as needed and for
generating stack trace message from stack info.
(execution_exception::m_stack_trace): Delete data member.
execution_exception::set_stack_trace): Delete method.
(execution_exception::set_err_type, execution_exception::err_type,
execution_exception::stack_trace, execution_exception::set_identifier,
execution_exception::identifier, execution_exception::message,
execution_exception::set_stack_info, execution_exception::display):
New methods.
* call-stack.cc, call-stack.h (call_stack::backtrace_info):
New functions.
* oct-parse.yy (maybe_print_last_error_message): Delete function and
all uses.
* pt-eval.h, pt-eval.cc (tree_evaluator::backtrace_info,
tree_evaluator::backtrace_message): New functions.
(tree_evaluator::backtrace): Now const.
(tree_evaluator::visit_unwind_protect_command,
tree_evaluator::do_unwind_protect_cleanup_code,
tree_evaluator::visit_try_catch_command, tree_evaluator::evalin,
tree_evaluator::eval, tree_evaluator::repl, debugger::repl): Save
current exception info.
* interpreter.h, interpreter.cc (interpreter::handle_exception):
New function. Use it in place of direct calls to
error_system::save_exception, error_system::display_exception (or
execution_exception::display) and interpreter::recover_from_exception,
so that we have uniform behavior when responding to an execution
exception.
* error.h, error.cc (error_system::m_buffer_error_messages,
error_system::m_discard_error_messages, error_system::m_in_try_catch):
Delete data members and associated functions. Remove all uses.
Because the error system no longer displays messages immediately,
it does not need to track whether to discard or buffer error messages
or know whether error and warning functions are invoked inside of
try-catch blocks. Everywhere that catches execution_exceptions must
now handle saving the exception state (for lasterror) and displaying
the error message and traceback as needed.
(): Delete functions and all uses.
(error_stack_frame): Delete struct definition.
(verror, vpr_where, pr_where_internal, pr_where, maybe_enter_debugger,
make_execution_exception, vmessage_with_id, message_with_id,
error_system::maybe_enter_debugger, reset_error_handler,
error_system::reset): Delete functions and all uses.
(error_system::try_option): Delete enum and all uses.
(vusage, error_1, error_system::vwarning,
error_system::rethrow_error, error_system::interpreter_try):
Simplify.
(format_message, make_stack_map, error_system::throw_error,
error_system::save_exception, error_system::display_exception):
New functions.
(Ferror): Update for error_system changes.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 04 Oct 2019 01:15:13 -0400 |
parents | 15752c577f6d |
children | 3fec8e9fa2aa |
rev | line source |
---|---|
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
1 /* |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
2 |
26376
00f796120a6d
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
26361
diff
changeset
|
3 Copyright (C) 2011-2019 Jacob Dawid |
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
4 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
5 This file is part of Octave. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
6 |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24495
diff
changeset
|
7 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22743
diff
changeset
|
8 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24495
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22743
diff
changeset
|
10 (at your option) any later version. |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22743
diff
changeset
|
11 |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22743
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22743
diff
changeset
|
13 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22743
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22743
diff
changeset
|
15 GNU General Public License for more details. |
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
16 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24495
diff
changeset
|
19 <https://www.gnu.org/licenses/>. |
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
20 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
21 */ |
14676
35512b788af2
Editor can now handle multiple files in tabs.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff
changeset
|
22 |
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
|
23 //! @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
|
24 //! |
1d6c940a1b37
doc: Improve Doxygen documentation for some files in libgui.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
23996
diff
changeset
|
25 //! 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
|
26 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21651
diff
changeset
|
27 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21213
diff
changeset
|
28 # include "config.h" |
15286
ae9079bbc627
Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents:
15257
diff
changeset
|
29 #endif |
ae9079bbc627
Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents:
15257
diff
changeset
|
30 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21651
diff
changeset
|
31 #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
|
32 |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
33 #include <QApplication> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
34 #include <QCheckBox> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
35 #include <QDateTime> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
36 #include <QDesktopServices> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
37 #include <QDialogButtonBox> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
38 #include <QFileDialog> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
39 #include <QInputDialog> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
40 #include <QLabel> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
41 #include <QMessageBox> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
42 #include <QPrintDialog> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
43 #include <QPushButton> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
44 #include <QStyle> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
45 #include <QTextBlock> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
46 #include <QTextCodec> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
47 #include <QTextStream> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
48 #include <QVBoxLayout> |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
49 #if defined (HAVE_QSCI_QSCILEXEROCTAVE_H) |
21213
f7d1050b9b53
maint: Clean up various usages of #ifdef.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
50 # 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
|
51 # 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
|
52 #elif defined (HAVE_QSCI_QSCILEXERMATLAB_H) |
21213
f7d1050b9b53
maint: Clean up various usages of #ifdef.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
53 # 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
|
54 # 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
|
55 #endif |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
56 #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
|
57 #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
|
58 #include <Qsci/qscilexercpp.h> |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
59 #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
|
60 #include <Qsci/qscilexerperl.h> |
16440
aaf024ac8015
Add editor print menu/toolbutton implementation
John Donoghue <john.donoghue@ieee.org>
parents:
16437
diff
changeset
|
61 #include <Qsci/qsciprinter.h> |
25443
2fa7cd178c4a
new class for miscellaneous interpreter settings
John W. Eaton <jwe@octave.org>
parents:
25440
diff
changeset
|
62 |
15402
7f423c6111c6
refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents:
15389
diff
changeset
|
63 #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
|
64 #include "file-editor.h" |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
65 #include "gui-preferences.h" |
21007
0a09c3cae800
New marker class for modified file breakpoint and position maintenance.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
20995
diff
changeset
|
66 #include "marker.h" |
19348
c364b9a44580
provide an editor lexer for text or unknown files (bug #43572)
Torsten <ttl@justmail.de>
parents:
19328
diff
changeset
|
67 #include "octave-txt-lexer.h" |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27405
diff
changeset
|
68 #include "resource-manager.h" |
16547
3cd80afc3509
improve debugging with the GUI
John W. Eaton <jwe@octave.org>
parents:
16520
diff
changeset
|
69 |
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
|
70 #include "cmd-edit.h" |
21310
fc6a9bd59094
backout changeset e8c3590da9ff
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
71 #include "file-ops.h" |
26331
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
72 #include "uniconv-wrappers.h" |
21310
fc6a9bd59094
backout changeset e8c3590da9ff
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
73 |
23137
334119c390b3
move bp_table class to separate file
John W. Eaton <jwe@octave.org>
parents:
23084
diff
changeset
|
74 #include "bp-table.h" |
27405
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
75 #include "builtin-defun-decls.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
76 #include "interpreter-private.h" |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
77 #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
|
78 #include "load-path.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
79 #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
|
80 #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
|
81 #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
|
82 #include "symtab.h" |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21148
diff
changeset
|
83 #include "unwind-prot.h" |
23553
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
84 #include "utils.h" |
14723784b9f2
don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents:
23490
diff
changeset
|
85 #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
|
86 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
87 namespace octave |
14676
35512b788af2
Editor can now handle multiple files in tabs.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff
changeset
|
88 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
89 bool file_editor_tab::m_cancelled = false; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
90 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
91 //! 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
|
92 //! 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
|
93 //! 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
|
94 //! sections of text. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
95 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
96 // 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
|
97 // messages don't affect grandparents. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
98 file_editor_tab::file_editor_tab (const QString& directory_arg) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
99 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
100 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
|
101 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
|
102 m_lines_changed = false; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
103 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
104 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
|
105 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
106 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
|
107 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
|
108 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
109 m_edit_area = new octave_qscintilla (this); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
110 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
|
111 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
|
112 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
113 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
|
114 m_bp_conditions.clear (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
115 m_bp_restore_count = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
116 |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
117 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
|
118 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
|
119 |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
120 // Initialize last modification date to now |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
121 m_last_modified = QDateTime::currentDateTimeUtc(); |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
122 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
123 connect (m_edit_area, SIGNAL (cursorPositionChanged (int, int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
124 this, SLOT (handle_cursor_moved (int,int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
125 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
126 connect (m_edit_area, SIGNAL (SCN_CHARADDED (int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
127 this, SLOT (handle_char_added (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
128 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
129 connect (m_edit_area, SIGNAL (SCN_DOUBLECLICK (int, int, int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
130 this, SLOT (handle_double_click (int, int, int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
131 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
132 connect (m_edit_area, SIGNAL (linesChanged ()), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
133 this, SLOT (handle_lines_changed ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
134 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
135 connect (m_edit_area, SIGNAL (context_menu_edit_signal (const QString&)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
136 this, SLOT (handle_context_menu_edit (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
137 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
138 // 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
|
139 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
|
140 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
141 // 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
|
142 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
|
143 QFontMetrics fm = m_row_indicator->fontMetrics (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
144 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
|
145 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
|
146 m_col_indicator = new QLabel ("", this); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
147 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
|
148 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
|
149 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
|
150 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
|
151 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
|
152 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
|
153 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
154 // status bar: encoding |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
155 QLabel *enc_label = new QLabel (tr ("encoding:"), this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
156 m_enc_indicator = new QLabel ("",this); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
157 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
|
158 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
|
159 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
|
160 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
161 // status bar: eol mode |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
162 QLabel *eol_label = new QLabel (tr ("eol:"), this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
163 m_eol_indicator = new QLabel ("",this); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
164 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
|
165 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
|
166 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
|
167 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
168 // Leave the find dialog box out of memory until requested. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
169 m_find_dialog = nullptr; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
170 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
171 // symbols |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
172 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
|
173 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
|
174 m_edit_area->markerDefine (QsciScintilla::RightTriangle, marker::bookmark); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
175 m_edit_area->setMarkerBackgroundColor (QColor (0,0,232), marker::bookmark); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
176 m_edit_area->markerDefine (QsciScintilla::Circle, marker::breakpoint); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
177 m_edit_area->setMarkerBackgroundColor (QColor (192,0,0), marker::breakpoint); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
178 m_edit_area->markerDefine (QsciScintilla::Circle, marker::cond_break); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
179 m_edit_area->setMarkerBackgroundColor (QColor (255,127,0), marker::cond_break); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
180 m_edit_area->markerDefine (QsciScintilla::RightArrow, marker::debugger_position); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
181 m_edit_area->setMarkerBackgroundColor (QColor (255,255,0), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
182 marker::debugger_position); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
183 m_edit_area->markerDefine (QsciScintilla::RightArrow, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
184 marker::unsure_debugger_position); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
185 m_edit_area->setMarkerBackgroundColor (QColor (192,192,192), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
186 marker::unsure_debugger_position); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
187 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
188 connect (m_edit_area, SIGNAL (marginClicked (int, int, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
189 Qt::KeyboardModifiers)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
190 this, SLOT (handle_margin_clicked (int, int, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
191 Qt::KeyboardModifiers))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
192 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
193 connect (m_edit_area, SIGNAL (context_menu_break_condition_signal (int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
194 this, SLOT (handle_context_menu_break_condition (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
195 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
196 // 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
|
197 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
|
198 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
|
199 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
|
200 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
201 // 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
|
202 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
|
203 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
|
204 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
|
205 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
|
206 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
207 m_edit_area->setUtf8 (true); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
208 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
209 // 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
|
210 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
|
211 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
212 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
|
213 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
|
214 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
|
215 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
|
216 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
|
217 setLayout (edit_area_layout); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
218 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
219 // connect modified signal |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
220 connect (m_edit_area, SIGNAL (modificationChanged (bool)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
221 this, SLOT (update_window_title (bool))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
222 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
223 connect (m_edit_area, SIGNAL (copyAvailable (bool)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
224 this, SLOT (handle_copy_available (bool))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
225 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
226 connect (&m_file_system_watcher, SIGNAL (fileChanged (const QString&)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
227 this, SLOT (file_has_changed (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
228 |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
229 connect (this, SIGNAL (maybe_remove_next (int)), |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
230 this, SLOT (handle_remove_next (int))); |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
231 |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
232 connect (this, SIGNAL (dbstop_if (const QString&, int, const QString&)), |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
233 this, |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
234 SLOT (handle_dbstop_if (const QString&, int, const QString&))); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
235 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
236 connect (this, SIGNAL (request_add_breakpoint (int, const QString&)), |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
237 this, SLOT (handle_request_add_breakpoint (int, const QString&))); |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
238 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
239 connect (this, SIGNAL (api_entries_added (void)), |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
240 this, SLOT (handle_api_entries_added (void))); |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
241 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
242 connect (this, SIGNAL (confirm_dbquit_and_save_signal (const QString&, const QString&, bool, bool)), |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
243 this, SLOT (confirm_dbquit_and_save (const QString&, const QString&, bool, bool))); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
244 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
245 connect (this, SIGNAL (do_save_file_signal (const QString&, bool, bool)), |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
246 this, SLOT (do_save_file (const QString&, bool, bool))); |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
247 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
248 QSettings *settings = resource_manager::get_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
249 if (settings) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
250 notice_settings (settings, true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
251 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
252 setFocusProxy (m_edit_area); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
253 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
254 // encoding, not updated with the settings |
27271
a4416cd6bb4f
Append name of actual encoding used if "SYSTEM" is selected.
Markus Mützel <markus.muetzel@gmx.de>
parents:
27263
diff
changeset
|
255 QString locale_enc_name = |
a4416cd6bb4f
Append name of actual encoding used if "SYSTEM" is selected.
Markus Mützel <markus.muetzel@gmx.de>
parents:
27263
diff
changeset
|
256 QTextCodec::codecForLocale ()->name ().toUpper ().prepend ("SYSTEM (").append (")"); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
257 m_encoding = settings->value ("editor/default_encoding", locale_enc_name) |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
258 .toString (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
259 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
|
260 // 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
|
261 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
|
262 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
263 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
264 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
|
265 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
266 // Tell all connected markers to self-destruct. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
267 emit remove_all_breakpoints (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
268 emit remove_all_positions (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
269 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
270 // Destroy items attached to 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
|
271 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
|
272 if (lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
273 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
274 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
|
275 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
|
276 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
277 if (m_find_dialog) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
278 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
279 delete m_find_dialog; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
280 m_find_dialog = nullptr; |
24716
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 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
283 // Destroy 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
|
284 delete m_edit_area; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
285 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
286 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
287 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
|
288 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
289 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
|
290 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
291 |
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_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
|
293 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
|
294 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
|
295 set_modified (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
296 } |
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 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
|
299 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
300 m_cancelled = false; // prevent unwanted interaction of previous |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
301 // exits of octave which were canceled by the user |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
302 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
303 if (check_file_modified () == QMessageBox::Cancel) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
304 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
305 // ignore close event if file is not saved and user cancels |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
306 // closing this window |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
307 e->ignore (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
308 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
309 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
310 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
311 e->accept (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
312 emit tab_remove_request (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
313 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
314 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
315 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
316 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
|
317 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
318 m_ced = dir; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
319 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
320 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
321 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
|
322 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
323 // search for a subfunction in actual file (this is done at first because |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
324 // octave finds this function before other with same name in the search path |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
325 QRegExp rxfun1 ("^[\t ]*function[^=]+=[\t ]*" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
326 + word_at_cursor + "[\t ]*\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
327 QRegExp rxfun2 ("^[\t ]*function[\t ]+" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
328 + word_at_cursor + "[\t ]*\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
329 QRegExp rxfun3 ("^[\t ]*function[\t ]+" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
330 + word_at_cursor + "[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
331 QRegExp rxfun4 ("^[\t ]*function[^=]+=[\t ]*" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
332 + word_at_cursor + "[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
333 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
334 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
|
335 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
|
336 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
337 int line; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
338 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
|
339 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
340 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
|
341 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
342 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
|
343 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
344 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
|
345 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
346 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
|
347 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
348 } |
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 > -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
351 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
352 // 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
|
353 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
|
354 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
|
355 // 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
|
356 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
|
357 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
|
358 return; |
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 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
361 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
|
362 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
363 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
364 // 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
|
365 // breakpoint. The default condition is (a) the existing condition if there |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
366 // is already a breakpoint (b) any selected text, or (c) empty |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
367 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
|
368 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
369 // 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
|
370 // 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
|
371 if (! unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
372 return; |
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 QString cond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
375 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
376 // 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
|
377 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
|
378 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
379 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
|
380 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
|
381 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
|
382 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
383 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
|
384 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
385 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
386 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
|
387 m_bp_conditions.clear (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
388 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
389 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
390 // 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
|
391 // 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
|
392 // 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
|
393 // 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
|
394 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
|
395 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
396 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
|
397 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
|
398 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
399 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
|
400 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
401 |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
402 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
|
403 } |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
404 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
405 // Display dialog in GUI thread to get condtition, then emit |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
406 // 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
|
407 // 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
|
408 // 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
|
409 // new dialog. |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
410 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
411 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
|
412 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
|
413 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
414 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
|
415 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
|
416 = 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
|
417 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
|
418 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
419 // 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
|
420 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
421 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
|
422 { |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
423 emit interpreter_event |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
424 ([this, line, new_cond] (interpreter& interp) |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
425 { |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
426 // INTERPRETER THREAD |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
427 |
27471 | 428 error_system& es = interp.get_error_system (); |
429 | |
430 unwind_protect frame; | |
431 | |
432 // Prevent an error in the evaluation here from sending us | |
433 // into the debugger. | |
434 | |
435 es.interpreter_try (frame); | |
436 | |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
437 bool eval_error = false; |
27471 | 438 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
|
439 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
440 try |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
441 { |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
442 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
|
443 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
|
444 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
445 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
|
446 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
447 // 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
|
448 // breakpoint. |
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 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
|
451 } |
27471 | 452 catch (const execution_exception& e) |
453 { | |
454 interpreter::recover_from_exception (); | |
455 | |
456 msg = e.message (); | |
457 eval_error = true; | |
458 } | |
459 catch (const interrupt_exception&) | |
460 { | |
461 interpreter::recover_from_exception (); | |
462 | |
463 msg = "evaluation interrupted"; | |
464 eval_error = true; | |
465 } | |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
466 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
467 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
|
468 { |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
469 // 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
|
470 // 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
|
471 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
472 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
|
473 + 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
|
474 + "\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
|
475 |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
476 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
|
477 } |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
478 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
479 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
480 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
481 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
482 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
|
483 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
484 // 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
|
485 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
|
486 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
|
487 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
|
488 if (! fileName.isEmpty () && QFile::exists (fileName)) |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
489 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
490 m_file_system_watcher.addPath (fileName); |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
491 m_last_modified = QFileInfo (fileName).lastModified ().toUTC (); |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
492 } |
24716
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 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
|
495 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
|
496 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
497 m_file_name = fileName; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
498 update_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
499 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
500 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
501 // update the file editor with current editing directory |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
502 emit editor_state_changed (m_copy_available, m_is_octave_file); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
503 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
504 // 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
|
505 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
|
506 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
507 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
508 // 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
|
509 // 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
|
510 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
|
511 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
512 if (file.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
513 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
514 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
|
515 return false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
516 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
517 return true; |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
520 return true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
521 } |
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 // 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
|
524 // 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
|
525 // 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
|
526 // 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
|
527 // 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
|
528 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
|
529 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
530 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
|
531 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
|
532 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
533 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
|
534 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
|
535 "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
|
536 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
|
537 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
538 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
|
539 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
|
540 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
541 retval = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
542 } |
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 return retval; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
545 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
546 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
547 // 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
|
548 // 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
|
549 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
|
550 Qt::KeyboardModifiers state) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
551 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
552 if (margin == 1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
553 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
554 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
|
555 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
556 if (state & Qt::ControlModifier) |
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 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
|
559 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
|
560 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
561 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
|
562 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
563 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
564 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
565 if (markers_mask & ((1 << marker::breakpoint) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
566 | (1 << marker::cond_break))) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
567 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
|
568 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
569 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
570 if (unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
571 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
|
572 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
573 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
574 } |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
577 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
578 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
|
579 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
580 // Create a new lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
581 QsciLexer *lexer = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
582 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
583 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
|
584 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
585 // 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
|
586 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
|
587 || 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
|
588 { |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
589 #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
|
590 lexer = new QsciLexerOctave (); |
16662
72665c4ae25b
allow build to continue without QScintilla lexer for Octave
John W. Eaton <jwe@octave.org>
parents:
16646
diff
changeset
|
591 #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
|
592 lexer = new QsciLexerMatlab (); |
19348
c364b9a44580
provide an editor lexer for text or unknown files (bug #43572)
Torsten <ttl@justmail.de>
parents:
19328
diff
changeset
|
593 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
594 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
|
595 #endif |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
596 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
|
597 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
598 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
599 if (! lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
600 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
601 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
|
602 || 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
|
603 || 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
|
604 || 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
|
605 || 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
|
606 || 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
|
607 || 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
|
608 || 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
|
609 || 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
|
610 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
611 lexer = new QsciLexerCPP (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
612 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
613 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
|
614 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
615 lexer = new QsciLexerPerl (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
616 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
617 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
|
618 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
619 lexer = new QsciLexerBatch (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
620 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
621 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
|
622 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
623 lexer = new QsciLexerDiff (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
624 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
625 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
|
626 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
627 lexer = new QsciLexerBash (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
628 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
629 else if (! valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
630 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
631 // new, no 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
|
632 #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
|
633 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
|
634 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
|
635 #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
|
636 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
|
637 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
|
638 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
639 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
|
640 #endif |
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 else |
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 // other or no extension |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
645 lexer = new octave_txt_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
646 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
647 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
648 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
649 // 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
|
650 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
|
651 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
652 // 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
|
653 // 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
|
654 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
|
655 || 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
|
656 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
657 // Delete and set new lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
658 if (old_lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
659 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
|
660 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
|
661 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
662 // 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
|
663 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
|
664 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
665 connect (this, SIGNAL (request_add_octave_apis (const QStringList&)), |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
666 this, SLOT (handle_add_octave_apis (const QStringList&))); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
667 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
668 // 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
|
669 update_lexer_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
670 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
671 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
672 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
673 // 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
|
674 // use the old, existing one. |
0249ba4c9589
Fix static analyzer detected V668 issues (bug #55347).
Andreas Weber <octave@josoansi.de>
parents:
26346
diff
changeset
|
675 delete lexer; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
676 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
677 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
678 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
679 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
680 // Update settings, which are lexer related and have to be updated |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
681 // when a) the lexer changes or b) the settings have changed. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
682 void file_editor_tab::update_lexer_settings (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
683 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
684 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
|
685 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
686 QSettings *settings = resource_manager::get_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
687 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
688 if (m_lexer_apis) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
689 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
690 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
|
691 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
692 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
|
693 |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
694 // Get path to prepared api info (cache). Temporarily set the |
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
695 // 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
|
696 // 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
|
697 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
|
698 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
|
699 |
24827
1e0718c1867c
eliminate most Qt version checks
John W. Eaton <jwe@octave.org>
parents:
24738
diff
changeset
|
700 #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
|
701 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
|
702 = QStandardPaths::writableLocation (QStandardPaths::CacheLocation); |
22250
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22181
diff
changeset
|
703 #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
|
704 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
|
705 = QDesktopServices::storageLocation (QDesktopServices::CacheLocation); |
22250
2fd4f1a3f4a8
allow building with Qt5 (bug #40252)
John W. Eaton <jwe@octave.org>
parents:
22181
diff
changeset
|
706 #endif |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
707 |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
708 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
|
709 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
710 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
|
711 = 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
|
712 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
713 // 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
|
714 bool octave_builtins |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
715 = settings->value ("editor/codeCompletion_octave_builtins", true).toBool (); |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
716 bool octave_functions |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
717 = settings->value ("editor/codeCompletion_octave_functions", true).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
718 |
26927
df9fe0026f73
use user cache location for keyword lists for auto completion (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26873
diff
changeset
|
719 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
|
720 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
721 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
|
722 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
723 // Keywords and Builtins do not change, these informations can be |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
724 // 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
|
725 // 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
|
726 // 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
|
727 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
728 // 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
|
729 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
|
730 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
731 // Buitlins are only used if the user settings say so |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
732 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
|
733 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
|
734 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
735 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
|
736 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
|
737 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
738 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
|
739 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
740 // 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
|
741 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
|
742 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
743 // 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
|
744 update_apis = ! apis_file.exists (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
745 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
746 if (octave_functions) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
747 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
748 // Functions may change frequently. Update the apis data |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
749 // 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
|
750 // 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
|
751 QDateTime apis_time = apis_file.lastModified (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
752 if (QDateTime::currentDateTime () > apis_time.addSecs (180)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
753 update_apis = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
754 } |
23489
1b017f9ee3f1
more frequent preparation of data for autocompletion
Torsten <mttl@mailbox.org>
parents:
23457
diff
changeset
|
755 |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
756 } |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
757 else |
18833
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
758 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
759 // 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
|
760 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
|
761 } |
6504a1932637
auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents:
18767
diff
changeset
|
762 |
26841
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
763 // 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
|
764 // 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
|
765 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
|
766 |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
767 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
|
768 if (! apis_usable) |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
769 { |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
770 QDir ().mkpath (QFileInfo (f).absolutePath ()); |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
771 apis_usable = f.open (QIODevice::WriteOnly); |
b6dfe7d192bc
fix creating keyword files for editor autocompletion (bug #55835)
Torsten <mttl@mailbox.org>
parents:
26554
diff
changeset
|
772 } |
26522
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
773 if (apis_usable) |
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
774 f.close (); |
d6a4237a26b4
fix crash of gui when too many files are opened (bug #49736)
Torsten <mttl@mailbox.org>
parents:
26518
diff
changeset
|
775 |
27277
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
776 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
|
777 && (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
|
778 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
779 // 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
|
780 // 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
|
781 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
782 // create raw apis info |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
783 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
784 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
|
785 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
786 emit interpreter_event |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
787 ([this, octave_functions, octave_builtins] (interpreter& interp) |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
788 { |
27405
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
789 // INTERPRETER THREAD |
646efbb5f407
avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents:
27403
diff
changeset
|
790 |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
791 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
|
792 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
793 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
|
794 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
|
795 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
|
796 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
797 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
|
798 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
|
799 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
800 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
801 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
|
802 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
803 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
|
804 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
805 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
|
806 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
807 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
|
808 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
|
809 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
810 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
811 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
812 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
|
813 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
814 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
|
815 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
816 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
|
817 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
|
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 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
|
820 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
|
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 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
|
823 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
|
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 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
826 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
|
827 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
828 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
829 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
830 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
831 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
|
832 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
833 // 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
|
834 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
835 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
|
836 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
837 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
|
838 = 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
|
839 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
840 for (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
|
841 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
|
842 } |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
843 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
844 emit api_entries_added (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
845 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
846 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
847 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
848 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
849 lexer->readSettings (*settings); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
850 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
851 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
|
852 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
|
853 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
854 // 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
|
855 QColor bg = lexer->paper (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
856 QColor fg = lexer->color (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
857 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
858 int bh, bs, bv, fh, fs, fv, h, s, v; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
859 bg.getHsv (&bh,&bs,&bv); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
860 fg.getHsv (&fh,&fs,&fv); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
861 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
862 // margin colors |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
863 h = bh; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
864 s = bs/2; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
865 v = bv + (fv - bv)/5; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
866 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
867 bg.setHsv (h,s,v); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
868 m_edit_area->setEdgeColor (bg); |
24716
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 v = bv + (fv - bv)/8; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
871 bg.setHsv (h,s,v); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
872 v = bv + (fv - bv)/4; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
873 fg.setHsv (h,s,v); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
874 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
875 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
|
876 m_edit_area->setMarginsForegroundColor (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
|
877 m_edit_area->setMarginsBackgroundColor (bg); |
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->setFoldMarginColors (bg,fg); |
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 // 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
|
881 // 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
|
882 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
|
883 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
|
884 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
885 // fix line number width with respect to the font size of the lexer and |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
886 // set the line numbers font depending on the lexers font |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
887 if (settings->value ("editor/showLineNumbers", true).toBool ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
888 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
889 // Line numbers width |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
890 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
891 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
892 // Line numbers font |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
893 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
|
894 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
|
895 font_size = font_size |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
896 + settings->value ("editor/line_numbers_size", 0).toInt (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
897 if (font_size < 4) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
898 font_size = 4; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
899 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
|
900 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
901 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
|
902 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
903 else |
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->setMarginWidth (2,0); |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
907 // 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
|
908 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
|
909 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
910 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
|
911 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
|
912 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
913 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
|
914 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
915 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
916 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
|
917 { |
27401
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
918 // disconnect slot for saving prepared info if already connected |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
919 disconnect (m_lexer_apis, SIGNAL (apiPreparationFinished ()), |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
920 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
|
921 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
922 // 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
|
923 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
|
924 { |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
925 // path exists, apis info can be saved there |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
926 connect (m_lexer_apis, SIGNAL (apiPreparationFinished ()), |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
927 this, SLOT (save_apis_info ())); |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
928 } |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
929 |
1f595192b5a5
attempt to avoid threading issues when updating lexer in file editor tab
John W. Eaton <jwe@octave.org>
parents:
27399
diff
changeset
|
930 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
|
931 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
932 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
933 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
|
934 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
935 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
|
936 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
937 |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
938 // Slot for editors signal is its toplevel state has changed |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
939 void file_editor_tab::handle_toplevel_changed (bool) |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
940 { |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
941 // The find dialog has to be re-created since making the editor |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
942 // floating or docked obviously changes the parent/child relation |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
943 // of the find dialog |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
944 if (m_find_dialog == nullptr) |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
945 return; |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
946 else |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
947 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
948 if (m_find_dialog->isVisible ()) |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
949 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
950 m_find_dialog->save_data (&m_find_dlg_data); // Save current data |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
951 delete m_find_dialog; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
952 m_find_dialog = nullptr; |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
953 |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
954 find_create (); // Create new dialog |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
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_find_dialog->restore_data (&m_find_dlg_data); // Restore data |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
957 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
958 m_edit_area->setFocus (); |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
959 } |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
960 } |
24716
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
963 // 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
|
964 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
|
965 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
966 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
967 return; |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
968 m_edit_area->setFocus (); |
24716
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
971 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
|
972 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
973 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
974 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
975 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
976 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
|
977 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
978 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
979 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
|
980 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
981 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
982 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
983 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
984 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
|
985 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
986 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
987 void file_editor_tab::check_modified_file (void) |
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 if (m_cancelled) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
990 return; |
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 if (check_file_modified () == QMessageBox::Cancel) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
993 m_cancelled = true; |
24716
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
996 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
|
997 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
998 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
999 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1000 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1001 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
|
1002 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1003 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1004 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
|
1005 bool remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1006 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1007 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1008 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1009 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1010 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
|
1011 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1012 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1013 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
|
1014 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1015 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1016 return; |
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 save_file_as (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1019 } |
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 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
|
1022 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1023 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1024 return; |
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 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
|
1027 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1028 QPrintDialog printDlg (printer, this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1029 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1030 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
|
1031 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
|
1032 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1033 delete printer; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1034 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1035 |
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
|
1036 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
|
1037 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1038 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1039 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1040 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1041 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
|
1042 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1043 save_file (m_file_name); // save file dialog |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1044 if (! valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1045 return; // still invalid filename: "save as" was cancelled |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1046 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1047 |
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
|
1048 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
|
1049 { |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1050 // Get current first breakpoint and set breakpoint waiting for |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1051 // the returned line number. Store whether to remove this breakpoint |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1052 // afterwards. |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1053 int first_bp_line |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1054 = 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
|
1055 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1056 // 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
|
1057 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
|
1058 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
|
1059 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
1060 // 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
|
1061 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
|
1062 } |
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
|
1063 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1064 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
|
1065 emit run_file_signal (info); |
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::context_run (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 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1073 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
|
1074 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1075 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1076 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
|
1077 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1078 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1079 return; |
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 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
|
1082 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
|
1083 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1084 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
|
1085 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
|
1086 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1087 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
|
1088 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1089 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1090 // 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
|
1091 // after the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1092 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
|
1093 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1094 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1095 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1096 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1097 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
|
1098 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
|
1099 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1100 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
|
1101 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1102 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
|
1103 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1104 // Wrap. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1105 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
|
1106 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
|
1107 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1108 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
|
1109 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1110 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1111 // 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
|
1112 // before the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1113 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
|
1114 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1115 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1116 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1117 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1118 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
|
1119 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
|
1120 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1121 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
|
1122 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1123 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
|
1124 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1125 // 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
|
1126 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
|
1127 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
|
1128 (1 << marker::bookmark)); |
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->setCursorPosition (prevline, 0); |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1133 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
|
1134 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1135 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
|
1136 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1137 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1138 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
|
1139 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1140 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1141 file_editor_tab::bp_info::bp_info (const QString& fname, int l, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1142 const QString& cond) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1143 : line (l), file (fname.toStdString ()), condition (cond.toStdString ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1144 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1145 QFileInfo file_info (fname); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1146 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1147 QString q_dir = file_info.absolutePath (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1148 QString q_function_name = file_info.fileName (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1149 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1150 // We have to cut off the suffix, because octave appends it. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1151 q_function_name.chop (file_info.suffix ().length () + 1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1152 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1153 dir = q_dir.toStdString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1154 function_name = q_function_name.toStdString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1155 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1156 // Is the last component of DIR @foo? If so, strip it and prepend it |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1157 // to the name of the function. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1158 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1159 size_t pos = dir.rfind (sys::file_ops::dir_sep_chars ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1160 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1161 if (pos != std::string::npos && pos < dir.length () - 1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1162 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1163 if (dir[pos+1] == '@') |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1164 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1165 function_name = sys::file_ops::concat (dir.substr (pos+1), function_name); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1166 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1167 dir = dir.substr (0, pos); |
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 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1170 } |
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 void file_editor_tab::handle_request_add_breakpoint (int line, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1173 const QString& condition) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1174 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1175 bp_info info (m_file_name, line, condition); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1176 |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1177 add_breakpoint_event (info); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1178 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1179 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1180 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
|
1181 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1182 bp_info info (m_file_name, line); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1183 |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1184 emit interpreter_event |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1185 ([info] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1186 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1187 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1188 |
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
|
1189 load_path& lp = interp.get_load_path (); |
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1190 |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1191 bp_table::intmap line_info; |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1192 line_info[0] = info.line; |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1193 |
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
|
1194 if (lp.contains_file_in_dir (info.file, info.dir)) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1195 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1196 tree_evaluator& tw = interp.get_evaluator (); |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1197 |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1198 bp_table& bptab = tw.get_bp_table (); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1199 |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1200 bptab.remove_breakpoint (info.function_name, line_info); |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1201 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1202 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1203 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1204 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1205 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
|
1206 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1207 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1208 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1209 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1210 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
|
1211 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
|
1212 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1213 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
|
1214 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
|
1215 else |
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 if (unchanged_or_saved ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1218 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
|
1219 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1220 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1221 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1222 // 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
|
1223 // after the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1224 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
|
1225 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1226 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1227 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1228 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1229 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
|
1230 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
|
1231 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1232 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
|
1233 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1234 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
|
1235 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
|
1236 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1237 // 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
|
1238 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
|
1239 nextline = nextcond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1240 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1241 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
|
1242 } |
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 // 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
|
1245 // before the current line. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1246 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
|
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 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
|
1252 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
|
1253 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1254 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
|
1255 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1256 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
|
1257 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
|
1258 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1259 // 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
|
1260 if (prevcond != -1 && prevcond > prevline) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1261 prevline = prevcond; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1262 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1263 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
|
1264 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1265 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1266 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
|
1267 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1268 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1269 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1270 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1271 bp_info info (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1272 |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1273 emit interpreter_event |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1274 ([info] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1275 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1276 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1277 |
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
|
1278 load_path& lp = interp.get_load_path (); |
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1279 |
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
|
1280 if (lp.contains_file_in_dir (info.file, info.dir)) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1281 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1282 tree_evaluator& tw = interp.get_evaluator (); |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1283 |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1284 bp_table& bptab = tw.get_bp_table (); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1285 |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1286 bptab.remove_all_breakpoints_in_file (info.function_name, true); |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1287 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1288 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1289 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1290 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1291 void file_editor_tab::scintilla_command (const QWidget *ID, unsigned int sci_msg) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1292 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1293 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1294 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1295 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1296 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
|
1297 } |
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 void file_editor_tab::comment_selected_text (const QWidget *ID, bool input_str) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1300 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1301 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1302 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1303 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1304 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
|
1305 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1306 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1307 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
|
1308 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1309 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1310 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1311 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1312 do_comment_selected_text (false); |
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::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
|
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1320 do_indent_selected_text (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1321 } |
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 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
|
1324 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1325 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1326 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1327 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1328 do_indent_selected_text (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1329 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1330 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1331 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
|
1332 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1333 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1334 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1335 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1336 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
|
1337 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1338 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1339 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
|
1340 QsciScintilla::EolMode eol_mode) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1341 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1342 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1343 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1344 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1345 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
|
1346 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
|
1347 update_eol_indicator (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1348 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1349 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1350 void file_editor_tab::zoom_in (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1351 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1352 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1353 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1354 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1355 m_edit_area->zoomIn (1); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1356 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1357 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1358 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1359 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
|
1360 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1361 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1362 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1363 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1364 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
|
1365 auto_margin_width (); |
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 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
|
1369 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1370 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1371 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1372 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1373 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
|
1374 auto_margin_width (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1375 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1376 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1377 void file_editor_tab::handle_find_dialog_finished (int) |
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 // Find dialog is going to hide. Save location of window for |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1380 // when it is reshown. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1381 m_find_dlg_data.geometry = m_find_dialog->geometry (); |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1382 m_find_dlg_data.is_visible = false; |
24716
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 |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1385 // Slot for initially creating and showing the find dialog |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1386 void file_editor_tab::find (const QWidget *ID, QList<QAction *> fetab_actions) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1387 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1388 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1389 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1390 |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1391 m_find_dlg_data.actions = fetab_actions.mid (0,2); |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1392 |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1393 // Create the dialog |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1394 find_create (); |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1395 |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1396 // Since find_create shows the dialog without activating the widget |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1397 // (which is reuqired in other cases) do this manually here |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1398 m_find_dialog->activateWindow (); |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1399 |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1400 // Initiate search text from possible selection and save the initial |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1401 // data from the dialog on the defined structure |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1402 m_find_dialog->init_search_text (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1403 m_find_dialog->save_data (&m_find_dlg_data); |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1404 } |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1405 |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1406 void file_editor_tab::add_breakpoint_event (const bp_info& info) |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1407 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1408 emit interpreter_event |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1409 ([this, info] (interpreter& interp) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1410 { |
27393
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1411 // INTERPRETER THREAD |
efe72866b483
mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents:
27378
diff
changeset
|
1412 |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1413 // 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
|
1414 // 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
|
1415 |
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
|
1416 load_path& lp = interp.get_load_path (); |
930c0fbc003b
move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents:
27393
diff
changeset
|
1417 |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1418 bp_table::intmap line_info; |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1419 line_info[0] = info.line; |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1420 |
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
|
1421 if (lp.contains_file_in_dir (info.file, info.dir)) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1422 { |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1423 tree_evaluator& tw = interp.get_evaluator (); |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1424 |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
1425 bp_table& bptab = tw.get_bp_table (); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1426 |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1427 bp_table::intmap bpmap |
27398
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1428 = bptab.add_breakpoint (info.function_name, "", line_info, |
db22b63b9c59
attempt to fix threading issues when setting conditional breakpoints in GUI
John W. Eaton <jwe@octave.org>
parents:
27397
diff
changeset
|
1429 info.condition); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1430 |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1431 if (! bpmap.empty ()) |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1432 { |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1433 bp_table::intmap::iterator bp_it = bpmap.begin (); |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1434 |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1435 int remove_line = bp_it->second; |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1436 |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1437 emit maybe_remove_next (remove_line); |
27247
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1438 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1439 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1440 }); |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1441 } |
9e5a825bb966
replace more explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents:
27209
diff
changeset
|
1442 |
27397
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1443 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
|
1444 { |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1445 // 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
|
1446 if (m_breakpoint_info.remove_next) |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1447 { |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1448 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
|
1449 m_breakpoint_info.remove_next = false; |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1450 } |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1451 } |
8132797b4a6a
use signal/slot connection in file-editor-tab for thread safety
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
1452 |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1453 // This methos creates the find dialog in way that is at first suitable |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1454 // for re-creating it after the toplevel of the editor has changed. |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1455 // The find dialog is initially creatied, activated and shown with find () |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1456 void file_editor_tab::find_create () |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1457 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1458 // The find_dialog feature doesn't need a slot for return info. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1459 // Rather than Qt::DeleteOnClose, let the find feature hang about |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1460 // in case it contains useful information like previous searches |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1461 // and so on. Perhaps one find dialog for the whole editor is |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1462 // better, but individual find dialogs has the nice feature of |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1463 // retaining position per file editor tabs, which can be undocked. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1464 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1465 if (! m_find_dialog) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1466 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1467 m_find_dialog = new find_dialog (m_edit_area, |
27089
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1468 m_find_dlg_data.actions, |
9326c2258e60
fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27053
diff
changeset
|
1469 this); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1470 connect (m_find_dialog, SIGNAL (finished (int)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1471 this, SLOT (handle_find_dialog_finished (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1472 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1473 connect (this, SIGNAL (request_find_next ()), |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1474 m_find_dialog, SLOT (find_next ())); |
24716
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 connect (this, SIGNAL (request_find_previous ()), |
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_find_dialog, SLOT (find_prev ())); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1478 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1479 m_find_dialog->setWindowModality (Qt::NonModal); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1480 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1481 else if (! m_find_dialog->isVisible ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1482 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1483 m_find_dialog->setGeometry (m_find_dlg_data.geometry); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1484 QPoint p = m_find_dialog->pos (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1485 m_find_dialog->move (p.x ()+10, p.y ()+10); |
24716
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 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1488 m_find_dialog->setAttribute(Qt::WA_ShowWithoutActivating); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1489 m_find_dialog->show (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1490 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1491 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1492 void file_editor_tab::find_next (const QWidget *ID) |
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 (ID == this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1495 emit request_find_next (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1496 } |
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 void file_editor_tab::find_previous (const QWidget *ID) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1499 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1500 if (ID == this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1501 emit request_find_previous (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1502 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1503 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1504 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
|
1505 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1506 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1507 return; |
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 (m_bp_restore_count > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1510 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1511 // 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
|
1512 // 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
|
1513 m_bp_restore_count--; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1514 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1515 } |
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 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
|
1518 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1519 bool ok = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1520 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
|
1521 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
|
1522 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
|
1523 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
|
1524 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
|
1525 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
|
1526 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
|
1527 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1528 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
|
1529 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
|
1530 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1531 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
|
1532 } |
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 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
|
1535 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1536 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1537 return; |
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 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
|
1540 m_edit_area->selectToMatchingBrace (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1541 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1542 m_edit_area->moveToMatchingBrace (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1543 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1544 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1545 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
|
1546 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1547 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1548 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1549 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1550 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
|
1551 switch (s) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1552 { |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1553 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
|
1554 m_edit_area->autoCompleteFromAll (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1555 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1556 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1557 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
|
1558 m_edit_area->autoCompleteFromAPIs (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1559 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1560 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1561 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
|
1562 m_edit_area->autoCompleteFromDocument (); |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1563 break; |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1564 |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1565 case QsciScintilla::AcsNone: |
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
1566 break; |
24716
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 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1569 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1570 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
|
1571 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1572 // FIXME: |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1573 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
|
1574 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1575 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
|
1576 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1577 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
|
1578 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
|
1579 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1580 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
|
1581 lineTo--; // stop at line above |
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 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
|
1584 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1585 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
|
1586 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
|
1587 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1588 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
|
1589 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1590 //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
|
1591 m_edit_area->setSelection (lineFrom, 0, lineTo, |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1592 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
|
1593 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1594 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1595 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1596 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
|
1597 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
|
1598 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
|
1599 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
|
1600 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1601 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
|
1602 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1603 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1604 m_edit_area->endUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1605 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1606 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1607 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
|
1608 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1609 m_edit_area->beginUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1610 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1611 int lineFrom, lineTo; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1612 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1613 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
|
1614 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1615 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
|
1616 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
|
1617 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1618 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
|
1619 lineTo--; // stop at line above |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1620 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1621 else |
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 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
|
1624 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
|
1625 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1626 lineTo = lineFrom; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1627 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1628 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1629 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
|
1630 |
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::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
|
1635 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1636 QRegExp rxc; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1637 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
|
1638 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
|
1639 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
|
1640 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1641 if (comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1642 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1643 if (input_str) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1644 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1645 bool ok; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1646 QSettings *settings = resource_manager::get_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1647 |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1648 used_comment_str |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1649 = 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
|
1650 tr ("Comment string to use:\n"), |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1651 QLineEdit::Normal, |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
1652 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
|
1653 &ok); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1654 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1655 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
|
1656 return; // No input, do nothing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1657 else |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25566
diff
changeset
|
1658 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
|
1659 } |
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 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1662 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1663 // Uncommenting (several strings possible) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1664 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1665 // Sort strings according their length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1666 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
|
1667 bool inserted; |
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 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
|
1670 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1671 inserted = false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1672 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
|
1673 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1674 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
|
1675 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1676 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
|
1677 inserted = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1678 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1679 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1680 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1681 if (! inserted) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1682 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
|
1683 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1684 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1685 // Create regular expression |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1686 QString regexp; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1687 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
|
1688 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1689 if (i > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1690 regexp = regexp + QString ("|"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1691 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
|
1692 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1693 rxc = QRegExp (ws + "(" + regexp + ")"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1694 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1695 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1696 // Do the commenting/uncommenting |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1697 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
|
1698 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
|
1699 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1700 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
|
1701 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1702 int lineFrom, lineTo, colFrom, colTo; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1703 int change_col_from = 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1704 int change_col_to = 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1705 bool removed; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1706 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1707 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
|
1708 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1709 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
|
1710 lineTo--; // stop at line above |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1711 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1712 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
|
1713 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1714 if (comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1715 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1716 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
|
1717 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1718 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1719 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1720 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
|
1721 if ((removed = line.contains (rxc))) |
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 len = rxc.matchedLength (); // complete length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1724 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
|
1725 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
|
1726 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
|
1727 m_edit_area->removeSelectedText (); |
24716
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1730 // 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
|
1731 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
|
1732 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
|
1733 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
|
1734 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
|
1735 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1736 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1737 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1738 // update the selection area |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1739 if (comment) |
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 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
|
1742 if (colTo > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1743 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
|
1744 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1745 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
|
1746 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1747 else |
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 if (colTo == 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1750 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
|
1751 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
|
1752 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
|
1753 } |
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 // 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
|
1756 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
|
1757 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1758 else |
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 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
|
1761 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
|
1762 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
|
1763 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
|
1764 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1765 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1766 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
|
1767 if (line.contains (rxc)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1768 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1769 len = rxc.matchedLength (); // complete length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1770 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
|
1771 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
|
1772 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
|
1773 m_edit_area->removeSelectedText (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1774 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1775 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1776 } |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1777 m_edit_area->endUndoAction (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1778 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1779 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1780 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
|
1781 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1782 QString title (""); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1783 QString tooltip (""); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1784 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1785 if (! valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1786 title = tr ("<unnamed>"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1787 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1788 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1789 if (m_long_title) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1790 title = m_file_name; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1791 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1792 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1793 QFileInfo file (m_file_name); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1794 title = file.fileName (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1795 tooltip = m_file_name; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1796 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1797 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1798 |
27053
1bdfd2b523c9
use tab icon for indicating a modified editor file (bug #56158)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27037
diff
changeset
|
1799 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
|
1800 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1801 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1802 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
|
1803 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1804 m_copy_available = enableCopy; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1805 emit editor_state_changed (m_copy_available, m_is_octave_file); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1806 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1807 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1808 // 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
|
1809 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
|
1810 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1811 dlg->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1812 if (modal) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1813 dlg->exec (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1814 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1815 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1816 dlg->setWindowModality (Qt::NonModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1817 dlg->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1818 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1819 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1820 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1821 int file_editor_tab::check_file_modified (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1822 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1823 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
|
1824 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
|
1825 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1826 // 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
|
1827 // 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
|
1828 // 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
|
1829 QMessageBox::StandardButtons buttons = QMessageBox::Save | |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
1830 QMessageBox::Discard | |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
1831 QMessageBox::Cancel; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1832 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1833 // 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
|
1834 // 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
|
1835 // 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
|
1836 QString available_actions = |
19714
21015ca26566
Restructure shutdown flow and behavior for improved robustness
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
19697
diff
changeset
|
1837 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
|
1838 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1839 QString file; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1840 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
|
1841 file = m_file_name; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1842 else |
17973
6925dca34807
fix saving unnamed editor files when closing octave (bug #40637)
Torsten <ttl@justmail.de>
parents:
17962
diff
changeset
|
1843 file = tr ("<unnamed>"); |
6925dca34807
fix saving unnamed editor files when closing octave (bug #40637)
Torsten <ttl@justmail.de>
parents:
17962
diff
changeset
|
1844 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1845 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1846 = 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
|
1847 tr ("The file\n\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1848 " %1\n\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1849 "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
|
1850 "%2"). |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1851 arg (file). arg (available_actions), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1852 buttons, qobject_cast<QWidget *> (parent ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1853 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1854 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
|
1855 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
|
1856 connect (msgBox, SIGNAL (finished (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1857 this, SLOT (handle_file_modified_answer (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1858 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1859 show_dialog (msgBox, true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1860 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1861 if (m_cancelled) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1862 return QMessageBox::Cancel; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1863 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1864 return decision; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1865 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1866 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1867 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1868 // Nothing was modified. Leave tab present in case user |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1869 // decides to cancel some point further along. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1870 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1871 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1872 return decision; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1873 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1874 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1875 void file_editor_tab::handle_file_modified_answer (int decision) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1876 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1877 if (decision == QMessageBox::Save) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1878 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1879 // Save file, but do not remove from editor. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1880 save_file (m_file_name, false, false); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1881 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1882 else if (decision == QMessageBox::Discard) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1883 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1884 // User doesn't want to save, leave tab and remove subsequently. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1885 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1886 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1887 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1888 // 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
|
1889 m_edit_area->setReadOnly (false); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1890 m_cancelled = true; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1891 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1892 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1893 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1894 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
|
1895 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1896 m_edit_area->setModified (modified); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1897 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1898 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1899 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
|
1900 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1901 // 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
|
1902 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
|
1903 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1904 // if we are in this slot and the list of breakpoint is not empty, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1905 // 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
|
1906 // 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
|
1907 // canceled this closing late on. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1908 check_restore_breakpoints (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1909 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1910 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1911 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
|
1912 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1913 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
|
1914 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1915 // 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
|
1916 // 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
|
1917 remove_all_breakpoints (this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1918 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1919 // 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
|
1920 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
|
1921 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
|
1922 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
|
1923 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
|
1924 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1925 // 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
|
1926 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
|
1927 m_bp_conditions.clear (); |
24716
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 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1930 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1931 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
|
1932 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1933 // get the absolute path |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1934 QFileInfo file_info = QFileInfo (fileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1935 QString file_to_load; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1936 if (file_info.exists ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1937 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
|
1938 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1939 file_to_load = fileName; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1940 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
|
1941 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
|
1942 return file.errorString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1943 |
26131
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1944 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
|
1945 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
|
1946 { |
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1947 // 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
|
1948 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
|
1949 col = m_col; |
26131
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1950 } |
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
1951 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1952 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
|
1953 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1954 // read the file binary, decoding later |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1955 const QByteArray text_data = file.readAll (); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1956 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1957 // decode |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1958 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
|
1959 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
|
1960 if (codec == nullptr) |
a7be718a9dd3
validate editor file codec derived from name (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26131
diff
changeset
|
1961 codec = QTextCodec::codecForLocale (); |
a7be718a9dd3
validate editor file codec derived from name (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26131
diff
changeset
|
1962 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1963 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
|
1964 text_data.size(), &st); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1965 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1966 // Decoding with invalid characters? |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1967 if (st.invalidChars > 0) |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1968 { |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
1969 // 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
|
1970 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
|
1971 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1972 // 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
|
1973 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
|
1974 "%1\n" |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1975 "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
|
1976 "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
|
1977 "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
|
1978 .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
|
1979 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
|
1980 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
|
1981 msg_box->setText (msg); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1982 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
|
1983 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
|
1984 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
|
1985 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
|
1986 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1987 connect (msg_box, SIGNAL (buttonClicked (QAbstractButton *)), |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1988 this, SLOT (handle_decode_warning_answer (QAbstractButton *))); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1989 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1990 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
|
1991 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
|
1992 msg_box->show (); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1993 } |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
1994 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
1995 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
|
1996 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
|
1997 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1998 QApplication::restoreOverrideCursor (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
1999 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2000 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
|
2001 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
|
2002 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
|
2003 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
|
2004 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2005 update_eol_indicator (); |
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 m_edit_area->setCursorPosition (line, col); |
26131
22edc076543e
restore line/column when reloading externally changed editor files (bug #54961)
Torsten <mttl@mailbox.org>
parents:
26119
diff
changeset
|
2008 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2009 // FIXME: (BREAKPOINTS) At this point it would be nice to put any set |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2010 // breakpoints on the margin. In order to do this, somehow the |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2011 // "dbstatus" command needs to be accessed. All it would require is a |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2012 // routine that does "res = feval ("dbstatus") and signals that result |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2013 // to some slot. |
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 // See patch #8016 for a general way to get Octave results from |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2016 // commands processed in the background. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2017 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2018 /* |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
2019 connect (event_manager, SIGNAL (fileSelected (QObject *, const QString&, const octave_value_list&)), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2020 this, SLOT (handle_feval_result (QObject *, const QString&, const octave_value_list&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2021 connect (this, SIGNAL (evaluate_octave_command (const QString&)), |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
2022 event_manager, SLOT (queue_octave_command (const QString&))); |
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 emit evaluate_octave_command ("dbstatus"); |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2027 return QString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2028 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2029 |
25883
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
2030 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
|
2031 { |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
2032 QString txt = btn->text (); |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
2033 |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
2034 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
|
2035 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2036 // 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
|
2037 close (); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2038 return; |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2039 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2040 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2041 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
|
2042 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2043 // 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
|
2044 QDialog dlg; |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2045 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
|
2046 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2047 QLabel *text |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2048 = 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
|
2049 "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
|
2050 "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
|
2051 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2052 QComboBox *enc_combo = new QComboBox (); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2053 resource_manager::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
|
2054 m_new_encoding = enc_combo->currentText (); |
25895
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2055 connect (enc_combo, SIGNAL (currentTextChanged (const QString&)), |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2056 this , SLOT (handle_current_enc_changed (const QString&))); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2057 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2058 QDialogButtonBox *buttons |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2059 = 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
|
2060 Qt::Horizontal); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2061 connect (buttons, SIGNAL (accepted ()), &dlg, SLOT (accept ())); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2062 connect (buttons, SIGNAL (rejected ()), &dlg, SLOT (reject ())); |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2063 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2064 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
|
2065 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
|
2066 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
|
2067 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
|
2068 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
|
2069 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
|
2070 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2071 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
|
2072 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2073 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
|
2074 { |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2075 // 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
|
2076 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
|
2077 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
|
2078 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
|
2079 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2080 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2081 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2082 // 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
|
2083 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
|
2084 } |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2085 |
bb0c58796275
allow to change the encoding when editor detects decoding errors (bug #54607)
Torsten <mttl@mailbox.org>
parents:
25883
diff
changeset
|
2086 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
|
2087 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2088 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
|
2089 } |
cfdc768b661c
allow native dialogs for remaining file open/save dialogs (bug #5
Torsten <mttl@mailbox.org>
parents:
25811
diff
changeset
|
2090 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2091 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
|
2092 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2093 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
|
2094 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2095 QByteArray eol_lf = QByteArray (1,0x0a); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2096 QByteArray eol_cr = QByteArray (1,0x0d); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2097 QByteArray eol_crlf = eol_cr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2098 eol_crlf.append (eol_lf); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2099 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2100 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
|
2101 int count_lf = text.count (eol_lf) - count_crlf; // isolated lf |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2102 int count_cr = text.count (eol_cr) - count_crlf; // isolated cr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2103 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2104 // get default from OS or from settings |
19248
54943eb0ce37
reorder eol modes in the editor settings
Torsten <ttl@justmail.de>
parents:
19247
diff
changeset
|
2105 #if defined (Q_OS_WIN32) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2106 int os_eol_mode = QsciScintilla::EolWindows; |
19248
54943eb0ce37
reorder eol modes in the editor settings
Torsten <ttl@justmail.de>
parents:
19247
diff
changeset
|
2107 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2108 int os_eol_mode = QsciScintilla::EolUnix; |
19248
54943eb0ce37
reorder eol modes in the editor settings
Torsten <ttl@justmail.de>
parents:
19247
diff
changeset
|
2109 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2110 QSettings *settings = resource_manager::get_settings (); |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
2111 QsciScintilla::EolMode eol_mode |
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27272
diff
changeset
|
2112 = static_cast<QsciScintilla::EolMode> (settings->value ("editor/default_eol_mode",os_eol_mode).toInt ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2113 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2114 int count_max = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2115 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2116 if (count_crlf > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2117 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2118 eol_mode = QsciScintilla::EolWindows; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2119 count_max = count_crlf; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2120 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2121 if (count_lf > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2122 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2123 eol_mode = QsciScintilla::EolUnix; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2124 count_max = count_lf; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2125 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2126 if (count_cr > count_max) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2127 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2128 eol_mode = QsciScintilla::EolMac; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2129 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2130 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2131 return eol_mode; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2132 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2133 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2134 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
|
2135 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2136 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
|
2137 { |
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
|
2138 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
|
2139 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
|
2140 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
|
2141 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
|
2142 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
|
2143 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
|
2144 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
|
2145 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
|
2146 break; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2147 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2148 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2149 |
25923
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2150 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
|
2151 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2152 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
|
2153 return; |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2154 |
27255
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2155 // Create and queue the command object. |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2156 |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
2157 emit interpreter_event |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
2158 ([this] (interpreter& interp) |
27255
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2159 { |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2160 // INTERPRETER THREAD |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2161 |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2162 octave_value_list argout = Fdbstatus (interp, ovl (), 1); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2163 |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2164 connect (this, SIGNAL (update_breakpoints_signal (const octave_value_list&)), |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2165 this, SLOT (update_breakpoints_handler (const octave_value_list&)), |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2166 Qt::QueuedConnection); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2167 |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2168 emit update_breakpoints_signal (argout); |
420611c61298
eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents:
27247
diff
changeset
|
2169 }); |
25923
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2170 } |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2171 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2172 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
|
2173 { |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2174 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
|
2175 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
|
2176 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2177 Cell file = dbg.contents ("file"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2178 Cell line = dbg.contents ("line"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2179 Cell cond = dbg.contents ("cond"); |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2180 |
a7511a1489b8
call octave functions with return value from GUI (bug #47585)
Torsten <mttl@mailbox.org>
parents:
25914
diff
changeset
|
2181 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
|
2182 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2183 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
|
2184 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
|
2185 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
|
2186 } |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2189 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
|
2190 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2191 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
|
2192 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2193 QSettings *settings = resource_manager::get_settings (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2194 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2195 // 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
|
2196 // missing in the settings |
19245
f3c4b48f3c53
add a preference for the default eol mode of new files (bug #43334)
Torsten <ttl@justmail.de>
parents:
19244
diff
changeset
|
2197 #if defined (Q_OS_WIN32) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2198 int eol_mode = QsciScintilla::EolWindows; |
19245
f3c4b48f3c53
add a preference for the default eol mode of new files (bug #43334)
Torsten <ttl@justmail.de>
parents:
19244
diff
changeset
|
2199 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2200 int eol_mode = QsciScintilla::EolUnix; |
19245
f3c4b48f3c53
add a preference for the default eol mode of new files (bug #43334)
Torsten <ttl@justmail.de>
parents:
19244
diff
changeset
|
2201 #endif |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2202 m_edit_area->setEolMode (static_cast<QsciScintilla::EolMode> (settings->value ("editor/default_eol_mode",eol_mode).toInt ())); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2203 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2204 update_eol_indicator (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2205 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2206 update_lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2207 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2208 m_edit_area->setText (commands); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2209 m_edit_area->setModified (false); // new 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
|
2210 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2211 |
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
|
2212 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
|
2213 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
|
2214 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
|
2215 bool restore_breakpoints) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2216 { |
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 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
|
2218 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
|
2219 "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
|
2220 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
|
2221 |
27967cb3dea5
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 if (ans == QMessageBox::Save) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2223 { |
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
|
2224 emit interpreter_event |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2225 ([this, file_to_save, base_name, remove_on_success, restore_breakpoints] (interpreter& interp) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2226 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2227 // 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
|
2228 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2229 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
|
2230 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2231 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
|
2232 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2233 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
|
2234 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2235 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
|
2236 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2237 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
|
2238 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2239 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
|
2240 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2241 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
|
2242 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
|
2243 }); |
24716
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 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2246 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2247 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
|
2248 bool remove_on_success, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2249 bool restore_breakpoints) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2250 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2251 // 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
|
2252 // should be performed. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2253 if (! valid_file_name (saveFileName)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2254 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2255 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
|
2256 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2257 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2258 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2259 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
|
2260 |
1e3c42fbf4d3
Don't overwrite content of non-encodable .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26376
diff
changeset
|
2261 // 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
|
2262 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
|
2263 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
|
2264 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
|
2265 |
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
|
2266 // 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
|
2267 // 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
|
2268 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2269 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
|
2270 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2271 // 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
|
2272 QFileInfo file_info = QFileInfo (saveFileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2273 QString file_to_save; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2274 if (file_info.exists ()) |
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 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
|
2277 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
|
2278 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2279 emit interpreter_event |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2280 ([this, file_to_save, base_name, remove_on_success, restore_breakpoints] (interpreter& interp) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2281 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2282 // 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
|
2283 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2284 // 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
|
2285 // 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
|
2286 // 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
|
2287 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2288 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
|
2289 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2290 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
|
2291 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2292 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
|
2293 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2294 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
|
2295 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2296 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
|
2297 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
|
2298 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2299 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
|
2300 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2301 catch (const execution_exception& e) |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2302 { |
27471 | 2303 interpreter::recover_from_exception (); |
2304 | |
27403
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2305 // 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
|
2306 // 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
|
2307 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2308 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2309 // 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
|
2310 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
|
2311 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2312 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
|
2313 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
|
2314 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
|
2315 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2316 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2317 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
|
2318 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2319 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
|
2320 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2321 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
|
2322 != 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
|
2323 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2324 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
|
2325 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
|
2326 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
|
2327 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2328 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2329 // 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
|
2330 // 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
|
2331 // 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
|
2332 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2333 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
|
2334 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2335 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
|
2336 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2337 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
|
2338 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2339 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
|
2340 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2341 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
|
2342 { |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2343 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
|
2344 (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
|
2345 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
|
2346 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
|
2347 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2348 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2349 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2350 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2351 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
|
2352 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2353 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
|
2354 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
|
2355 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2356 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2357 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
|
2358 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
|
2359 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
|
2360 } |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2361 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2362 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
|
2363 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
|
2364 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
|
2365 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2366 QFile file (file_to_save); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2367 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2368 // 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
|
2369 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
|
2370 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
|
2371 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
|
2372 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2373 // open the file for writing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2374 if (! file.open (QIODevice::WriteOnly)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2375 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2376 // 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
|
2377 // watched previously. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2378 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
|
2379 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
|
2380 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2381 // 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
|
2382 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2383 = new QMessageBox (QMessageBox::Critical, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2384 tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2385 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
|
2386 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
|
2387 QMessageBox::Ok, nullptr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2388 show_dialog (msgBox, false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2389 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2390 return; |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2393 // 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
|
2394 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2395 // write the file |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2396 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
|
2397 |
27967cb3dea5
attempt to avoid threading issues when saving a file in the file editor tab
John W. Eaton <jwe@octave.org>
parents:
27401
diff
changeset
|
2398 // 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
|
2399 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
|
2400 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
|
2401 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
|
2402 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2403 out.setCodec (codec); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2404 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2405 QApplication::setOverrideCursor (Qt::WaitCursor); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2406 out << m_edit_area->text (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2407 out.flush (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2408 QApplication::restoreOverrideCursor (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2409 file.flush (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2410 file.close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2411 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2412 // 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
|
2413 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
|
2414 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
|
2415 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2416 // 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
|
2417 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
|
2418 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2419 // 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
|
2420 update_window_title (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2421 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2422 // files 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
|
2423 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
|
2424 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
|
2425 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2426 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2427 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2428 emit tab_remove_request (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2429 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
|
2430 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2431 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2432 // 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
|
2433 // 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
|
2434 // 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
|
2435 if (restore_breakpoints) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2436 check_restore_breakpoints (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2437 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2438 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2439 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
|
2440 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2441 // 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
|
2442 // 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
|
2443 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2444 // 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
|
2445 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
|
2446 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2447 // 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
|
2448 // can't be a parent. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2449 QFileDialog *fileDialog; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2450 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2451 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2452 // 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
|
2453 // 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
|
2454 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
|
2455 fileDialog = new QFileDialog (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2456 } |
18482
3a509de8e791
automatic completion list as user preference (bug #41469)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
2457 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2458 fileDialog = new QFileDialog (this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2459 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2460 // 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
|
2461 QStringList filters; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2462 filters << tr ("Octave Files (*.m)") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2463 << tr ("All Files (*)"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2464 fileDialog->setNameFilters (filters); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2465 fileDialog->setDefaultSuffix ("m"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2466 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2467 if (valid_file_name ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2468 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2469 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
|
2470 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
|
2471 if (file_info.suffix () != "m") |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2472 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2473 // 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
|
2474 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
|
2475 fileDialog->setDefaultSuffix (""); // no default suffix |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2476 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2477 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2478 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2479 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2480 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
|
2481 fileDialog->setDirectory (m_ced); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2482 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2483 // propose a name corresponding to the function name |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2484 QString fname = get_function_name (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2485 if (! fname.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2486 fileDialog->selectFile (fname + ".m"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2487 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2488 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2489 fileDialog->setAcceptMode (QFileDialog::AcceptSave); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2490 fileDialog->setViewMode (QFileDialog::Detail); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2491 |
26096
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2492 // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved. |
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2493 if (! resource_manager::get_settings ()->value ("use_native_file_dialogs", |
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2494 true).toBool ()) |
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2495 fileDialog->setOption(QFileDialog::DontUseNativeDialog); |
1002b49ce7b3
Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
26065
diff
changeset
|
2496 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2497 connect (fileDialog, SIGNAL (filterSelected (const QString&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2498 this, SLOT (handle_save_as_filter_selected (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2499 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2500 if (remove_on_success) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2501 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2502 connect (fileDialog, SIGNAL (fileSelected (const QString&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2503 this, SLOT (handle_save_file_as_answer_close (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2504 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2505 connect (fileDialog, SIGNAL (rejected ()), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2506 this, SLOT (handle_save_file_as_answer_cancel ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2507 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2508 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2509 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2510 connect (fileDialog, SIGNAL (fileSelected (const QString&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2511 this, SLOT (handle_save_file_as_answer (const QString&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2512 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2513 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2514 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
|
2515 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2516 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2517 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
|
2518 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2519 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
|
2520 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2521 QRegExp rx ("\\*\\.([^ ^\\)]*)[ \\)]"); // regexp for suffix in filter |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2522 int index = rx.indexIn (filter,0); // get first suffix in filter |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2523 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2524 if (index > -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2525 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
|
2526 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2527 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
|
2528 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2529 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2530 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
|
2531 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2532 QFileInfo file = QFileInfo (file_name); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2533 QString base_name = file.baseName (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2534 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2535 if ((file.suffix () == "m") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2536 && (! valid_identifier (base_name.toStdString ()))) |
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 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
|
2539 tr ("\"%1\"\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2540 "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
|
2541 "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
|
2542 "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
|
2543 "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
|
2544 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
|
2545 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2546 if (ans == QMessageBox::Yes) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2547 return true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2548 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2549 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2550 return false; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2551 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2552 |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2553 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
|
2554 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2555 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
|
2556 |
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
|
2557 // "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
|
2558 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
|
2559 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
|
2560 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2561 if (! codec) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2562 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2563 QMessageBox::critical (nullptr, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2564 tr ("Octave Editor"), |
25062 | 2565 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
|
2566 "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
|
2567 "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
|
2568 |
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2569 return nullptr; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2570 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2571 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2572 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
|
2573 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
|
2574 |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2575 // 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
|
2576 // 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
|
2577 // implementations. |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2578 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
|
2579 { |
26346
fd890481c408
file-editor-tab.cc: Use function available since Qt4.2.
Markus Mützel <markus.muetzel@gmx.de>
parents:
26331
diff
changeset
|
2580 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
|
2581 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
|
2582 (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
|
2583 |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2584 size_t length; |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2585 char *res_str = |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2586 octave_u32_conv_to_encoding_strict (m_encoding.toStdString ().c_str (), |
26429
ba8493779dc8
file-editor-tab.cc: Revert accidental change in 1e3c42fbf4d3.
Markus Mützel <markus.muetzel@gmx.de>
parents:
26394
diff
changeset
|
2587 src, u32_str.size (), &length); |
26331
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2588 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
|
2589 { |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2590 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
|
2591 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
|
2592 } |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2593 else |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2594 ::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
|
2595 } |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2596 |
5f10217b562d
Use gnulib to check if encoding is possible (bug #55306).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26291
diff
changeset
|
2597 if (! can_encode) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2598 { |
26394
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2599 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
|
2600 = 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
|
2601 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
|
2602 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
|
2603 "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
|
2604 "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
|
2605 "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
|
2606 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
|
2607 QMessageBox::Cancel); |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2608 |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2609 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
|
2610 return codec; |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2611 else |
6323979ee312
Optionally, ignore data loss when saving .m file (bug #55364).
Markus Mützel <markus.muetzel@gmx.de>
parents:
26393
diff
changeset
|
2612 return nullptr; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2613 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2614 |
26291
f73bcf1d0b5a
make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents:
26172
diff
changeset
|
2615 return codec; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2616 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2617 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2618 void file_editor_tab::handle_save_file_as_answer (const QString& saveFileName) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2619 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2620 if (m_save_as_desired_eol != m_edit_area->eolMode ()) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2621 convert_eol (this,m_save_as_desired_eol); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2622 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2623 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
|
2624 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2625 save_file (saveFileName); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2626 } |
16702
553cfdd5d660
make white space visibility in the editor configurable
Torsten <ttl@justmail.de>
parents:
16701
diff
changeset
|
2627 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2628 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2629 // 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
|
2630 if (check_valid_identifier (saveFileName)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2631 save_file_as (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2632 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2633 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
|
2634 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2635 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2636 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2637 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
|
2638 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2639 if (m_save_as_desired_eol != m_edit_area->eolMode ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2640 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2641 m_edit_area->setReadOnly (false); // was set to read-only in save_file_as |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2642 convert_eol (this,m_save_as_desired_eol); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2643 m_edit_area->setReadOnly (true); // restore read-only mode |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2644 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2645 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2646 // 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
|
2647 // 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
|
2648 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2649 // 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
|
2650 if (check_valid_identifier (saveFileName)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2651 save_file_as (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2652 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2653 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
|
2654 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2655 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2656 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
|
2657 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2658 // 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
|
2659 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
|
2660 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2661 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2662 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
|
2663 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2664 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
|
2665 |
25741
a3f2b06c599a
fix broken file closing when deleted/renamed in file browser
Torsten <mttl@mailbox.org>
parents:
25646
diff
changeset
|
2666 if (file_exists && ! do_close) |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2667 { |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2668 // Test if file is really modified or if just the timezone has |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2669 // 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
|
2670 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
|
2671 |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2672 if (modified <= m_last_modified) |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2673 return; |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2674 |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2675 m_last_modified = modified; |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2676 } |
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2677 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2678 // 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
|
2679 // 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
|
2680 // 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
|
2681 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
|
2682 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
|
2683 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
|
2684 |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2685 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
|
2686 { |
25369
c89fa0989e7b
prevent notifications on externally changed editor files (bug 53539)
Torsten <mttl@mailbox.org>
parents:
25336
diff
changeset
|
2687 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2688 // 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
|
2689 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
|
2690 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
|
2691 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2692 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2693 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2694 // 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
|
2695 // 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
|
2696 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
|
2697 m_edit_area->setFocus (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2698 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2699 // 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
|
2700 // 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
|
2701 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2702 = new QMessageBox (QMessageBox::Warning, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2703 tr ("Octave Editor"), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2704 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
|
2705 arg (m_file_name), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2706 QMessageBox::Yes | QMessageBox::No, this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2707 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2708 connect (msgBox, SIGNAL (finished (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2709 this, SLOT (handle_file_reload_answer (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2710 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2711 msgBox->setWindowModality (Qt::WindowModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2712 msgBox->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2713 msgBox->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2714 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2715 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2716 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2717 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2718 // 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
|
2719 // 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
|
2720 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
|
2721 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2722 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
|
2723 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2724 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2725 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2726 // 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
|
2727 // 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
|
2728 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
|
2729 m_edit_area->setFocus (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2730 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2731 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
|
2732 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
|
2733 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
|
2734 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2735 // Create a WindowModal message. The file editor tab can't be made |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2736 // 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
|
2737 // 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
|
2738 QMessageBox *msgBox |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2739 = 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
|
2740 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
|
2741 "%1\n" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2742 "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
|
2743 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
|
2744 QMessageBox::Save | QMessageBox::Close, nullptr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2745 |
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->setReadOnly (true); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2747 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2748 connect (msgBox, SIGNAL (finished (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2749 this, SLOT (handle_file_resave_answer (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2750 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2751 msgBox->setWindowModality (Qt::WindowModal); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2752 msgBox->setAttribute (Qt::WA_DeleteOnClose); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2753 msgBox->show (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2754 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2755 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2756 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2757 void file_editor_tab::notice_settings (const QSettings *settings, bool init) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2758 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2759 // QSettings pointer is checked before emitting. |
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 if (! init) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2762 update_lexer_settings (); |
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 // code folding |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2765 if (settings->value ("editor/code_folding",true).toBool ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2766 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2767 m_edit_area->setMarginType (3, QsciScintilla::SymbolMargin); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2768 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
|
2769 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2770 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2771 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2772 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
|
2773 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2774 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2775 // status bar |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2776 if (settings->value ("editor/show_edit_status_bar",true).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2777 m_status_bar->show (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2778 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2779 m_status_bar->hide (); |
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 current line color |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2782 QVariant default_var = QColor (240, 240, 240); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2783 QColor setting_color = settings->value ("editor/highlight_current_line_color", |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2784 default_var).value<QColor> (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2785 m_edit_area->setCaretLineBackgroundColor (setting_color); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2786 m_edit_area->setCaretLineVisible |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2787 (settings->value ("editor/highlightCurrentLine", true).toBool ()); |
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 bool match_keywords = settings->value |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2790 ("editor/codeCompletion_keywords",true).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2791 bool match_document = settings->value |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
2792 ("editor/codeCompletion_document",true).toBool (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2793 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2794 QsciScintilla::AutoCompletionSource source = QsciScintilla::AcsNone; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2795 if (match_keywords) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2796 if (match_document) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2797 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
|
2798 else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2799 source = QsciScintilla::AcsAPIs; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2800 else if (match_document) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2801 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
|
2802 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
|
2803 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2804 m_edit_area->setAutoCompletionReplaceWord |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2805 (settings->value ("editor/codeCompletion_replace",false).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2806 m_edit_area->setAutoCompletionCaseSensitivity |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2807 (settings->value ("editor/codeCompletion_case",true).toBool ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2808 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2809 if (settings->value ("editor/codeCompletion", true).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2810 m_edit_area->setAutoCompletionThreshold |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2811 (settings->value ("editor/codeCompletion_threshold",2).toInt ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2812 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2813 m_edit_area->setAutoCompletionThreshold (-1); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2814 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2815 if (settings->value ("editor/show_white_space",false).toBool ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2816 if (settings->value ("editor/show_white_space_indent",false).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2817 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
|
2818 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2819 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
|
2820 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2821 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
|
2822 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2823 m_edit_area->setEolVisibility (settings->value ("editor/show_eol_chars",false).toBool ()); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2824 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2825 if (settings->value ("editor/showLineNumbers", true).toBool ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2826 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2827 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
|
2828 auto_margin_width (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2829 connect (m_edit_area, SIGNAL (linesChanged ()), |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2830 this, SLOT (auto_margin_width ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2831 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2832 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2833 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2834 m_edit_area->setMarginLineNumbers (2, false); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2835 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
|
2836 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2837 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2838 m_smart_indent = settings->value ("editor/auto_indent",true).toBool (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2839 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
|
2840 m_edit_area->setTabIndents |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2841 (settings->value ("editor/tab_indents_line",false).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2842 m_edit_area->setBackspaceUnindents |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2843 (settings->value ("editor/backspace_unindents_line",false).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2844 m_edit_area->setIndentationGuides |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2845 (settings->value ("editor/show_indent_guides",false).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2846 m_edit_area->setIndentationsUseTabs |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2847 (settings->value ("editor/indent_uses_tabs",false).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2848 m_edit_area->setIndentationWidth |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2849 (settings->value ("editor/indent_width",2).toInt ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2850 |
27378
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->setTabWidth |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2852 (settings->value ("editor/tab_width",2).toInt ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2853 |
27198
dffdabfd0213
fix cursor position for editor smart indent after keyword (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27160
diff
changeset
|
2854 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
|
2855 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
|
2856 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
|
2857 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2858 m_edit_area->SendScintilla (QsciScintillaBase::SCI_SETHSCROLLBAR, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2859 settings->value ("editor/show_hscroll_bar",true).toBool ()); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2860 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
|
2861 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
|
2862 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2863 m_long_title = settings->value ("editor/longWindowTitle", false).toBool (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2864 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
|
2865 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2866 m_auto_endif = settings->value ("editor/auto_endif",1).toInt (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2867 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2868 // long line marker |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2869 int line_length = settings->value ("editor/long_line_column",80).toInt (); |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2870 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
|
2871 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2872 if (settings->value ("editor/long_line_marker",true).toBool ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2873 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2874 if (settings->value ("editor/long_line_marker_line",true).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2875 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
|
2876 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2877 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2878 if (settings->value ("editor/long_line_marker_background",false) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2879 .toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2880 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
|
2881 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2882 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
|
2883 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2884 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2885 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2886 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
|
2887 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2888 // 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
|
2889 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
|
2890 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
|
2891 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2892 if (settings->value ("editor/wrap_lines",false).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2893 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
|
2894 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2895 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
|
2896 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2897 if (settings->value ("editor/break_lines",false).toBool ()) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2898 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
|
2899 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2900 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
|
2901 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2902 m_line_break_comments = |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2903 settings->value ("editor/break_lines_comments",false).toBool (); |
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 // 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
|
2906 m_highlight_all_occurrences = |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2907 settings->value ("editor/highlight_all_occurrences", true).toBool (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2908 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2909 // 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
|
2910 m_always_reload_changed_files = |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2911 settings->value ("editor/always_reload_changed_files",false).toBool (); |
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 // 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
|
2914 // 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
|
2915 // handling is required |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2916 bool cursor_blinking; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2917 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2918 if (settings->contains ("cursor_blinking")) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2919 cursor_blinking = settings->value ("cursor_blinking",true).toBool (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2920 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2921 cursor_blinking = settings->value ("terminal/cursorBlinking",true).toBool (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2922 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2923 if (cursor_blinking) |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2924 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
|
2925 else |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2926 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
|
2927 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2928 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2929 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2930 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2931 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
|
2932 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2933 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
|
2934 } |
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 // 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
|
2937 // 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
|
2938 // 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
|
2939 // 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
|
2940 // goes back to the sender |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2941 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
|
2942 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2943 return close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2944 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2945 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2946 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
|
2947 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2948 if (ID != this) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2949 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2950 // Widget may be going out of focus. If so, record location. |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2951 if (m_find_dialog) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2952 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2953 if (m_find_dialog->isVisible ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2954 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2955 m_find_dlg_data.geometry = m_find_dialog->geometry (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2956 m_find_dialog->hide (); |
24716
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 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2959 return; |
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 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2962 if (m_find_dialog && m_find_dlg_data.is_visible) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2963 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2964 m_find_dialog->setGeometry (m_find_dlg_data.geometry); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2965 QPoint p = m_find_dialog->pos (); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2966 m_find_dialog->move (p.x ()+10, p.y ()+10); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2967 m_find_dialog->show (); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2968 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2969 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2970 emit editor_state_changed (m_copy_available, m_is_octave_file); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2971 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2972 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2973 void file_editor_tab::file_name_query (const QWidget *ID) |
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 // A zero (null pointer) means that all file editor tabs |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2976 // should respond, otherwise just the desired file editor tab. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2977 if (ID != this && ID != nullptr) |
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
|
2978 return; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2979 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2980 // This list also includes windows with name "" |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2981 emit add_filename_to_list (m_file_name, m_encoding, this); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2982 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2983 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2984 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
|
2985 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2986 if (decision == QMessageBox::Yes) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2987 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2988 // 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
|
2989 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
|
2990 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2991 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2992 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
2993 // do not reload: readd to the file watche |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
2994 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
|
2995 } |
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 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
|
2999 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3000 // 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
|
3001 if (decision == QMessageBox::Save) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3002 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3003 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
|
3004 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
|
3005 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3006 else |
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 // Definitely close the file. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3009 // Set modified to false to prevent the dialog box when the close event |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3010 // is posted. If the user cancels the close in this dialog the tab is |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3011 // 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
|
3012 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
|
3013 close (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3014 } |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3017 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
|
3018 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3019 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3020 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3021 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3022 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
|
3023 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3024 if (line > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3025 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3026 marker *dp; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3027 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3028 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
|
3029 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3030 // The best that can be done if the editor contents has been |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3031 // 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
|
3032 // 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
|
3033 // 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
|
3034 // 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
|
3035 // number match. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3036 int editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3037 marker *dummy; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3038 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
|
3039 if (editor_linenr != -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3040 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3041 // 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
|
3042 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
|
3043 marker::debugger_position, editor_linenr); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3044 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3045 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3046 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3047 int original_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3048 editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3049 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
|
3050 if (original_linenr >= 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3051 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3052 // 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
|
3053 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
|
3054 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
|
3055 marker::unsure_debugger_position, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3056 linenr_guess); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3057 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3058 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3059 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3060 // 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
|
3061 // 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
|
3062 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
|
3063 marker::unsure_debugger_position); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3064 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3065 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3066 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3067 else |
27008
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
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 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
|
3070 |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
3071 // 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
|
3072 // 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
|
3073 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
|
3074 { |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
3075 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
|
3076 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
|
3077 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
|
3078 } |
e93b8887fedf
remove additionally added breakpoint when stepping into a file (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26975
diff
changeset
|
3079 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3080 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3081 connect (this, SIGNAL (remove_position_via_debugger_linenr (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3082 dp, SLOT (handle_remove_via_original_linenr (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3083 connect (this, SIGNAL (remove_all_positions (void)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3084 dp, SLOT (handle_remove (void))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3085 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3086 center_current_line (false); |
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 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3089 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3090 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
|
3091 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3092 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3093 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3094 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3095 if (line > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3096 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
|
3097 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3098 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3099 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
|
3100 const QWidget *ID, int line, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3101 const QString& cond) |
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 if (ID != this || ID == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3104 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3105 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3106 if (line > 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3107 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3108 if (insert) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3109 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3110 int editor_linenr = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3111 marker *bp = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3112 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3113 // 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
|
3114 // reuse it if possible |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3115 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
|
3116 if (bp != nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3117 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3118 if ((cond == "") != (bp->get_cond () == "")) |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
3119 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
3120 // 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
|
3121 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
|
3122 bp = nullptr; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3123 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3124 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3125 bp->set_cond (cond); |
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3128 if (bp == nullptr) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3129 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3130 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
|
3131 cond == "" ? marker::breakpoint |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3132 : marker::cond_break, cond); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3133 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3134 connect (this, SIGNAL (remove_breakpoint_via_debugger_linenr |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3135 (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3136 bp, SLOT (handle_remove_via_original_linenr (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3137 connect (this, SIGNAL (request_remove_breakpoint_via_editor_linenr |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3138 (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3139 bp, SLOT (handle_request_remove_via_editor_linenr |
21651
b4354327d2b5
dbstop: Fix confusion when breakpoints are changed by the GUI (bug #47675)
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21578
diff
changeset
|
3140 (int))); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3141 connect (this, SIGNAL (remove_all_breakpoints (void)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3142 bp, SLOT (handle_remove (void))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3143 connect (this, SIGNAL (find_translated_line_number (int, int&, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3144 marker*&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3145 bp, SLOT (handle_find_translation (int, int&, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3146 marker*&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3147 connect (this, SIGNAL (find_linenr_just_before (int, int&, int&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3148 bp, SLOT (handle_find_just_before (int, int&, int&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3149 connect (this, SIGNAL (report_marker_linenr (QIntList&, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3150 QStringList&)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3151 bp, SLOT (handle_report_editor_linenr (QIntList&, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3152 QStringList&))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3153 connect (bp, SIGNAL (request_remove (int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3154 this, SLOT (handle_request_remove_breakpoint (int))); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3155 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3156 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3157 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3158 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
|
3159 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3160 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3161 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3162 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
|
3163 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3164 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
|
3165 = 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
|
3166 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3167 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
|
3168 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3169 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
|
3170 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
|
3171 // compensate for "folding": |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3172 // 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
|
3173 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
|
3174 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3175 // 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
|
3176 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
|
3177 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3178 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
|
3179 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3180 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
|
3181 || 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
|
3182 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3183 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
|
3184 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
|
3185 } |
23237
904c8a356e76
provide the possibility for breaking lines only in comments (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23236
diff
changeset
|
3186 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3187 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3188 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3189 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
|
3190 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3191 // 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
|
3192 m_lines_changed = true; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3193 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3194 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3195 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
|
3196 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3197 if (m_edit_area->SendScintilla (QsciScintillaBase::SCI_AUTOCACTIVE)) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3198 show_auto_completion (this); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3199 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3200 if (m_lines_changed) // cursor moved and lines have changed |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3201 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3202 m_lines_changed = false; |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3203 if (m_is_octave_file && line == m_line+1 && col < m_col) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3204 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3205 // Obviously, we have a newline here |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3206 if (m_smart_indent || m_auto_endif) |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3207 m_edit_area->smart_indent (m_smart_indent, m_auto_endif, |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3208 m_line, m_ind_char_width); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3209 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3210 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3211 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3212 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
|
3213 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
|
3214 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3215 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
|
3216 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
|
3217 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3218 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3219 // 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
|
3220 // 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
|
3221 // 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
|
3222 // 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
|
3223 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
|
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 if (m_line_break) |
23181
78f04a9dfeee
allow line breaking in the editor (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23179
diff
changeset
|
3226 { |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3227 // 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
|
3228 // 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
|
3229 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
|
3230 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
|
3231 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3232 // 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
|
3233 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
|
3234 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3235 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3236 // 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
|
3237 // 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
|
3238 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
|
3239 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
|
3240 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3241 // 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
|
3242 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
|
3243 if (! style_comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3244 return; // no comment, return |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3245 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3246 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3247 // 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
|
3248 // For determining the position of a specific column, we have to get |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3249 // the column from the QScintila function without taking tab lengths |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3250 // into account, since the calculation from line/col to position ignores |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3251 // 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
|
3252 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
|
3253 int c = 0; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3254 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
|
3255 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
|
3256 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3257 // Search the first occurence of space or tab backwards starting from |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3258 // the current column (col_space). |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3259 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
|
3260 { |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3261 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
|
3262 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
|
3263 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3264 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3265 // 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
|
3266 // otherwise break at cursor position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3267 int col_newline = col - 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3268 if (c == ' ' || c == '\t') |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3269 col_newline = col_space + 1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3270 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3271 // 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
|
3272 // by a line comment string |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3273 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
|
3274 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
|
3275 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
|
3276 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
|
3277 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
|
3278 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3279 // 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
|
3280 // 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
|
3281 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
|
3282 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
|
3283 } |
78f04a9dfeee
allow line breaking in the editor (bug #41555)
Torsten <mttl@mailbox.org>
parents:
23179
diff
changeset
|
3284 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3285 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3286 // 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
|
3287 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
|
3288 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3289 if (! modifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3290 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3291 // double clicks without modifier |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3292 // 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
|
3293 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
|
3294 |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3295 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
|
3296 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3297 // 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
|
3298 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
|
3299 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3300 // 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
|
3301 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3302 // get the resulting cursor position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3303 // (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
|
3304 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
|
3305 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
|
3306 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3307 // 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
|
3308 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
|
3309 word = word.trimmed (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3310 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3311 if (! word.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3312 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3313 // 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
|
3314 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3315 // remember first visible line 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
|
3316 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
|
3317 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3318 // 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
|
3319 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
|
3320 = m_edit_area->findFirst (word, |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3321 false, // no regexp |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3322 true, // case sensitive |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3323 true, // whole words only |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3324 false, // do not wrap |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3325 true, // forward |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3326 0,0, // from the beginning |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3327 false |
23190
4a2c42792d6c
highlight all occurrences of a selected word in the editor (bug #41470)
Torsten <mttl@mailbox.org>
parents:
23186
diff
changeset
|
3328 #if defined (HAVE_QSCI_VERSION_2_6_0) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3329 , true |
23190
4a2c42792d6c
highlight all occurrences of a selected word in the editor (bug #41470)
Torsten <mttl@mailbox.org>
parents:
23186
diff
changeset
|
3330 #endif |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25070
diff
changeset
|
3331 ); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3332 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3333 // 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
|
3334 int oline, ocol; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3335 int wlen = word.length (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3336 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3337 while (find_result_available) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3338 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3339 // 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
|
3340 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
|
3341 // 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
|
3342 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
|
3343 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3344 // 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
|
3345 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
|
3346 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3347 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3348 // 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
|
3349 // 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
|
3350 m_edit_area->setFirstVisibleLine (first_line); |
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3351 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
|
3352 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
|
3353 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
|
3354 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3355 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3356 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3357 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3358 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3359 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
|
3360 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3361 QRegExp rxfun1 ("^[\t ]*function[^=]+=([^\\(]+)\\([^\\)]*\\)[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3362 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
|
3363 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
|
3364 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
|
3365 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
|
3366 |
27378
6d0585c8ee11
use m_ prefix for data members in file_editor_tab class
John W. Eaton <jwe@octave.org>
parents:
27375
diff
changeset
|
3367 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
|
3368 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3369 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
|
3370 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3371 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
|
3372 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
|
3373 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
|
3374 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
|
3375 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
|
3376 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
|
3377 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
|
3378 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
|
3379 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
|
3380 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
|
3381 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3382 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3383 return QString (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24666
diff
changeset
|
3384 } |
18834
0e6f7b5f6556
propose function name as file name when saving a new file (bug #42568)
Torsten <ttl@justmail.de>
parents:
18833
diff
changeset
|
3385 } |
0e6f7b5f6556
propose function name as file name when saving a new file (bug #42568)
Torsten <ttl@justmail.de>
parents:
18833
diff
changeset
|
3386 |
15873
7d300b85ee25
allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents:
15860
diff
changeset
|
3387 #endif |