annotate libgui/src/interpreter-qobject.cc @ 31649:deb553ac2c54

maint: Merge stable to default.
author John W. Eaton <jwe@octave.org>
date Tue, 06 Dec 2022 15:45:27 -0500
parents 431f80aba37a 29d734430e5f
children 5f11de0e7440
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30398
diff changeset
3 // Copyright (C) 2011-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
26 #if defined (HAVE_CONFIG_H)
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 # include "config.h"
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28 #endif
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
29
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
30 #include "interpreter-qobject.h"
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27197
diff changeset
31 #include "octave-qobject.h"
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27302
diff changeset
32 #include "qt-application.h"
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
33 #include "qt-interpreter-events.h"
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34
27697
5e8891dceec7 backout changesets cdb681adc85a and b3401292e101 (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27695
diff changeset
35 #include "graphics-init.h"
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36 #include "input.h"
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37 #include "interpreter.h"
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38
31646
c6d54dd31a7e maint: Use macros to begin/end C++ namespaces.
John W. Eaton <jwe@octave.org>
parents: 30733
diff changeset
39 OCTAVE_BEGIN_NAMESPACE(octave)
c6d54dd31a7e maint: Use macros to begin/end C++ namespaces.
John W. Eaton <jwe@octave.org>
parents: 30733
diff changeset
40
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27412
diff changeset
41 interpreter_qobject::interpreter_qobject (base_qobject& oct_qobj)
27697
5e8891dceec7 backout changesets cdb681adc85a and b3401292e101 (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27695
diff changeset
42 : QObject (), m_octave_qobj (oct_qobj), m_interpreter (nullptr)
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
43 { }
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
44
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
45 void interpreter_qobject::execute (void)
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27197
diff changeset
46 {
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
47 // The Octave application context owns the interpreter.
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
48
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27412
diff changeset
49 qt_application& app_context = m_octave_qobj.app_context ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
50
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
51 interpreter& interp = app_context.create_interpreter ();
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
52
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
53 event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
54
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27412
diff changeset
55 evmgr.connect_link (m_octave_qobj.get_qt_interpreter_events ());
29621
a5ee1fec49ba provide access to qt_interpreter_event handlers from event_manager class
John W. Eaton <jwe@octave.org>
parents: 29548
diff changeset
56 evmgr.install_qt_event_handlers (m_octave_qobj.get_qt_interpreter_events ());
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
57 evmgr.enable ();
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27197
diff changeset
58
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
59 int exit_status = 0;
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
60
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
61 try
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62 {
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
63 // Final initialization.
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
64
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
65 interp.initialize ();
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
67 if (app_context.start_gui_p ()
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
68 && ! m_octave_qobj.experimental_terminal_widget ())
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
69 {
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
70 input_system& input_sys = interp.get_input_system ();
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
71
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
72 input_sys.PS1 (">> ");
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
73 input_sys.PS2 ("");
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
74 }
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
75
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
76 if (interp.initialized ())
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
77 {
27697
5e8891dceec7 backout changesets cdb681adc85a and b3401292e101 (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27695
diff changeset
78 // The interpreter should be completely ready at this point so let
5e8891dceec7 backout changesets cdb681adc85a and b3401292e101 (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27695
diff changeset
79 // the GUI know.
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
80
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
81 m_interpreter = &interp;
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
82
28347
00a9a49c7670 improve interpreter shutdown process (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
83 emit ready ();
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
84
31639
ca7d58406f82 eliminate unnecessary uses of octave_qobject in GUI classes
John W. Eaton <jwe@octave.org>
parents: 30733
diff changeset
85 graphics_init (interp);
27695
cdb681adc85a improve exit behavior with qt graphics toolkit (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27694
diff changeset
86
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
87 // Start executing commands in the command window.
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
88
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
89 exit_status = interp.execute ();
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
90 }
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
91 }
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 28347
diff changeset
92 catch (const exit_exception& xe)
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
93 {
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 28347
diff changeset
94 exit_status = xe.exit_status ();
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
95 }
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents:
diff changeset
96
30733
fb0d6b1e0b64 don't call interpreter::shutdown from the GUI (bug #61994)
John W. Eaton <jwe@octave.org>
parents: 30564
diff changeset
97 // FIXME: The following comment doesn't seem to make sense now.
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
98
29548
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
99 // Signal that the interpreter is done executing code in the
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
100 // main REPL, from script files, or command line eval arguments.
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
101 // By using a signal here, we give the GUI a chance to process
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
102 // any pending events, then signal that it is safe to shutdown
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
103 // the interpreter. Our notification here allows the GUI to
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
104 // insert the request to shutdown the interpreter in the event
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
105 // queue after any other pending signals. The application
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
106 // context owns the interpreter and will be responsible for
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
107 // deleting it later, when the application object destructor is
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
108 // executed.
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
109
29548
f6ad83cbe3c4 simplify interpreter shutdown in the GUI
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
110 emit shutdown_finished (exit_status);
27695
cdb681adc85a improve exit behavior with qt graphics toolkit (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27694
diff changeset
111 }
cdb681adc85a improve exit behavior with qt graphics toolkit (bug #56952)
John W. Eaton <jwe@octave.org>
parents: 27694
diff changeset
112
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
113 void interpreter_qobject::interpreter_event (const fcn_callback& fcn)
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
114 {
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
115 if (! m_interpreter)
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
116 return;
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
117
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
118 event_manager& evmgr = m_interpreter->get_event_manager ();
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
119
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
120 evmgr.post_event (fcn);
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
121 }
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
122
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
123 void interpreter_qobject::interpreter_event (const meth_callback& meth)
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
124 {
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
125 if (! m_interpreter)
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
126 return;
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
127
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
128 event_manager& evmgr = m_interpreter->get_event_manager ();
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
129
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
130 evmgr.post_event (meth);
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
131 }
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
132
29292
eb1e10abe9d5 use method in interpreter class to interrupt interpreter execution in GUI
John W. Eaton <jwe@octave.org>
parents: 29219
diff changeset
133 void interpreter_qobject::interrupt (void)
eb1e10abe9d5 use method in interpreter class to interrupt interpreter execution in GUI
John W. Eaton <jwe@octave.org>
parents: 29219
diff changeset
134 {
eb1e10abe9d5 use method in interpreter class to interrupt interpreter execution in GUI
John W. Eaton <jwe@octave.org>
parents: 29219
diff changeset
135 if (! m_interpreter)
eb1e10abe9d5 use method in interpreter class to interrupt interpreter execution in GUI
John W. Eaton <jwe@octave.org>
parents: 29219
diff changeset
136 return;
eb1e10abe9d5 use method in interpreter class to interrupt interpreter execution in GUI
John W. Eaton <jwe@octave.org>
parents: 29219
diff changeset
137
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
138 // The following is a direct function call across threads.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
139 // We need to ensure that it uses thread-safe functions.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
140
29292
eb1e10abe9d5 use method in interpreter class to interrupt interpreter execution in GUI
John W. Eaton <jwe@octave.org>
parents: 29219
diff changeset
141 m_interpreter->interrupt ();
eb1e10abe9d5 use method in interpreter class to interrupt interpreter execution in GUI
John W. Eaton <jwe@octave.org>
parents: 29219
diff changeset
142 }
eb1e10abe9d5 use method in interpreter class to interrupt interpreter execution in GUI
John W. Eaton <jwe@octave.org>
parents: 29219
diff changeset
143
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
144 void interpreter_qobject::pause (void)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
145 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
146 // FIXME: Should we make this action work with the old terminal
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
147 // widget?
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
148
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
149 if (m_octave_qobj.experimental_terminal_widget ())
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
150 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
151 if (! m_interpreter)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
152 return;
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
153
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
154 // The following is a direct function call across threads.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
155 // We need to ensure that it uses thread-safe functions.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
156
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
157 m_interpreter->pause ();
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
158 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
159 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
160
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
161 void interpreter_qobject::stop (void)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
162 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
163 // FIXME: Should we make this action work with the old terminal
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
164 // widget?
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
165
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
166 if (m_octave_qobj.experimental_terminal_widget ())
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
167 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
168 if (! m_interpreter)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
169 return;
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
170
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
171 // The following is a direct function call across threads.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
172 // We need to ensure that it uses thread-safe functions.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
173
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
174 m_interpreter->stop ();
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
175 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
176 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
177
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
178 void interpreter_qobject::resume (void)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
179 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
180 // FIXME: Should we make this action work with the old terminal
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
181 // widget?
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
182
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
183 if (m_octave_qobj.experimental_terminal_widget ())
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
184 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
185 // FIXME: This action should only be available when the
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
186 // interpreter is paused.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
187
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
188 interpreter_event
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
189 ([=] (interpreter& interp)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
190 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
191 // INTERPRETER THREAD
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
192
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
193 interp.resume ();
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
194 });
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
195 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
196 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
197
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 29786
diff changeset
198 qt_interpreter_events *interpreter_qobject::qt_link (void)
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27197
diff changeset
199 {
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27412
diff changeset
200 return m_octave_qobj.qt_link ();
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27197
diff changeset
201 }
31646
c6d54dd31a7e maint: Use macros to begin/end C++ namespaces.
John W. Eaton <jwe@octave.org>
parents: 30733
diff changeset
202
c6d54dd31a7e maint: Use macros to begin/end C++ namespaces.
John W. Eaton <jwe@octave.org>
parents: 30733
diff changeset
203 OCTAVE_END_NAMESPACE(octave)