Mercurial > octave
changeset 31697:dd904ce6f53f
use interpreter event to display documentation in terminal and editor widgets
* QTerminal.h, QTerminal.cc (QTerminal::doc_on_expression):
Use interpreter_event to display doc browser instead of calling
base_qobject::show_documentation_window.
(QTerminal::interpreter_event): New signals.
* command-widget.h, command-widget.cc (console::interpreter_event):
New signals.
(command_widget::command_widget): Forward console interpreter_event
signals to command_widget interpreter_event signals.
* octave-qscintilla.cc (octave_qscintilla::contextmenu_help_doc):
Use interpreter_event to display doc browser instead of calling
base_qobject::show_documentation_window.
* octave-qobject.cc (base_qobject::terminal_widget):
Also call connect_interpreter_events for QTerminal.
* terminal-dock-widget.h, terminal-dock-widget.cc
(terminal_dock_widget::interpreter_event): New signals.
(terminal_dock_widget::terminal_dock_widget): Forward
QTerminal interpreter_event signals to terminal_dock_widget
interpreter_event signals.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 30 Dec 2022 23:13:00 -0500 |
parents | 8fed04d0607c |
children | 276a992d0c08 |
files | libgui/qterminal/libqterminal/QTerminal.cc libgui/qterminal/libqterminal/QTerminal.h libgui/src/command-widget.cc libgui/src/command-widget.h libgui/src/m-editor/octave-qscintilla.cc libgui/src/octave-qobject.cc libgui/src/terminal-dock-widget.cc libgui/src/terminal-dock-widget.h |
diffstat | 8 files changed, 54 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/qterminal/libqterminal/QTerminal.cc Mon Dec 26 17:29:59 2022 -0500 +++ b/libgui/qterminal/libqterminal/QTerminal.cc Fri Dec 30 23:13:00 2022 -0500 @@ -41,6 +41,9 @@ #include "gui-settings.h" #include "octave-qobject.h" +#include "builtin-defun-decls.h" +#include "interpreter.h" + #include "QTerminal.h" #if defined (Q_OS_WIN32) # include "win32/QWinTerminalImpl.h" @@ -194,8 +197,15 @@ // slot for showing documentation on selected epxression void QTerminal::doc_on_expression () { - QString expr = m_doc_selected_action->data ().toString (); - m_octave_qobj.show_documentation_window (expr); + std::string expr = m_doc_selected_action->data ().toString ().toStdString (); + + emit interpreter_event + ([=] (octave::interpreter& interp) + { + // INTERPRETER THREAD + + octave::F__event_manager_show_documentation__ (interp, ovl (expr)); + }); } void
--- a/libgui/qterminal/libqterminal/QTerminal.h Mon Dec 26 17:29:59 2022 -0500 +++ b/libgui/qterminal/libqterminal/QTerminal.h Fri Dec 30 23:13:00 2022 -0500 @@ -24,12 +24,16 @@ #ifndef QTERMINAL_H #define QTERMINAL_H +#include "octave-config.h" + #include <QColor> #include <QList> #include <QPoint> #include <QString> #include <QWidget> +#include "qt-interpreter-events.h" + namespace octave { class base_qobject; @@ -109,6 +113,9 @@ void clear_command_window_request (void); + void interpreter_event (const octave::fcn_callback& fcn); + void interpreter_event (const octave::meth_callback& meth); + public slots: virtual void copyClipboard (void) = 0;
--- a/libgui/src/command-widget.cc Mon Dec 26 17:29:59 2022 -0500 +++ b/libgui/src/command-widget.cc Fri Dec 30 23:13:00 2022 -0500 @@ -87,6 +87,12 @@ connect (this, &command_widget::new_command_line_signal, m_console, &console::new_command_line); + connect (m_console, QOverload<const fcn_callback&>::of (&console::interpreter_event), + this, QOverload<const fcn_callback&>::of (&command_widget::interpreter_event)); + + connect (m_console, QOverload<const meth_callback&>::of (&console::interpreter_event), + this, QOverload<const meth_callback&>::of (&command_widget::interpreter_event)); + insert_interpreter_output ("\n\n Welcome to Octave\n\n"); }
--- a/libgui/src/command-widget.h Mon Dec 26 17:29:59 2022 -0500 +++ b/libgui/src/command-widget.h Fri Dec 30 23:13:00 2022 -0500 @@ -51,6 +51,11 @@ console (command_widget *p, base_qobject& oct_qobj); + signals: + + void interpreter_event (const fcn_callback& fcn); + void interpreter_event (const meth_callback& meth); + public slots: void cursor_position_changed (int line, int col); @@ -103,11 +108,11 @@ void interpreter_resume (void); void interpreter_stop (void); + void new_command_line_signal (const QString& command = QString ()); + void interpreter_event (const fcn_callback& fcn); void interpreter_event (const meth_callback& meth); - void new_command_line_signal (const QString& command = QString ()); - public slots: void process_input_line (const QString& input_line);
--- a/libgui/src/m-editor/octave-qscintilla.cc Mon Dec 26 17:29:59 2022 -0500 +++ b/libgui/src/m-editor/octave-qscintilla.cc Fri Dec 30 23:13:00 2022 -0500 @@ -336,7 +336,17 @@ void octave_qscintilla::contextmenu_help_doc (bool documentation) { if (documentation) - m_octave_qobj.show_documentation_window (m_word_at_cursor); + { + std::string name = m_word_at_cursor.toStdString (); + + emit interpreter_event + ([=] (interpreter& interp) + { + // INTERPRETER THREAD + + F__event_manager_show_documentation__ (interp, ovl (name)); + }); + } else emit execute_command_in_terminal_signal ("help " + m_word_at_cursor); }
--- a/libgui/src/octave-qobject.cc Mon Dec 26 17:29:59 2022 -0500 +++ b/libgui/src/octave-qobject.cc Fri Dec 30 23:13:00 2022 -0500 @@ -489,6 +489,8 @@ // Connect the interrupt signal (emitted by Ctrl-C) connect (cmd_widget, &QTerminal::interrupt_signal, this, &base_qobject::interpreter_interrupt); + + connect_interpreter_events (cmd_widget); } }
--- a/libgui/src/terminal-dock-widget.cc Mon Dec 26 17:29:59 2022 -0500 +++ b/libgui/src/terminal-dock-widget.cc Fri Dec 30 23:13:00 2022 -0500 @@ -92,6 +92,12 @@ connect (this, &terminal_dock_widget::visibilityChanged, widget, &QTerminal::handle_visibility_changed); + connect (widget, QOverload<const fcn_callback&>::of (&QTerminal::interpreter_event), + this, QOverload<const fcn_callback&>::of (&terminal_dock_widget::interpreter_event)); + + connect (widget, QOverload<const meth_callback&>::of (&QTerminal::interpreter_event), + this, QOverload<const meth_callback&>::of (&terminal_dock_widget::interpreter_event)); + m_terminal = widget; }
--- a/libgui/src/terminal-dock-widget.h Mon Dec 26 17:29:59 2022 -0500 +++ b/libgui/src/terminal-dock-widget.h Fri Dec 30 23:13:00 2022 -0500 @@ -80,6 +80,9 @@ void execute_command_signal (const QString&); + void interpreter_event (const fcn_callback& fcn); + void interpreter_event (const meth_callback& meth); + public slots: void notice_settings (void);