changeset 17920:5c3f22dd0bbb

raise SIGINT in octave_interpreter instead of in QTerminal * QTerminal.h (QTerminal::interrupt_signal): New signal. (QTerminal::terminal_interrupt): New slot. * QUnixTerminalImpl.cpp (QUnixTerminalImpl::initialize): Connect m_terminalView::interrupt_signal to QTerminal::terminal_interrupt. * TerminalView.h (TerminalView::interrupt_signal): New signal. * TerminalView.cpp (TerminalView::copyClipboard): Emit interrupt_signal instead of calling raising SIGINT signal. * terminal-dock-widget.h, terminal-dock-widget.cc (terminal_dock_widget::interrupt_signal): New signal. (terminal_dock_widget::terminal_interrupt): New slot. (terminal_dock_widget::terminal_dock_widget): Connect terminal::interrupt_signal to terminal_dock_widget::terminal_interrupt slot. (terminal_dock_widget::terminal_interrupt): New function. Emit terminal_dock_widget::interrupt_signal. * QWinTerminalImpl.cpp (QWinTerminalImpl::copyClipboard): Call terminal_interrupt instead of raising SIGINT signal. main-window.cc (main_window::construct_octave_qt_link): Connect command_window::interrupt_signal to _octave_qt_link::terminal_interrupt slot. * octave-qt-link.h, octave-qt-link.cc (octave_qt_link::terminal_interrupt): New slot. * octave-interpreter.h, octave_interpreter.cc (octave_interpreter::interrupt): New slot. Raise SIGINT here.
author John W. Eaton <jwe@octave.org>
date Tue, 12 Nov 2013 15:46:59 -0500
parents b6d07dd90f3d
children 2a4acd6548c6
files libgui/qterminal/libqterminal/QTerminal.h libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp libgui/qterminal/libqterminal/unix/TerminalView.cpp libgui/qterminal/libqterminal/unix/TerminalView.h libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp libgui/src/main-window.cc libgui/src/octave-interpreter.cc libgui/src/octave-interpreter.h libgui/src/octave-qt-link.cc libgui/src/octave-qt-link.h libgui/src/terminal-dock-widget.cc libgui/src/terminal-dock-widget.h
diffstat 12 files changed, 50 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/qterminal/libqterminal/QTerminal.h	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/qterminal/libqterminal/QTerminal.h	Tue Nov 12 15:46:59 2013 -0500
@@ -85,6 +85,8 @@
 
   void report_status_message (const QString&);
 
+  void interrupt_signal (void);
+
 public slots:
 
   virtual void copyClipboard (void) = 0;
@@ -104,6 +106,8 @@
 
   void notice_settings (const QSettings *settings);
 
+  void terminal_interrupt (void) { emit interrupt_signal (); }
+
 protected:
 
   QTerminal (QWidget *xparent = 0) : QWidget (xparent)
--- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp	Tue Nov 12 15:46:59 2013 -0500
@@ -46,6 +46,9 @@
     connect(m_terminalView, SIGNAL(customContextMenuRequested(QPoint)),
             this, SLOT(handleCustomContextMenuRequested(QPoint)));
 
+    connect (m_terminalView, SIGNAL (interrupt_signal (void)),
+             this, SLOT (terminal_interrupt ()));
+
 #ifdef Q_OS_MAC
     QFont font = QFont("Monaco");
     font.setStyleHint(QFont::TypeWriter);
--- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp	Tue Nov 12 15:46:59 2013 -0500
@@ -2274,9 +2274,7 @@
   QString text = _screenWindow->selectedText(_preserveLineBreaks);
 
   if (text.isEmpty ())
-    {
-      ::raise (SIGINT);
-    }
+    emit interrupt_signal ();
   else
     QApplication::clipboard()->setText(text);
 }
--- a/libgui/qterminal/libqterminal/unix/TerminalView.h	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/qterminal/libqterminal/unix/TerminalView.h	Tue Nov 12 15:46:59 2013 -0500
@@ -447,6 +447,8 @@
 
 signals:
 
+    void interrupt_signal (void);
+
     /**
      * Emitted when the user presses a key whilst the terminal widget has focus.
      */
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp	Tue Nov 12 15:46:59 2013 -0500
@@ -1518,9 +1518,7 @@
   QString selection = d->getSelection ();
 
   if (selection.isEmpty ())
-    {
-      ::raise (SIGINT);
-    }
+    terminal_interrupt ();
   else
     {
       clipboard->setText (selection);
--- a/libgui/src/main-window.cc	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/src/main-window.cc	Tue Nov 12 15:46:59 2013 -0500
@@ -1080,6 +1080,9 @@
            SLOT (handle_rename_variable_request (const QString&,
                                                  const QString&)));
 
+  connect (command_window, SIGNAL (interrupt_signal (void)),
+           _octave_qt_link, SLOT (terminal_interrupt (void)));
+
   _octave_qt_link->execute_interpreter ();
 
   octave_link::connect_link (_octave_qt_link);
--- a/libgui/src/octave-interpreter.cc	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/src/octave-interpreter.cc	Tue Nov 12 15:46:59 2013 -0500
@@ -27,6 +27,8 @@
 
 #include <string>
 
+#include <signal.h>
+
 #include "octave.h"
 
 #include "octave-interpreter.h"
@@ -39,3 +41,9 @@
 
   octave_execute_interpreter ();
 }
+
+void
+octave_interpreter::interrupt (void)
+{
+  ::raise (SIGINT);
+}
--- a/libgui/src/octave-interpreter.h	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/src/octave-interpreter.h	Tue Nov 12 15:46:59 2013 -0500
@@ -41,6 +41,8 @@
   // Initialize and execute the octave interpreter.
 
   void execute (void);
+
+  void interrupt (void);
 };
 
 #endif
--- a/libgui/src/octave-qt-link.cc	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/src/octave-qt-link.cc	Tue Nov 12 15:46:59 2013 -0500
@@ -548,4 +548,8 @@
   emit show_doc_signal (QString::fromStdString (file));
 }
 
-
+void
+octave_qt_link::terminal_interrupt (void)
+{
+  command_interpreter->interrupt ();  
+}
--- a/libgui/src/octave-qt-link.h	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/src/octave-qt-link.h	Tue Nov 12 15:46:59 2013 -0500
@@ -184,6 +184,10 @@
   void show_preferences_signal (void);
 
   void show_doc_signal (const QString &file);
+
+public slots:
+
+  void terminal_interrupt (void);
 };
 
 #endif
--- a/libgui/src/terminal-dock-widget.cc	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/src/terminal-dock-widget.cc	Tue Nov 12 15:46:59 2013 -0500
@@ -38,6 +38,9 @@
   set_title (tr ("Command Window"));
 
   setWidget (terminal);
+
+  connect (terminal, SIGNAL (interrupt_signal (void)),
+           this, SLOT (terminal_interrupt ()));
 }
 
 bool
@@ -59,3 +62,9 @@
   w->activateWindow ();
   w->raise ();
 }
+
+void
+terminal_dock_widget::terminal_interrupt (void)
+{
+  emit interrupt_signal ();
+}
--- a/libgui/src/terminal-dock-widget.h	Tue Nov 12 12:36:30 2013 -0500
+++ b/libgui/src/terminal-dock-widget.h	Tue Nov 12 15:46:59 2013 -0500
@@ -41,6 +41,14 @@
 
   void focus (void);
 
+signals:
+
+  void interrupt_signal (void);
+
+protected slots:
+
+  void terminal_interrupt (void);
+
 private:
 
   QTerminal *terminal;