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;