Mercurial > octave
changeset 31087:9c0099048264
exp cmd widget: fix missing promt after error
* octave-qobject.cc (base_qobject::terminal_widget): connect signals
of interpreter events to terminal signals instead of slots
* qt-interpreter-events.cc (display_exception): emit signal for
new command line after exception message in eyp. terminal widget
* qt-interpreter-events.h: new signal new_command_line_signal
* terminal-dock-widget.cc (terminal_dock_widget): connect new
interpreter triggered signal to related slot in console;
(interpreter_output): removed, slot was only emitting a signal,
which is now directly connected to the first signal;
(update_prompt): dito
* terminal-dock-widget.h: new signal new_command_line_signal,
removed interpreter_output and update_prompt
author | Torsten Lilge <ttl-octave@mailbox.org> |
---|---|
date | Fri, 10 Jun 2022 18:02:23 +0200 |
parents | d5696a4efa84 |
children | 9da8bb2974d7 |
files | libgui/src/octave-qobject.cc libgui/src/qt-interpreter-events.cc libgui/src/qt-interpreter-events.h libgui/src/terminal-dock-widget.cc libgui/src/terminal-dock-widget.h |
diffstat | 5 files changed, 16 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/octave-qobject.cc Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/octave-qobject.cc Fri Jun 10 18:02:23 2022 +0200 @@ -474,10 +474,13 @@ this, &base_qobject::interpreter_stop); connect (qt_link (), &qt_interpreter_events::interpreter_output_signal, - m_terminal_widget, &terminal_dock_widget::interpreter_output); + m_terminal_widget, &terminal_dock_widget::interpreter_output_signal); connect (qt_link (), &qt_interpreter_events::update_prompt_signal, - m_terminal_widget, &terminal_dock_widget::update_prompt); + m_terminal_widget, &terminal_dock_widget::update_prompt_signal); + + connect (qt_link (), &qt_interpreter_events::new_command_line_signal, + m_terminal_widget, &terminal_dock_widget::new_command_line_signal); connect_interpreter_events (cmd_widget); }
--- a/libgui/src/qt-interpreter-events.cc Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/qt-interpreter-events.cc Fri Jun 10 18:02:23 2022 +0200 @@ -510,9 +510,12 @@ if (m_octave_qobj.experimental_terminal_widget () && m_octave_qobj.have_terminal_window ()) { + // Output the exception message std::ostringstream buf; ee.display (buf); emit interpreter_output_signal (QString::fromStdString (buf.str ())); + // Create w new command line + emit new_command_line_signal (); } else {
--- a/libgui/src/qt-interpreter-events.h Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/qt-interpreter-events.h Fri Jun 10 18:02:23 2022 +0200 @@ -287,8 +287,9 @@ void show_community_news_signal (int serial); void show_release_notes_signal (void); - // Note: this signal currently not used by the old terminal widget. + // Note: the next two signals are currently not used by the old terminal widget. void interpreter_output_signal (const QString& msg); + void new_command_line_signal (const QString& msg = QString ()); void gui_status_update_signal (const QString& feature, const QString& status);
--- a/libgui/src/terminal-dock-widget.cc Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/terminal-dock-widget.cc Fri Jun 10 18:02:23 2022 +0200 @@ -67,6 +67,9 @@ connect (this, &terminal_dock_widget::execute_command_signal, con, &console::execute_command); + connect (this, &terminal_dock_widget::new_command_line_signal, + con, &console::new_command_line); + m_terminal = widget; } else @@ -147,18 +150,6 @@ emit settings_changed (settings); } - void terminal_dock_widget::interpreter_output (const QString& msg) - { - if (m_experimental_terminal_widget) - emit interpreter_output_signal (msg); - } - - void terminal_dock_widget::update_prompt (const QString& prompt) - { - if (m_experimental_terminal_widget) - emit update_prompt_signal (prompt); - } - void terminal_dock_widget::init_command_prompt () { if (m_experimental_terminal_widget)
--- a/libgui/src/terminal-dock-widget.h Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/terminal-dock-widget.h Fri Jun 10 18:02:23 2022 +0200 @@ -65,26 +65,21 @@ void settings_changed (const gui_settings *settings); - // Note: UPDATE_PROMPT_SIGNAL and INTERPRETER_OUTPUT_SIGNAL are + // Note: the following four signals are // currently only used by the new experimental terminal widget. void update_prompt_signal (const QString&); void interpreter_output_signal (const QString&); + void new_command_line_signal (const QString& = QString ()); + void execute_command_signal (const QString&); public slots: void notice_settings (const gui_settings *settings); - // Note: INTERPRETER_OUTPUT and UPDATE_PROMPT are currently only - // used by the new experimental terminal widget. - - void interpreter_output (const QString&); - - void update_prompt (const QString&); - private: bool m_experimental_terminal_widget;