annotate libinterp/corefcn/event-manager.cc @ 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 eaf0943b7361
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: 27987
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
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21440
diff changeset
26 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21200
diff changeset
27 # include "config.h"
15155
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 15041
diff changeset
28 #endif
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 15041
diff changeset
29
29502
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
30 #include <iostream>
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
31
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
32 #include "builtin-defun-decls.h"
15155
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 15041
diff changeset
33 #include "cmd-edit.h"
16420
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
34 #include "defun.h"
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
35 #include "event-manager.h"
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
36 #include "interpreter.h"
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23457
diff changeset
37 #include "interpreter-private.h"
15155
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 15041
diff changeset
38 #include "oct-env.h"
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 15041
diff changeset
39 #include "oct-mutex.h"
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
40 #include "ovl.h"
22091
0f6fc2ec3b1a move call_stack class to a separate file
John W. Eaton <jwe@octave.org>
parents: 21966
diff changeset
41 #include "pager.h"
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
42 #include "syminfo.h"
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
43
29502
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
44 #include "quit.h"
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
45
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
46 namespace octave
14668
6a6733a55982 Removed unused classes and added octave loop hook.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14664
diff changeset
47 {
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
48 static int readline_event_hook (void)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
49 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
50 event_manager& evmgr = __get_event_manager__ ("octave_readline_hook");
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
51
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
52 evmgr.process_events ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
53
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
54 return 0;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
55 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
56
29502
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
57 void interpreter_events::display_exception (const execution_exception& ee,
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
58 bool beep)
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
59 {
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
60 if (beep)
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
61 std::cerr << "\a";
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
62
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
63 ee.display (std::cerr);
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
64 }
76fdbe78884f allow event manager to handle display of execution exceptions
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
65
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
66 event_manager::event_manager (interpreter& interp)
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
67 : m_interpreter (interp), instance (nullptr),
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
68 event_queue_mutex (new mutex ()), gui_event_queue (),
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27284
diff changeset
69 debugging (false), link_enabled (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
70 {
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
71 push_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
72 command_editor::add_event_hook (readline_event_hook);
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
73 }
15371
eec0d1fcba4f use Octave singleton style for octave_link class
John W. Eaton <jwe@octave.org>
parents: 15204
diff changeset
74
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
75 event_manager::~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
76 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
77 delete event_queue_mutex;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
78 }
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 // Programming Note: It is possible to disable the link without deleting
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
81 // the connection. This allows it to be temporarily disabled. But if
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
82 // the link is removed, we also set the link_enabled flag to false
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
83 // because if there is no link, it can't be enabled. Also, access to
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
84 // instance is only protected by a check on the link_enabled flag.
14668
6a6733a55982 Removed unused classes and added octave loop hook.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14664
diff changeset
85
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
86 void
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
87 event_manager::connect_link (const std::shared_ptr<interpreter_events>& obj)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
88 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
89 if (! obj)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
90 disable ();
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
91
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
92 instance = obj;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
93 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
94
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
95 bool event_manager::enable (void)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
96 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
97 bool retval = link_enabled;
15371
eec0d1fcba4f use Octave singleton style for octave_link class
John W. Eaton <jwe@octave.org>
parents: 15204
diff changeset
98
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
99 if (instance)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
100 link_enabled = true;
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
101 else
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
102 warning ("event_manager: must have connected link to enable");
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
103
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
104 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
105 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
106
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
107 void event_manager::process_events (bool disable_flag)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
108 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
109 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
110 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
111 if (disable_flag)
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
112 disable ();
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 event_queue_mutex->lock ();
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
115 std::shared_ptr<event_queue> evq = gui_event_queue.top ();
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
116 event_queue_mutex->unlock ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
117
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
118 evq->run ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
119 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
120 }
21440
062c65569ad7 avoid some address-sanitizer leak warnings (bug #47372)
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
121
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
122 void event_manager::discard_events (void)
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 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
125 {
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
126 event_queue_mutex->lock ();
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
127 std::shared_ptr<event_queue> evq = gui_event_queue.top ();
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
128 event_queue_mutex->unlock ();
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
129
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
130 evq->discard ();
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
131 }
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
132 }
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
133
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
134 void event_manager::push_event_queue (void)
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
135 {
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
136 std::shared_ptr<event_queue> evq (new event_queue ());
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
137 gui_event_queue.push (evq);
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
138 }
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
139
29282
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
140 void event_manager::pop_event_queue (void)
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
141 {
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
142 // FIXME: Should we worry about the possibility of events remaining
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
143 // in the queue when we pop back to the previous queue? If so, then
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
144 // we will probably want to push them on to the front of the
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
145 // previous queue so they will be executed before any other events
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
146 // that were in the previous queue. This case could happen if
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
147 // graphics callback functions were added to the event queue during a
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
148 // debug session just after a dbcont command was added but before it
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
149 // executed and brought us here, for example.
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
150
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
151 std::shared_ptr<event_queue> evq = gui_event_queue.top ();
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
152 gui_event_queue.pop ();
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
153 }
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
154
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
155 void event_manager::post_event (const fcn_callback& fcn)
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
156 {
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
157 if (enabled ())
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
158 {
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
159 std::shared_ptr<event_queue> evq = gui_event_queue.top ();
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
160 evq->add (fcn);
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
161 }
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
162 }
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
163
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
164 void event_manager::post_event (const meth_callback& meth)
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
165 {
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
166 if (enabled ())
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
167 {
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
168 std::shared_ptr<event_queue> evq = gui_event_queue.top ();
0280fd549502 make debugging possible in server mode
John W. Eaton <jwe@octave.org>
parents: 29057
diff changeset
169 evq->add (std::bind (meth, std::ref (m_interpreter)));
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
170 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
171 }
27260
5ac60319575b separate octave_link event queue from events and actions
John W. Eaton <jwe@octave.org>
parents: 27259
diff changeset
172
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
173 void event_manager::set_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
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 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
176 {
27444
160930a3e5ee eliminate some calls to global __get_SUBSYSTEM__ functions
John W. Eaton <jwe@octave.org>
parents: 27302
diff changeset
177 tree_evaluator& tw = m_interpreter.get_evaluator ();
27260
5ac60319575b separate octave_link event queue from events and actions
John W. Eaton <jwe@octave.org>
parents: 27259
diff changeset
178
27284
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
179 instance->set_workspace (tw.at_top_level (), debugging,
1a8762e5662b remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents: 27264
diff changeset
180 tw.get_symbol_info (), true);
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
181 }
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
182 }
27260
5ac60319575b separate octave_link event queue from events and actions
John W. Eaton <jwe@octave.org>
parents: 27259
diff changeset
183 }
5ac60319575b separate octave_link event queue from events and actions
John W. Eaton <jwe@octave.org>
parents: 27259
diff changeset
184
29503
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
185 // FIXME: Should the following function be __event_manager_desktop__
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
186 // with the desktop function implemented in a .m file, similar to the
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
187 // way the UI* functions work?
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
188
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
189 DEFMETHOD (desktop, interp, , ,
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
190 doc: /* -*- texinfo -*-
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
191 @deftypefn {} {} desktop ()
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
192 If running in command-line mode, start the GUI desktop.
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
193 @end deftypefn */)
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
194 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
195 if (interp.experimental_terminal_widget ())
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
196 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
197 if (! octave::application::is_gui_running ())
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
198 {
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
199 // FIXME: Currently, the following action is queued and
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
200 // executed in a Qt event loop and we return immediately to
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
201 // the command prompt where additional commands may be
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
202 // executed. Is that what should happen? Or should we be
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
203 // waiting until the GUI exits to return to the command
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
204 // prompt, similar to the way the UI* functions work?
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
205
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
206 octave::event_manager& evmgr = interp.get_event_manager ();
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
207
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
208 evmgr.start_gui ();
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
209 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
210 else
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
211 warning ("GUI desktop is already running");
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
212 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
213 else
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
214 error ("desktop function requires new experimental terminal widget");
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
215
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
216 return ovl ();
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
217 }
3bfec185c9e2 experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents: 29502
diff changeset
218
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
219 DEFMETHOD (__event_manager_enabled__, interp, , ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
220 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
221 @deftypefn {} {} __event_manager_enabled__ ()
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
222 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
223 @end deftypefn */)
16552
8fc1f6535380 new function, __octave_link_enabled__
John W. Eaton <jwe@octave.org>
parents: 16551
diff changeset
224 {
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
225 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
226
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 return ovl (evmgr.enabled ());
16552
8fc1f6535380 new function, __octave_link_enabled__
John W. Eaton <jwe@octave.org>
parents: 16551
diff changeset
228 }
8fc1f6535380 new function, __octave_link_enabled__
John W. Eaton <jwe@octave.org>
parents: 16551
diff changeset
229
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 DEFMETHOD (__event_manager_edit_file__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
231 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
232 @deftypefn {} {} __event_manager_edit_file__ (@var{file})
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
233 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
234 @end deftypefn */)
16420
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
235 {
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
236 octave_value retval;
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
237
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 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
239
16420
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
240 if (args.length () == 1)
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
241 {
27264
378d3c91f85b style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
242 std::string file
378d3c91f85b style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
243 = args(0).xstring_value ("first argument must be filename");
16420
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
244
23060
baf03cdb28b5 move pager and diary classes into octave namespace
John W. Eaton <jwe@octave.org>
parents: 23057
diff changeset
245 octave::flush_stdout ();
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
246
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
247 retval = evmgr.edit_file (file);
16420
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
248 }
17884
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17787
diff changeset
249 else if (args.length () == 2)
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17787
diff changeset
250 {
27264
378d3c91f85b style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
251 std::string file
378d3c91f85b style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents: 27263
diff changeset
252 = args(0).xstring_value ("first argument must be filename");
17884
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17787
diff changeset
253
23060
baf03cdb28b5 move pager and diary classes into octave namespace
John W. Eaton <jwe@octave.org>
parents: 23057
diff changeset
254 octave::flush_stdout ();
17884
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17787
diff changeset
255
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
256 retval = evmgr.prompt_new_edit_file (file);
17884
766ad9be2966 Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents: 17787
diff changeset
257 }
16420
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
258
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
259 return retval;
81ec95768520 use octave-link instead of hook for edit function
John W. Eaton <jwe@octave.org>
parents: 16415
diff changeset
260 }
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
261
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
262 DEFMETHOD (__event_manager_question_dialog__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
263 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
264 @deftypefn {} {} __event_manager_question_dialog__ (@var{msg}, @var{title}, @var{btn1}, @var{btn2}, @var{btn3}, @var{default})
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
265 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
266 @end deftypefn */)
16551
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
267 {
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
268 octave_value retval;
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
269
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
270 if (args.length () == 6)
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
271 {
20700
68e3a747ca02 rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents: 20667
diff changeset
272 std::string msg = args(0).xstring_value ("invalid arguments");
68e3a747ca02 rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents: 20667
diff changeset
273 std::string title = args(1).xstring_value ("invalid arguments");
68e3a747ca02 rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents: 20667
diff changeset
274 std::string btn1 = args(2).xstring_value ("invalid arguments");
68e3a747ca02 rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents: 20667
diff changeset
275 std::string btn2 = args(3).xstring_value ("invalid arguments");
68e3a747ca02 rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents: 20667
diff changeset
276 std::string btn3 = args(4).xstring_value ("invalid arguments");
68e3a747ca02 rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents: 20667
diff changeset
277 std::string btndef = args(5).xstring_value ("invalid arguments");
16551
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
278
23060
baf03cdb28b5 move pager and diary classes into octave namespace
John W. Eaton <jwe@octave.org>
parents: 23057
diff changeset
279 octave::flush_stdout ();
16551
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
280
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
281 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
282
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
283 retval = evmgr.question_dialog (msg, title, btn1, btn2, btn3, btndef);
16551
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
284 }
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
285
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
286 return retval;
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
287 }
6ae555fc8c43 Add questdlg dialog function and fix variety of dialog bugs.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 16524
diff changeset
288
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
289 DEFMETHOD (__event_manager_file_dialog__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
290 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
291 @deftypefn {} {} __event_manager_file_dialog__ (@var{filterlist}, @var{title}, @var{filename}, @var{size} @var{multiselect}, @var{pathname})
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
292 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
293 @end deftypefn */)
16579
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
294 {
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
295 if (args.length () != 6)
20941
a4f5da7c5463 maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents: 20898
diff changeset
296 return ovl ();
16579
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
297
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
298 octave_value_list retval (3);
16579
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
299
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
300 const Array<std::string> flist = args(0).cellstr_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
301 std::string title = args(1).string_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
302 std::string filename = args(2).string_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
303 Matrix pos = args(3).matrix_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
304 std::string multi_on = args(4).string_value (); // on, off, create
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
305 std::string pathname = args(5).string_value ();
16579
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
306
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
307 octave_idx_type nel;
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
308
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
309 octave::event_manager::filter_list filter_lst;
16579
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
310
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
311 for (octave_idx_type i = 0; i < flist.rows (); i++)
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
312 filter_lst.push_back (std::make_pair (flist(i,0),
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
313 (flist.columns () > 1
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
314 ? flist(i,1) : "")));
16579
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
315
23060
baf03cdb28b5 move pager and diary classes into octave namespace
John W. Eaton <jwe@octave.org>
parents: 23057
diff changeset
316 octave::flush_stdout ();
16580
adc150db1809 style fixes for uigetfile changes
John W. Eaton <jwe@octave.org>
parents: 16579
diff changeset
317
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
318 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
319
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
320 std::list<std::string> items_lst
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
321 = evmgr.file_dialog (filter_lst, title, filename, pathname, multi_on);
20667
8742e0b1cc49 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20581
diff changeset
322
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
323 nel = items_lst.size ();
16579
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
324
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
325 // If 3, then retval is filename, directory, and selected index.
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
326 if (nel <= 3)
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
327 {
21836
2049e123bf7b uigetdir, uigetfile, uiputfile: Return zeros when user cancels (bug #48171)
Mike Miller <mtmiller@octave.org>
parents: 21748
diff changeset
328 if (items_lst.front ().empty ())
21837
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
329 retval = ovl (octave_value (0.), octave_value (0.), octave_value (0.));
21836
2049e123bf7b uigetdir, uigetfile, uiputfile: Return zeros when user cancels (bug #48171)
Mike Miller <mtmiller@octave.org>
parents: 21748
diff changeset
330 else
21837
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
331 {
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
332 int idx = 0;
22862
e365e87371a3 maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents: 22755
diff changeset
333 for (auto& str : items_lst)
21837
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
334 {
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
335 if (idx != 2)
22862
e365e87371a3 maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents: 22755
diff changeset
336 retval(idx++) = str;
21837
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
337 else
22862
e365e87371a3 maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents: 22755
diff changeset
338 retval(idx++) = atoi (str.c_str ());
21837
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
339 }
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
340 }
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
341 }
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
342 else
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
343 {
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
344 // Multiple files.
21837
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
345 nel -= 2;
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
346 Cell items (dim_vector (1, nel));
20667
8742e0b1cc49 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20581
diff changeset
347
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25060
diff changeset
348 auto it = items_lst.begin ();
20667
8742e0b1cc49 eliminate more uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20581
diff changeset
349
21837
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
350 for (int idx = 0; idx < nel; idx++, it++)
3ef630a564f8 Clean up C++ code for F__octave_link_file_dialog__.
Rik <rik@octave.org>
parents: 21836
diff changeset
351 items.xelem (idx) = *it;
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
352
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
353 retval = ovl (items, *it++, atoi (it->c_str ()));
16580
adc150db1809 style fixes for uigetfile changes
John W. Eaton <jwe@octave.org>
parents: 16579
diff changeset
354 }
16579
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
355
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
356 return retval;
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
357 }
7f8db1942dc0 Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents: 16552
diff changeset
358
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
359 DEFMETHOD (__event_manager_list_dialog__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
360 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
361 @deftypefn {} {} __event_manager_list_dialog__ (@var{list}, @var{mode}, @var{size}, @var{initial}, @var{name}, @var{prompt}, @var{ok_string}, @var{cancel_string})
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
362 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
363 @end deftypefn */)
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
364 {
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
365 if (args.length () != 8)
20941
a4f5da7c5463 maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents: 20898
diff changeset
366 return ovl ();
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
367
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
368 Cell list = args(0).cell_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
369 const Array<std::string> tlist = list.cellstr_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
370 octave_idx_type nel = tlist.numel ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
371 std::list<std::string> list_lst;
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
372 for (octave_idx_type i = 0; i < nel; i++)
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
373 list_lst.push_back (tlist(i));
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
374
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
375 std::string mode = args(1).string_value ();
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
376
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
377 Matrix size_matrix = args(2).matrix_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
378 int width = size_matrix(0);
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
379 int height = size_matrix(1);
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
380
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
381 Matrix initial_matrix = args(3).matrix_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
382 nel = initial_matrix.numel ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
383 std::list<int> initial_lst;
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
384 for (octave_idx_type i = 0; i < nel; i++)
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
385 initial_lst.push_back (initial_matrix(i));
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
386
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
387 std::string name = args(4).string_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
388 list = args(5).cell_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
389 const Array<std::string> plist = list.cellstr_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
390 nel = plist.numel ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
391 std::list<std::string> prompt_lst;
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
392 for (octave_idx_type i = 0; i < nel; i++)
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
393 prompt_lst.push_back (plist(i));
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
394 std::string ok_string = args(6).string_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
395 std::string cancel_string = args(7).string_value ();
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
396
23060
baf03cdb28b5 move pager and diary classes into octave namespace
John W. Eaton <jwe@octave.org>
parents: 23057
diff changeset
397 octave::flush_stdout ();
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
398
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
399 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
400
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
401 std::pair<std::list<int>, int> result
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
402 = evmgr.list_dialog (list_lst, mode, width, height, initial_lst,
27932
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
403 name, prompt_lst, ok_string, cancel_string);
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
404
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
405 std::list<int> items_lst = result.first;
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
406 nel = items_lst.size ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
407 Matrix items (dim_vector (1, nel));
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
408 octave_idx_type i = 0;
22862
e365e87371a3 maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents: 22755
diff changeset
409 for (const auto& int_el : items_lst)
e365e87371a3 maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents: 22755
diff changeset
410 items.xelem(i++) = int_el;
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
411
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
412 return ovl (items, result.second);
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
413 }
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
414
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
415 DEFMETHOD (__event_manager_input_dialog__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
416 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
417 @deftypefn {} {} __event_manager_input_dialog__ (@var{prompt}, @var{title}, @var{rowscols}, @var{defaults})
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
418 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
419 @end deftypefn */)
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
420 {
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
421 if (args.length () != 4)
20941
a4f5da7c5463 maint: Replace "octave_value_list ()" with "ovl ()".
Rik <rik@octave.org>
parents: 20898
diff changeset
422 return ovl ();
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
423
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
424 Cell prompt = args(0).cell_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
425 Array<std::string> tmp = prompt.cellstr_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
426 octave_idx_type nel = tmp.numel ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
427 std::list<std::string> prompt_lst;
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
428 for (octave_idx_type i = 0; i < nel; i++)
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
429 prompt_lst.push_back (tmp(i));
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
430
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
431 std::string title = args(1).string_value ();
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
432
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
433 Matrix rc = args(2).matrix_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
434 nel = rc.rows ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
435 std::list<float> nr;
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
436 std::list<float> nc;
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
437 for (octave_idx_type i = 0; i < nel; i++)
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
438 {
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
439 nr.push_back (rc(i,0));
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
440 nc.push_back (rc(i,1));
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
441 }
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
442
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
443 Cell defaults = args(3).cell_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
444 tmp = defaults.cellstr_value ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
445 nel = tmp.numel ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
446 std::list<std::string> defaults_lst;
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
447 for (octave_idx_type i = 0; i < nel; i++)
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
448 defaults_lst.push_back (tmp(i));
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
449
23060
baf03cdb28b5 move pager and diary classes into octave namespace
John W. Eaton <jwe@octave.org>
parents: 23057
diff changeset
450 octave::flush_stdout ();
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
451
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 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
453
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
454 std::list<std::string> items_lst
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
455 = evmgr.input_dialog (prompt_lst, title, nr, nc, defaults_lst);
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
456
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
457 nel = items_lst.size ();
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
458 Cell items (dim_vector (nel, 1));
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
459 octave_idx_type i = 0;
22862
e365e87371a3 maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents: 22755
diff changeset
460 for (const auto& str_el : items_lst)
e365e87371a3 maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents: 22755
diff changeset
461 items.xelem(i++) = str_el;
20898
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
462
8da80da1ac37 maint: Use ovl() more places in the code.
Rik <rik@octave.org>
parents: 20892
diff changeset
463 return ovl (items);
16512
7f2395651a1c dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents: 16485
diff changeset
464 }
17010
c50ee84842a9 Add preferences and prefdir functions
John Donoghue <john.donoghue@ieee.org>
parents: 16894
diff changeset
465
25921
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
466
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
467 DEFMETHOD (__event_manager_named_icon__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
468 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
469 @deftypefn {} {} __event_manager_dialog_icons__ (@var{icon_name})
25921
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
470 Undocumented internal function.
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
471 @end deftypefn */)
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
472 {
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
473 uint8NDArray retval;
25948
700b3f415ebe maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 25921
diff changeset
474
25921
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
475 if (args.length () > 0)
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
476 {
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
477 std::string icon_name = args(0).xstring_value ("invalid arguments");
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
478
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
479 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
480
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
481 retval = evmgr.get_named_icon (icon_name);
25921
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
482 }
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
483
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
484 return ovl (retval);
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
485 }
9c47eedc44e2 msgbox.m: use graphics objects to build dialog (bug #42490)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25790
diff changeset
486
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
487 DEFMETHOD (__event_manager_show_preferences__, interp, , ,
27932
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
488 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
489 @deftypefn {} {} __event_manager_show_preferences__ ()
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
490 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
491 @end deftypefn */)
17010
c50ee84842a9 Add preferences and prefdir functions
John Donoghue <john.donoghue@ieee.org>
parents: 16894
diff changeset
492 {
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
493 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
494
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
495 return ovl (evmgr.show_preferences ());
17010
c50ee84842a9 Add preferences and prefdir functions
John Donoghue <john.donoghue@ieee.org>
parents: 16894
diff changeset
496 }
c50ee84842a9 Add preferences and prefdir functions
John Donoghue <john.donoghue@ieee.org>
parents: 16894
diff changeset
497
27602
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
498 DEFMETHOD (__event_manager_apply_preferences__, interp, , ,
27932
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
499 doc: /* -*- texinfo -*-
27602
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
500 @deftypefn {} {} __event_manager_apply_preferences__ ()
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
501 Undocumented internal function.
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
502 @end deftypefn */)
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
503 {
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
504 octave::event_manager& evmgr = interp.get_event_manager ();
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
505
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
506 return ovl (evmgr.apply_preferences ());
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
507 }
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27554
diff changeset
508
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
509 DEFMETHOD (__event_manager_gui_preference__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
510 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
511 @deftypefn {} {} __event_manager_gui_preference__ ()
25639
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
512 Undocumented internal function.
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
513 @end deftypefn */)
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
514 {
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
515 std::string key;
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
516 std::string value = "";
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
517
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
518 if (args.length () >= 1)
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
519 key = args(0).string_value();
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
520 else
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
521 error ("__event_manager_gui_preference__: "
25639
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
522 "first argument must be the preference key");
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
523
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
524 if (args.length () >= 2)
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
525 value = args(1).string_value();
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
526
26336
a6694db4bd41 Do not try to change GUI preferences if it isn't running (bug #55318).
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
527 if (octave::application::is_gui_running ())
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
528 {
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
529 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
530
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
531 return ovl (evmgr.gui_preference (key, value));
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
532 }
26336
a6694db4bd41 Do not try to change GUI preferences if it isn't running (bug #55318).
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
533 else
a6694db4bd41 Do not try to change GUI preferences if it isn't running (bug #55318).
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
534 return ovl (value);
25639
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
535 }
7644e7f1721f change gui preferences from within the worker thread (bug #49119)
Torsten <mttl@mailbox.org>
parents: 25337
diff changeset
536
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
537 DEFMETHOD (__event_manager_file_remove__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
538 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
539 @deftypefn {} {} __event_manager_file_remove__ ()
25790
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
540 Undocumented internal function.
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
541 @end deftypefn */)
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
542 {
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
543 std::string old_name, new_name;
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
544
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
545 if (args.length () == 2)
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
546 {
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
547 old_name = args(0).string_value();
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
548 new_name = args(1).string_value();
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
549 }
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
550 else
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
551 error ("__event_manager_file_remove__: "
25790
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
552 "old and new name expected as arguments");
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
553
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
554 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
555
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
556 evmgr.file_remove (old_name, new_name);
25790
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
557
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
558 return ovl ();
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
559 }
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
560
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
561 DEFMETHOD (__event_manager_file_renamed__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
562 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
563 @deftypefn {} {} __event_manager_file_renamed__ ()
25790
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
564 Undocumented internal function.
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
565 @end deftypefn */)
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
566 {
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
567 bool load_new;
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
568
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
569 if (args.length () == 1)
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
570 load_new = args(0).bool_value();
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
571 else
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
572 error ("__event_manager_file_renamed__: "
25790
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
573 "first argument must be boolean for reload new named file");
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
574
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
575 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
576
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
577 evmgr.file_renamed (load_new);
25790
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
578
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
579 return ovl ();
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
580 }
872111558bc0 reload editor files when their path changes by using movefile (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25639
diff changeset
581
24641
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
582 DEFMETHOD (openvar, interp, args, ,
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
583 doc: /* -*- texinfo -*-
23938
e54e13ee99ce openvar: fix doc string declaration
Mike Miller <mtmiller@octave.org>
parents: 23927
diff changeset
584 @deftypefn {} {} openvar (@var{name})
e54e13ee99ce openvar: fix doc string declaration
Mike Miller <mtmiller@octave.org>
parents: 23927
diff changeset
585 Open the variable @var{name} in the graphical Variable Editor.
e54e13ee99ce openvar: fix doc string declaration
Mike Miller <mtmiller@octave.org>
parents: 23927
diff changeset
586 @end deftypefn */)
23927
e3a36f84d01d provide variable-editor widget for the GUI
Michael Barnes <mjbcode@runbox.com>
parents: 23693
diff changeset
587 {
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
588 if (args.length () != 1)
23927
e3a36f84d01d provide variable-editor widget for the GUI
Michael Barnes <mjbcode@runbox.com>
parents: 23693
diff changeset
589 print_usage ();
e3a36f84d01d provide variable-editor widget for the GUI
Michael Barnes <mjbcode@runbox.com>
parents: 23693
diff changeset
590
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
591 if (! args(0).is_string ())
24208
eec262017c6a maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 24082
diff changeset
592 error ("openvar: NAME must be a string");
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
593
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
594 std::string name = args(0).string_value ();
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
595
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
596 if (! (Fisguirunning ())(0).is_true ())
24208
eec262017c6a maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 24082
diff changeset
597 warning ("openvar: GUI is not running, can't start Variable Editor");
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
598 else
24641
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
599 {
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
600 octave_value val = interp.varval (name);
24641
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
601
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
602 if (val.is_undefined ())
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
603 error ("openvar: '%s' is not a variable", name.c_str ());
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
604
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
605 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
606
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
607 evmgr.edit_variable (name, val);
24641
7d177be54c37 pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents: 24631
diff changeset
608 }
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
609
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
610 return ovl ();
23927
e3a36f84d01d provide variable-editor widget for the GUI
Michael Barnes <mjbcode@runbox.com>
parents: 23693
diff changeset
611 }
e3a36f84d01d provide variable-editor widget for the GUI
Michael Barnes <mjbcode@runbox.com>
parents: 23693
diff changeset
612
23976
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
613 /*
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
614 %!error openvar ()
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
615 %!error openvar ("a", "b")
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
616 %!error <NAME must be a string> openvar (1:10)
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
617 */
529272d1c271 Complete openvar implementation (bug #51899).
Rik <rik@octave.org>
parents: 23938
diff changeset
618
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
619 DEFMETHOD (__event_manager_show_doc__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
620 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
621 @deftypefn {} {} __event_manager_show_doc__ (@var{filename})
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
622 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21837
diff changeset
623 @end deftypefn */)
17029
359c5ca795cd Display doc info pages using documentation browser when in GUI mode (Bug #39451)
John Donoghue <john.donoghue@ieee.org>
parents: 17010
diff changeset
624 {
359c5ca795cd Display doc info pages using documentation browser when in GUI mode (Bug #39451)
John Donoghue <john.donoghue@ieee.org>
parents: 17010
diff changeset
625 std::string file;
17010
c50ee84842a9 Add preferences and prefdir functions
John Donoghue <john.donoghue@ieee.org>
parents: 16894
diff changeset
626
17029
359c5ca795cd Display doc info pages using documentation browser when in GUI mode (Bug #39451)
John Donoghue <john.donoghue@ieee.org>
parents: 17010
diff changeset
627 if (args.length () >= 1)
359c5ca795cd Display doc info pages using documentation browser when in GUI mode (Bug #39451)
John Donoghue <john.donoghue@ieee.org>
parents: 17010
diff changeset
628 file = args(0).string_value();
359c5ca795cd Display doc info pages using documentation browser when in GUI mode (Bug #39451)
John Donoghue <john.donoghue@ieee.org>
parents: 17010
diff changeset
629
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
630 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
631
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 return ovl (evmgr.show_doc (file));
17029
359c5ca795cd Display doc info pages using documentation browser when in GUI mode (Bug #39451)
John Donoghue <john.donoghue@ieee.org>
parents: 17010
diff changeset
633 }
25060
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
634
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
635 DEFMETHOD (__event_manager_register_doc__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
636 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
637 @deftypefn {} {} __event_manager_register_doc__ (@var{filename})
25060
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
638 Undocumented internal function.
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
639 @end deftypefn */)
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
640 {
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
641 std::string file;
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
642
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
643 if (args.length () >= 1)
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
644 file = args(0).string_value();
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
645
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
646 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
647
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
648 return ovl (evmgr.register_doc (file));
25060
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
649 }
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
650
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
651 DEFMETHOD (__event_manager_unregister_doc__, interp, args, ,
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
652 doc: /* -*- texinfo -*-
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
653 @deftypefn {} {} __event_manager_unregister_doc__ (@var{filename})
25060
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
654 Undocumented internal function.
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
655 @end deftypefn */)
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
656 {
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
657 std::string file;
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
658
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
659 if (args.length () >= 1)
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
660 file = args(0).string_value();
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
661
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
662 octave::event_manager& evmgr = interp.get_event_manager ();
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
663
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27262
diff changeset
664 return ovl (evmgr.unregister_doc (file));
25060
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
665 }
27554
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
666
29057
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
667 DEFMETHOD (__event_manager_gui_status_update__, interp, args, ,
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
668 doc: /* -*- texinfo -*-
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
669 @deftypefn {} {} __event_manager_gui_status_update__ (@var{feature}, @var{status})
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
670 Internal function for updating the status of some features in the GUI.
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
671 @end deftypefn */)
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
672 {
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
673 // This is currently a stub and should only be activated some
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
674 // interpreter action only implemented in m-files requires to update
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
675 // a status indicator in the gui. BUT: This internal function can
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
676 // be activated by the user leading to gui indicators not reflecting
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
677 // the real state of the related feature.
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
678 return ovl ();
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
679
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
680 std::string feature;
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
681 std::string status;
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
682
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
683 if (! (Fisguirunning ())(0).is_true ())
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
684 return ovl ();
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
685
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
686 if (args.length () < 2)
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
687 error ("__event_manager_gui_status_update__: two parameters required");
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
688 if (! (args(0).is_string ()))
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
689 error ("__event_manager_gui_status_update__: FEATURE must be a string");
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
690 if (! (args(1).is_string ()))
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
691 error ("__event_manager_gui_status_update__: STATUS must be a string");
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
692
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
693 feature = args(0).string_value ();
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
694 status = args(1).string_value ();
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
695
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
696 octave::event_manager& evmgr = interp.get_event_manager ();
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
697
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
698 return ovl (evmgr.gui_status_update (feature, status));
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
699 }
450920c987b8 update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28888
diff changeset
700
28788
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
701 DEFMETHOD (__event_manager_update_gui_lexer__, interp, , ,
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
702 doc: /* -*- texinfo -*-
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
703 @deftypefn {} {} __event_manager_update_gui_lexer__ ()
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
704 Undocumented internal function.
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
705 @end deftypefn */)
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
706 {
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
707 octave::event_manager& evmgr = interp.get_event_manager ();
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
708
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
709 return ovl (evmgr.update_gui_lexer ());
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
710 }
aba2c4eadb83 add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27987
diff changeset
711
27554
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
712 DEFMETHOD (__event_manager_copy_image_to_clipboard__, interp, args, ,
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
713 doc: /* -*- texinfo -*-
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
714 @deftypefn {} {} __event_manager_copy_image_to_clipboard__ (@var{filename})
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
715 Undocumented internal function.
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
716 @end deftypefn */)
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
717 {
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
718 std::string file;
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
719
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
720 if (args.length () >= 1)
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
721 file = args(0).string_value();
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
722
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
723 octave::event_manager& evmgr = interp.get_event_manager ();
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
724 evmgr.copy_image_to_clipboard (file);
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
725 return ovl ();
d0f778462a51 Restore hability to copy figure to clipboard (bug #55970)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27444
diff changeset
726 }
27669
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
727
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
728 DEFMETHOD (commandhistory, interp, args, ,
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
729 doc: /* -*- texinfo -*-
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
730 @deftypefn {} {} commandhistory ()
27673
58bff27d8714 Fix typo in cset 271b5cd640d7 (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27669
diff changeset
731 Show the GUI command history window and give it the keyboard focus.
27795
afbaad39d25c doc: grammarcheck C++ files in libinterp/ directory.
Rik <rik@octave.org>
parents: 27688
diff changeset
732 @seealso{commandwindow, filebrowser, workspace}
27669
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
733 @end deftypefn */)
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
734 {
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
735 if (args.length () != 0)
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
736 print_usage ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
737
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
738 octave::event_manager& evmgr = interp.get_event_manager ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
739 evmgr.focus_window ("history");
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
740 return ovl ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
741 }
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
742
27688
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
743 DEFMETHOD (commandwindow, interp, args, ,
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
744 doc: /* -*- texinfo -*-
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
745 @deftypefn {} {} commandwindow ()
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
746 Show the GUI command window and give it the keyboard focus.
27795
afbaad39d25c doc: grammarcheck C++ files in libinterp/ directory.
Rik <rik@octave.org>
parents: 27688
diff changeset
747 @seealso{commandhistory, filebrowser, workspace}
27688
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
748 @end deftypefn */)
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
749 {
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
750 if (args.length () != 0)
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
751 print_usage ();
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
752
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
753 octave::event_manager& evmgr = interp.get_event_manager ();
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
754 evmgr.focus_window ("command");
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
755 return ovl ();
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
756 }
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
757
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
758 DEFMETHOD (filebrowser, interp, args, ,
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
759 doc: /* -*- texinfo -*-
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
760 @deftypefn {} {} filebrowser ()
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
761 Show the GUI file browser window and give it the keyboard focus.
27795
afbaad39d25c doc: grammarcheck C++ files in libinterp/ directory.
Rik <rik@octave.org>
parents: 27688
diff changeset
762 @seealso{commandwindow, commandhistory, workspace}
27688
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
763 @end deftypefn */)
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
764 {
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
765 if (args.length () != 0)
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
766 print_usage ();
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
767
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
768 octave::event_manager& evmgr = interp.get_event_manager ();
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
769 evmgr.focus_window ("filebrowser");
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
770 return ovl ();
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
771 }
7e6836784575 doc: Move commandwind() function and friends to new section of manual (bug #57213).
Rik <rik@octave.org>
parents: 27673
diff changeset
772
27669
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
773 DEFMETHOD (workspace, interp, args, ,
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
774 doc: /* -*- texinfo -*-
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
775 @deftypefn {} {} workspace ()
27673
58bff27d8714 Fix typo in cset 271b5cd640d7 (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27669
diff changeset
776 Show the GUI workspace window and give it the keyboard focus.
27795
afbaad39d25c doc: grammarcheck C++ files in libinterp/ directory.
Rik <rik@octave.org>
parents: 27688
diff changeset
777 @seealso{commandwindow, commandhistory, filebrowser}
27669
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
778 @end deftypefn */)
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
779 {
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
780 if (args.length () != 0)
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
781 print_usage ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
782
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
783 octave::event_manager& evmgr = interp.get_event_manager ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
784 evmgr.focus_window ("workspace");
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
785 return ovl ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27602
diff changeset
786 }