Mercurial > hg > octave-nkf
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 +++ b/libgui/qterminal/libqterminal/QTerminal.h @@ -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 +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp @@ -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 +++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp @@ -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 +++ b/libgui/qterminal/libqterminal/unix/TerminalView.h @@ -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 +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp @@ -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 +++ b/libgui/src/main-window.cc @@ -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 +++ b/libgui/src/octave-interpreter.cc @@ -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 +++ b/libgui/src/octave-interpreter.h @@ -41,6 +41,8 @@ // Initialize and execute the octave interpreter. void execute (void); + + void interrupt (void); }; #endif
--- a/libgui/src/octave-qt-link.cc +++ b/libgui/src/octave-qt-link.cc @@ -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 +++ b/libgui/src/octave-qt-link.h @@ -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 +++ b/libgui/src/terminal-dock-widget.cc @@ -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 (); +}