annotate libinterp/corefcn/event-manager.h @ 29503:3bfec185c9e2

experimental command window widget with server loop This changeset provides a new experimental proof-of-concept cross-platform command window. It is intended to demonstrate how communication between the GUI command window and the Octave interpreter can work when the GUI is completely responsible for user input instead of having the interpreter wait for input inside readline. This initial implementation uses a simple text box for input and a separate text edit area for output. This design is not intended to be the final arrangement, but was easy to implement for demonstration purposes. These changes also make it possible to run the command-line version of Octave in a similar client-server mode with a function gathering input in one thread and the Octave intepreter running in another. The new command window is not intended to provide a general-purpose terminal window. So running something like "system ('emacs')" will not bring up an instance of Emacs running in the command window. This also means that it will no longer be possible to use an external output pager such as "less" in the command window. OTOH, it is also no longer necessary to fork and exec a separate process on some Unixy systems when Octave starts solely to give up the controlling terminal so that "less" will function properly. With the new terminal window, it is now possible to start Octave in command line mode and later open the GUI desktop window and then return to the command line when the GUI window is closed. Some things that need to be finished: * Merge the input and output windows so that command input and output are interleaved as they are in a normal command window. * Provide real readline command editing in the GUI command window and at the client-server CLI prompt. We can use the readline callback interface for the GUI and the normal readline interface for the CLI. With this design, the command widget and the CLI front end hold a copy of the command history. They do not need to communicate with the interpreter to navigate the command history. * Create interpreter_event messages for handling user input so that the interpreter can ask the GUI to gather user input for functions like "input". * Consider passing results back to the command widget as octave_value objects and allowing the command widget to format and display them instead of passing formatted text from the interpreter to the command widget. * Provide an output pager feature for the GUI command window? Maybe this feature is not necessary since we have scroll bars in the GUI and we can also have the GUI ask the user whether to display output if it is large. ChangeLog: * options-usage.h (usage_string, octave_print_verbose_usage_and_exit): Include --experimental-terminal-widget in list of options. (EXPERIMENTAL_TERMINAL_WIDGET_OPTION): New macro. (long_opts): Include "experimental-terminal-widget" in the list. * octave.h, octave.cc (cmdline_options::cmdline_options): Handle EXPERIMENTAL_TERMINAL_WIDGET_OPTION. (cmdline_options::m_experimental_terminal_widget): New data member. (application::experimental_terminal_widget, cmdline_options::experimental_terminal_widget interpreter::experimental_terminal_widget): New functions. * main.in.cc (fork_and_exec): New static variable. (main): Don't fork and exec if argv includes --experimental-terminal-widget. * interpreter-qobject.h, interpreter-qobject.cc (interpreter_qobject::pause, interpreter_qobject::stop, interpreter_qobject::resume): New functions. (interpreter_qobject::execute): Don't set prompt strings here if using the new terminal widget. If using the new terminal widget, call interpreter::shutdown and emit the shutdown_finished signal after interpreter::execute returns. (interpreter_qobject::shutdown): Don't do anything if using the new terminal widget. * main-window.h, main-window.cc (main_window::handle_octave_ready): Set interpreter prompt strings here if using the new terminal widget. (main_window::close_gui_signal): New signal. (main_window::closeEvent): If using new terminal widget and shutdown is confirmed, simply emit close_gui_signal. (main_window::construct_octave_qt_link): If using new terminal widget, connect qt_interpreter_events::interpreter_output_signal to the terminal_dock_widget::interpreter_output slot and the qt_interpreter_events::update_prompt_signal to the terminal_dock_widget::update_prompt slot. * octave-qobject.h, octave-qobject.cc (base_qobject::interpreter_pause, base_qobject::interpreter_stop, base_qobject::interpreter_resume): New functions. (base_qobject::base_qobject): If using new terminal widget: Don't connect interpreter_qobject::execution_finished signal to octave_qobject::handle_interpreter_execution_finished slot Don't connect octave_qobject::request_interpreter_shutdown signal to the interpreter_qobject::shutdown slot. Do connect the qt_interpreter_events::start_gui_signal signal to the octave_qobject::start_gui slot and simply reload settings and call qt_application::setQuitOnLastWindowClosed. There is no need to create the main window here. (base_qobject::exec): If using new terminal widget, wait for main thread to finish after qt_application::exec returns. (base_qojbect::experimental_terminal_widget, base_qobject::gui_running): New functions. (base_qojbect::start_gui, base_qojbect::close_gui, base_qojbect::interpreter_pause, base_qojbect::interpreter_stop, base_qojbect::interpreter_resume): New slots. (base_qojbect::handle_interpreter_execution_finished): Do nothing if using new terminal widget. * qt-application.cc (qt_application::start_gui_p): Return dummy value if using new terminal widget. * qt-interpreter-events.h, qt-interpreter-events.cc (qt_interpreter_events::start_gui, qt_interpreter_events::close_gui, qt_interpreter_events::interpreter_output, qt_interpreter_events::display_exception, qt_interpreter_events::update_prompt): New functions. (qt_interpreter_events::start_gui_signal, qt_interpreter_events::close_gui_signal, qt_interpreter_events::update_prompt_signal, qt_interpreter_events::interpreter_output_signal): New signals. * command-widget.h, command-widget.cc: New files. * libgui/src/module.mk: Update. * terminal-dock-widget.h, terminal-dock-widget.cc (terminal_dock_widget::m_experimental_terminal_widget): New data member. (terminal_dock_widget::terminal_dock_widget): Optionally create and use new terminal widget. If using new terminal widget, connect command_widget::interpreter_event signals to terminal_dock_widget::interpreter_event signals. (terminal_dock_widget::interpreter_output, terminal_dock_widget::update_prompt): New slots. (terminal_dock_widget::update_prompt_signal, terminal_dock_widget::interpreter_output_signal): New signals. * event-manager.h, event-manager.cc (Fdesktop): New function. (interpreter_events::start_gui, interpreter_events::close_gui, interpreter_events::update_prompt): New virtual functions. (interpreter_events::confirm_shutdown): Return true. (event_manager::start_gui, event_manager::close_gui, event_manager::update_prompt): New functions. * interpreter.h, interpreter.cc (interpreter::initialize): If using new terminal widget, only display startup message if not initially starting GUI. (class cli_input_reader): New class. (interpreter::experimental_terminal_widget, interpreter::get_line_and_eval): New functions. (interpreter::execute): If using new terminal widget, start GUI or command line reader and then enter server loop. * pt-eval.cc (tree_evaluator::server_loop): Reset parser at top of loop. also catch exit exception.
author John W. Eaton <jwe@octave.org>
date Thu, 25 Mar 2021 23:06:40 -0400
parents 76fdbe78884f
children 9367cba2a6d5
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 //
29358
0a5b15007766 update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 27971
diff changeset
3 // Copyright (C) 2011-2021 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
25
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
26 #if ! defined (octave_event_manager_h)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
27 #define octave_event_manager_h 1
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
28
21244
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21158
diff changeset
29 #include "octave-config.h"
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21158
diff changeset
30
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27285
diff changeset
31 #include <functional>
23442
53f5f8231c37 allow most header files to be compiled separately
John W. Eaton <jwe@octave.org>
parents: 23433
diff changeset
32 #include <list>
27262
d67f369b3074 use shared_ptr to manage octave_link_events object
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
33 #include <memory>
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
34 #include <stack>
15155
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 15080
diff changeset
35 #include <string>
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
36
23057
bb7513d73673 move mutex classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
37 #include "oct-mutex.h"
25742
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25653
diff changeset
38 #include "octave.h"
16420
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16419
diff changeset
39 #include "event-queue.h"
25921
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25742
diff changeset
40 #include "uint8NDArray.h"
16377
8430ea8c1594 open editor tab and insert marker for debugging with gui
John W. Eaton <jwe@octave.org>
parents: 16350
diff changeset
41
24641
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
42 class octave_value;
16431
5982d469f79b use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents: 16426
diff changeset
43 class string_vector;
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24641
diff changeset
44
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24641
diff changeset
45 namespace octave
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24641
diff changeset
46 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27285
diff changeset
47 typedef std::function<void (void)> fcn_callback;
28857
43ad651cf5a0 eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents: 28788
diff changeset
48 typedef std::function<void (interpreter&)> meth_callback;
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27285
diff changeset
49
29502
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
50 class execution_exception;
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25948
diff changeset
51 class symbol_info_list;
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
52
27285
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
53 // The methods in this class provide a way to pass signals to the GUI
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
54 // thread. A GUI that wishes to act on these events should derive
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
55 // from this class and perform actions in a thread-safe way. In
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
56 // Octave's Qt-based GUI, for example, these functions are all
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
57 // implemented as wrappers around Qt signals that trigger actions in
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
58 // the GUI. The Qt signal/slot mechanism ensures that the actions are
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
59 // properly queued for execution when the objects corresponding to the
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
60 // signal and slot belong to different threads.
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
61 //
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
62 // These functions should not be called directly. Instead all
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
63 // requests from the interpreter for GUI actions should be done
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
64 // through the event_manager class. That class checks to ensure that
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
65 // the GUI is connected and enabled before calling these virtual
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
66 // functions.
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
67
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
68 // FIXME: it would be nice if instead of requiring the GUI to derive
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
69 // from this class, it could subscribe to individual events, possibly
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
70 // multiple times. In that way, it would be more flexible and
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
71 // decentralized, similar to the Qt signal/slot connection mechanism
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
72 // and would allow the GUI to connect multiple signals to a single
27971
ec769a7ab9fb fix more spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
73 // action or multiple actions to a single signal.
27285
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
74
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
75 // FIXME: audit this list of functions and determine whether they are
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
76 // all necessary and whether there might be better names for them.
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
77
29502
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
78 class OCTINTERP_API 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
79 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
80 public:
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
81
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
82 interpreter_events (void) = default;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
83
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
84 interpreter_events (const interpreter_events&) = default;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
85
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
86 interpreter_events& operator = (const interpreter_events&) = default;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
87
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
88 virtual ~interpreter_events (void) = default;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
89
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
90 // Note: START_GUI and CLOSE_GUI currently only work with the new
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
91 // experimental terminal widget.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
92
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
93 // Set GUI_APP to true when starting Octave as a gui application
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
94 // (invoked with the --gui option) and false when starting the GUI
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
95 // from the Octave prompt when Octave is already running as a
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
96 // command line application.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
97
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
98 virtual void start_gui (bool /*gui_app*/ = false) { }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
99 virtual void close_gui (void) { }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
100
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
101 // Dialogs.
27311
0040b7668518 update load path dialog when path is modified via console
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27302
diff changeset
102
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
103 typedef std::list<std::pair<std::string, std::string>> filter_list;
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
104
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
105 virtual std::list<std::string>
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
106 file_dialog (const filter_list& /*filter*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
107 const std::string& /*title*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
108 const std::string& /*filename*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
109 const std::string& /*dirname*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
110 const std::string& /*multimode*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
111 {
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
112 return std::list<std::string> ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
113 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
114
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
115 virtual std::list<std::string>
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
116 input_dialog (const std::list<std::string>& /*prompt*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
117 const std::string& /*title*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
118 const std::list<float>& /*nr*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
119 const std::list<float>& /*nc*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
120 const std::list<std::string>& /*defaults*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
121 {
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
122 return std::list<std::string> ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
123 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
124
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
125 virtual std::pair<std::list<int>, int>
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
126 list_dialog (const std::list<std::string>& /*list*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
127 const std::string& /*mode*/, int /*width*/, int /*height*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
128 const std::list<int>& /*initial_value*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
129 const std::string& /*name*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
130 const std::list<std::string>& /*prompt*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
131 const std::string& /*ok_string*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
132 const std::string& /*cancel_string*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
133 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
134 return std::pair<std::list<int>, int> ();
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
135 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
136
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
137 virtual std::string
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
138 question_dialog (const std::string& /*msg*/, const std::string& /*title*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
139 const std::string& /*btn1*/, const std::string& /*btn2*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
140 const std::string& /*btn3*/, const std::string& /*btndef*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
141 {
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
142 return "";
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
143 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
144
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
145 virtual void update_path_dialog (void) { }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
146
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
147 virtual void show_preferences (void) { }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
148
27602
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
149 virtual void apply_preferences (void) { }
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
150
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
151 virtual void show_doc (const std::string& /*file*/) { }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
152
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
153 virtual bool edit_file (const std::string& /*file*/) { return false; }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
154
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
155 virtual void
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
156 edit_variable (const std::string& /*name*/, const octave_value& /*val*/)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
157 { }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
158
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
159 // Other requests for user interaction, usually some kind of
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
160 // confirmation before another action. Could these be reformulated
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
161 // using the question_dialog action?
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
162
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
163 virtual bool confirm_shutdown (void) { return true; }
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
164
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
165 virtual bool prompt_new_edit_file (const std::string& /*file*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
166 {
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
167 return false;
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
168 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
169
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
170 virtual int
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
171 debug_cd_or_addpath_error (const std::string& /*file*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
172 const std::string& /*dir*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
173 bool /*addpath_option*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
174 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
175 return -1;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
176 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
177
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
178 // Requests for information normally stored in the GUI.
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
179
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
180 virtual uint8NDArray get_named_icon (const std::string& /*icon_name*/)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
181 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
182 return uint8NDArray ();
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
183 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
184
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
185 virtual std::string gui_preference (const std::string& /*key*/,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
186 const std::string& /*value*/)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
187 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
188 return "";
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
189 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
190
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
191 // Requests for GUI action that do not require user interaction.
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
192 // These are different from other notifications in that they are not
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
193 // associated with changes in the interpreter state (like a change
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
194 // in the current working directory or command history).
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
195
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
196 virtual bool copy_image_to_clipboard (const std::string& /*file*/)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
197 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
198 return false;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
199 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
200
27669
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
201 virtual void focus_window (const std::string /*win_name*/)
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
202 { }
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
203
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
204 virtual void
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
205 execute_command_in_terminal (const std::string& /*command*/) { }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
206
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
207 virtual void register_doc (const std::string& /*file*/) { }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
208
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
209 virtual void unregister_doc (const std::string& /*file*/) { }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
210
29254
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
211 virtual void interpreter_output (const std::string& /*msg*/) { }
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
212
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
213 virtual void display_exception (const execution_exception& ee, bool beep);
29254
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
214
29057
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
215 virtual void gui_status_update (const std::string& /*feature*/,
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
216 const std::string& /*status*/) { }
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
217
28788
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
218 virtual void update_gui_lexer (void) { }
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
219
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
220 // Notifications of events in the interpreter that a GUI will
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
221 // normally wish to respond to.
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
222
27409
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27392
diff changeset
223 virtual void directory_changed (const std::string& /*dir*/) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
224
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
225 virtual void
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
226 file_remove (const std::string& /*old_nm*/, const std::string& /*new_nm*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
227 { }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
228
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
229 virtual void file_renamed (bool) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
230
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
231 virtual void
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
232 set_workspace (bool /*top_level*/, bool /*debug*/,
28857
43ad651cf5a0 eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents: 28788
diff changeset
233 const symbol_info_list& /*syminfo*/,
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
234 bool /*update_variable_editor*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
235 { }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
236
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
237 virtual void clear_workspace (void) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
238
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
239 virtual void update_prompt (const std::string& /*prompt*/) { }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
240
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
241 virtual void set_history (const string_vector& /*hist*/) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
242
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
243 virtual void append_history (const std::string& /*hist_entry*/) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
244
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
245 virtual void clear_history (void) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
246
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
247 virtual void pre_input_event (void) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
248
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
249 virtual void post_input_event (void) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
250
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
251 virtual void
27392
820a87b87c01 clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents: 27311
diff changeset
252 enter_debugger_event (const std::string& /*fcn_name*/,
820a87b87c01 clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents: 27311
diff changeset
253 const std::string& /*fcn_file_name*/,
820a87b87c01 clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents: 27311
diff changeset
254 int /*line*/)
820a87b87c01 clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents: 27311
diff changeset
255 { }
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
256
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
257 virtual void
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
258 execute_in_debugger_event (const std::string& /*file*/, int /*line*/) { }
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
259
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
260 virtual void exit_debugger_event (void) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
261
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
262 virtual void
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
263 update_breakpoint (bool /*insert*/, const std::string& /*file*/,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
264 int /*line*/, const std::string& /*cond*/)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
265 { }
29293
8784f20b9b8c new interpreter_event to signal that interpreter was interrupted
John W. Eaton <jwe@octave.org>
parents: 29282
diff changeset
266
8784f20b9b8c new interpreter_event to signal that interpreter was interrupted
John W. Eaton <jwe@octave.org>
parents: 29282
diff changeset
267 virtual void interpreter_interrupted (void) { }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
268 };
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
269
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
270 //! Provides threadsafe access to octave.
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
271 //!
27285
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
272 //! This class provides thread-safe communication between the
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
273 //! interpreter and a GUI.
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
274
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
275 class event_manager
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
276 {
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
277 public:
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
278
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29057
diff changeset
279 OCTINTERP_API event_manager (interpreter& interp);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
280
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
281 // No copying!
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
282
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
283 event_manager (const event_manager&) = delete;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
284
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
285 event_manager&
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
286 operator = (const event_manager&) = delete;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
287
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
288 virtual ~event_manager (void);
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
289
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
290 // OBJ should be an object of a class that is derived from the base
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
291 // class interpreter_events, or nullptr to disconnect and delete the
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
292 // previous link.
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
293
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29057
diff changeset
294 OCTINTERP_API void
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29057
diff changeset
295 connect_link (const std::shared_ptr<interpreter_events>& obj);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
296
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29057
diff changeset
297 OCTINTERP_API bool enable (void);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
298
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
299 bool disable (void)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
300 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
301 bool retval = link_enabled;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
302 link_enabled = false;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
303 return retval;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
304 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
305
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
306 bool enabled (void) const
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
307 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
308 return link_enabled;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
309 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
310
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
311 // If disable is TRUE, then no additional events will be processed
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
312 // other than exit.
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
313
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29057
diff changeset
314 OCTINTERP_API void process_events (bool disable = false);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
315
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29057
diff changeset
316 OCTINTERP_API void discard_events (void);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
317
27285
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
318 // The post_event and post_exception functions provide a thread-safe
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
319 // way for the GUI to queue interpreter functions for execution.
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
320 // The queued functions are executed when the interpreter is
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
321 // otherwise idle.
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
322
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
323 void push_event_queue (void);
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
324 void pop_event_queue (void);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
325
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
326 OCTINTERP_API void post_event (const fcn_callback& fcn);
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
327 OCTINTERP_API void post_event (const meth_callback& meth);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
328
27285
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
329 // The following functions correspond to the virtual fuunctions in
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
330 // the interpreter_events class. They provide a way for the
27971
ec769a7ab9fb fix more spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
331 // interpreter to notify the GUI that some event has occurred
27285
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
332 // (directory or workspace changed, for example) or to request the
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
333 // GUI to perform some action (display a dialog, for example).
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
334
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
335 // Please keep this list of declarations in the same order as the
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
336 // ones above in the interpreter_events class.
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
337
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
338
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
339 // Note: START_GUI and CLOSE_GUI currently only work with the new
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
340 // experimental terminal object.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
341
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
342 void start_gui (bool gui_app = false)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
343 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
344 if (enabled ())
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
345 instance->start_gui (gui_app);
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
346 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
347
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
348 void close_gui (void)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
349 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
350 if (enabled ())
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
351 instance->close_gui ();
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
352 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
353
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
354 typedef std::list<std::pair<std::string, std::string>> filter_list;
27311
0040b7668518 update load path dialog when path is modified via console
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27302
diff changeset
355
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
356 std::list<std::string>
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
357 file_dialog (const filter_list& filter, const std::string& title,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
358 const std::string& filename, const std::string& dirname,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
359 const std::string& multimode)
27285
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
360 {
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
361 return (enabled ()
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
362 ? instance->file_dialog (filter, title, filename, dirname,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
363 multimode)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
364 : std::list<std::string> ());
27285
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
365 }
6c438195f4e0 internal documentation for interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
366
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
367 std::list<std::string>
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
368 input_dialog (const std::list<std::string>& prompt,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
369 const std::string& title,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
370 const std::list<float>& nr,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
371 const std::list<float>& nc,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
372 const std::list<std::string>& defaults)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
373 {
27264
378d3c91f85b style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
374 return (enabled ()
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
375 ? instance->input_dialog (prompt, title, nr, nc, defaults)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
376 : std::list<std::string> ());
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
377 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
378
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
379 std::pair<std::list<int>, int>
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
380 list_dialog (const std::list<std::string>& list,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
381 const std::string& mode,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
382 int width, int height,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
383 const std::list<int>& initial_value,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
384 const std::string& name,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
385 const std::list<std::string>& prompt,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
386 const std::string& ok_string,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
387 const std::string& cancel_string)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
388 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
389 return (enabled ()
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
390 ? instance->list_dialog (list, mode, width, height,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
391 initial_value, name, prompt,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
392 ok_string, cancel_string)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
393 : std::pair<std::list<int>, int> ());
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
394 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
395
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
396 std::string
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
397 question_dialog (const std::string& msg, const std::string& title,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
398 const std::string& btn1, const std::string& btn2,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
399 const std::string& btn3, const std::string& btndef)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
400 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
401 return (enabled ()
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
402 ? instance->question_dialog (msg, title, btn1,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
403 btn2, btn3, btndef)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
404 : "");
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
405 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
406
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
407 void update_path_dialog (void)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
408 {
28857
43ad651cf5a0 eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents: 28788
diff changeset
409 if (application::is_gui_running () && enabled ())
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
410 instance->update_path_dialog ();
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
411 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
412
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
413 bool show_preferences (void)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
414 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
415 if (enabled ())
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
416 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
417 instance->show_preferences ();
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
418 return true;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
419 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
420 else
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
421 return false;
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
422 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
423
27602
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
424 bool apply_preferences (void)
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
425 {
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
426 if (enabled ())
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
427 {
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
428 instance->apply_preferences ();
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
429 return true;
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
430 }
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
431 else
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
432 return false;
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
433 }
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27442
diff changeset
434
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
435 bool show_doc (const std::string& file)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
436 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
437 if (enabled ())
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
438 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
439 instance->show_doc (file);
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
440 return true;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
441 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
442 else
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
443 return false;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
444 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
445
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
446 bool edit_file (const std::string& file)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
447 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
448 return enabled () ? instance->edit_file (file) : false;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
449 }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
450
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
451 bool edit_variable (const std::string& name, const octave_value& val)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
452 {
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
453 if (enabled ())
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
454 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
455 instance->edit_variable (name, val);
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
456 return true;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
457 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
458 else
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
459 return false;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
460 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
461
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
462 bool confirm_shutdown (void)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
463 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
464 bool retval = true;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
465
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
466 if (enabled ())
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
467 retval = instance->confirm_shutdown ();
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
468
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
469 return retval;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
470 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
471
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
472 bool prompt_new_edit_file (const std::string& file)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
473 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
474 return enabled () ? instance->prompt_new_edit_file (file) : false;
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
475 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
476
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
477 int debug_cd_or_addpath_error (const std::string& file,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
478 const std::string& dir, bool addpath_option)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
479 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
480 return (enabled ()
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
481 ? instance->debug_cd_or_addpath_error (file, dir, addpath_option)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
482 : 0);
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
483 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
484
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
485 uint8NDArray get_named_icon (const std::string& icon_name)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
486 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
487 return (enabled ()
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
488 ? instance->get_named_icon (icon_name) : uint8NDArray ());
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
489 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
490
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
491 std::string gui_preference (const std::string& key,
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
492 const std::string& value)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
493 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
494 return enabled () ? instance->gui_preference (key, value) : "";
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
495 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
496
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
497 bool copy_image_to_clipboard (const std::string& file)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
498 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
499 return enabled () ? instance->copy_image_to_clipboard (file) : false;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
500 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
501
27669
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
502 virtual void focus_window (const std::string win_name)
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
503 {
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
504 if (enabled ())
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
505 instance->focus_window (win_name);
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
506 }
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
507
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
508 // Preserves pending input.
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
509 void execute_command_in_terminal (const std::string& command)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
510 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
511 if (enabled ())
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
512 instance->execute_command_in_terminal (command);
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
513 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
514
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
515 bool register_doc (const std::string& file)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
516 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
517 if (enabled ())
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
518 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
519 instance->register_doc (file);
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
520 return true;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
521 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
522 else
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
523 return false;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
524 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
525
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
526 bool unregister_doc (const std::string& file)
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
527 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
528 if (enabled ())
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
529 {
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
530 instance->unregister_doc (file);
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
531 return true;
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
532 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
533 else
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
534 return false;
28788
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
535 }
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
536
29254
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
537 bool interpreter_output (const std::string& msg)
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
538 {
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
539 if (enabled ())
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
540 {
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
541 instance->interpreter_output (msg);
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
542 return true;
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
543 }
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
544 else
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
545 return false;
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
546 }
11343ca3c125 allow Octave to operate as a server, executing commands from a queue
John W. Eaton <jwe@octave.org>
parents: 29233
diff changeset
547
29502
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
548 bool display_exception (const execution_exception& ee, bool beep = false)
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
549 {
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
550 if (enabled ())
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
551 {
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
552 instance->display_exception (ee, beep);
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
553 return true;
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
554 }
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
555 else
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
556 return false;
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
557 }
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
558
29057
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
559 bool gui_status_update (const std::string& feature, const std::string& status)
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
560 {
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
561 if (enabled ())
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
562 {
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
563 instance->gui_status_update (feature, status);
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
564 return true;
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
565 }
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
566 else
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
567 return false;
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
568 }
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28857
diff changeset
569
28788
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
570 bool update_gui_lexer (void)
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
571 {
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
572 if (enabled ())
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
573 {
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
574 instance->update_gui_lexer ();
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
575 return true;
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
576 }
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
577 else
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27971
diff changeset
578 return false;
27442
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
579 }
6e4519df0be2 group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
580
27409
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27392
diff changeset
581 void directory_changed (const std::string& dir)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
582 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
583 if (enabled ())
27409
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27392
diff changeset
584 instance->directory_changed (dir);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
585 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
586
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
587 // Methods for removing/renaming files which might be open in editor
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
588 void file_remove (const std::string& old_name, const std::string& new_name)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
589 {
28857
43ad651cf5a0 eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents: 28788
diff changeset
590 if (application::is_gui_running () && enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
591 instance->file_remove (old_name, new_name);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
592 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
593
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
594 void file_renamed (bool load_new)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
595 {
28857
43ad651cf5a0 eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents: 28788
diff changeset
596 if (application::is_gui_running () && enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
597 instance->file_renamed (load_new);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
598 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
599
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29057
diff changeset
600 OCTINTERP_API void set_workspace (void);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
601
28857
43ad651cf5a0 eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents: 28788
diff changeset
602 void set_workspace (bool top_level, const symbol_info_list& syminfo,
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
603 bool update_variable_editor = true)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
604 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
605 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
606 instance->set_workspace (top_level, debugging, syminfo,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
607 update_variable_editor);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
608 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
609
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
610 void clear_workspace (void)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
611 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
612 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
613 instance->clear_workspace ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
614 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
615
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
616 void update_prompt (const std::string& prompt)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
617 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
618 if (enabled ())
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
619 instance->update_prompt (prompt);
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
620 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
621
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
622 void set_history (const string_vector& hist)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
623 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
624 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
625 instance->set_history (hist);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
626 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
627
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
628 void append_history (const std::string& hist_entry)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
629 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
630 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
631 instance->append_history (hist_entry);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
632 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
633
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
634 void clear_history (void)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
635 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
636 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
637 instance->clear_history ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
638 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
639
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
640 void pre_input_event (void)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
641 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
642 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
643 instance->pre_input_event ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
644 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
645
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
646 void post_input_event (void)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
647 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
648 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
649 instance->post_input_event ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
650 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
651
27392
820a87b87c01 clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents: 27311
diff changeset
652 void enter_debugger_event (const std::string& fcn_name,
820a87b87c01 clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents: 27311
diff changeset
653 const std::string& fcn_file_name, int line)
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
654 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
655 if (enabled ())
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
656 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
657 debugging = true;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
658
27392
820a87b87c01 clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents: 27311
diff changeset
659 instance->enter_debugger_event (fcn_name, fcn_file_name, line);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
660 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
661 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
662
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
663 void execute_in_debugger_event (const std::string& file, int line)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
664 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
665 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
666 instance->execute_in_debugger_event (file, line);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
667 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
668
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
669 void exit_debugger_event (void)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
670 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
671 if (enabled () && debugging)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
672 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
673 debugging = false;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
674
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
675 instance->exit_debugger_event ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
676 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
677 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
678
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
679 void update_breakpoint (bool insert, const std::string& file,
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
680 int line, const std::string& cond = "")
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
681 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
682 if (enabled ())
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
683 instance->update_breakpoint (insert, file, line, cond);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
684 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
685
29293
8784f20b9b8c new interpreter_event to signal that interpreter was interrupted
John W. Eaton <jwe@octave.org>
parents: 29282
diff changeset
686 void interpreter_interrupted (void)
8784f20b9b8c new interpreter_event to signal that interpreter was interrupted
John W. Eaton <jwe@octave.org>
parents: 29282
diff changeset
687 {
8784f20b9b8c new interpreter_event to signal that interpreter was interrupted
John W. Eaton <jwe@octave.org>
parents: 29282
diff changeset
688 if (enabled ())
8784f20b9b8c new interpreter_event to signal that interpreter was interrupted
John W. Eaton <jwe@octave.org>
parents: 29282
diff changeset
689 instance->interpreter_interrupted ();
8784f20b9b8c new interpreter_event to signal that interpreter was interrupted
John W. Eaton <jwe@octave.org>
parents: 29282
diff changeset
690 }
8784f20b9b8c new interpreter_event to signal that interpreter was interrupted
John W. Eaton <jwe@octave.org>
parents: 29282
diff changeset
691
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
692 private:
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
693
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27285
diff changeset
694 interpreter& m_interpreter;
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27285
diff changeset
695
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
696 // Using a shared_ptr to manage the link_events object ensures that it
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
697 // will be valid until it is no longer needed.
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
698
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
699 std::shared_ptr<interpreter_events> instance;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
700
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
701 protected:
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
702
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
703 // Semaphore to lock access to the event queue.
28857
43ad651cf5a0 eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents: 28788
diff changeset
704 mutex *event_queue_mutex;
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
705
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
706 // Event Queue. We use a stack so that we can handle evaluation in
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
707 // the debugger when we are executing in server mode. In server
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
708 // mode, code is evaluated from inside the event queue. So when the
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
709 // evaluator reaches a breakpoint, the queue is already locked and
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
710 // executing an event function. We can't just add a new command to the
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
711 // existing queue, so we need another one that can process new
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
712 // events generated at the debug prompt. When execution continues
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
713 // (dbcont or dbstep, for example) we pop the queue and return to
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
714 // the previous point of execution.
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
715
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29254
diff changeset
716 std::stack<std::shared_ptr <event_queue>> gui_event_queue;
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
717
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
718 bool debugging;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
719 bool link_enabled;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
720 };
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24641
diff changeset
721 }
13541
b48ac9ad8de0 Highly improved separation of model and view classes.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13522
diff changeset
722
20945
9d9270e2f98f eliminate comments after preprocessor conditionals
John W. Eaton <jwe@octave.org>
parents: 20791
diff changeset
723 #endif