Mercurial > octave
diff libgui/src/terminal-dock-widget.cc @ 29787:b4d2fa28d1d4
allow terminal window to be opened from command line
* command-widget.h, command-widget.cc (command_widget::update_prompt):
New slot.
(command_widget::insert_interpreter_output): Now public.
(command_widget::command_widget): Don't connect to signals from parent
object here.
* octave-qobject.h, octave-qobject.cc
(base_qobject::m_terminal_widget): New data member.
(base_qobject::terminal_widget): New function. Make (command_widget,
QTerminal)/base_qobject signal/slot connections here instead of in
main_window constructor.
(base_qobject::show_terminal_window): New slot.
(base_qobject::base_qobject): Connect
qt_interpreter_events::show_terminal_window_signal to
base_qobject::show_terminal_window slot.
(base_qobject::~base_qobject): Close and delete terminal widget.
* main-window.h, main-window.cc (main_window::main_window): Acquire
m_command_window from base_qobject instead of constructing here.
* terminal-dock-widget.cc (terminal_dock_widget::terminal_dock_widget):
Make dock widget/terminal widget signal/slot connections here instead
of in main window constructor. Call make_window if parent object is
nullptr.
* event-manager.h, event-manager.cc
(F__event_manager_show_terminal_window__): New function.
(interpreter_events::show_terminal_window): New virtual function.
(event_manager::show_terminal_window): New function.
* qt-interpreter-events.h, qt-interpreter-events.cc
(qt_interpreter_events::show_terminal_window): New signal
(qt_interpreter_events::show_terminal_window): New function.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sat, 19 Jun 2021 14:34:07 -0400 |
parents | 5154c91e0d98 |
children | 796f54d4ddbf |
line wrap: on
line diff
--- a/libgui/src/terminal-dock-widget.cc Sat Jun 19 10:33:37 2021 -0400 +++ b/libgui/src/terminal-dock-widget.cc Sat Jun 19 14:34:07 2021 -0400 @@ -51,9 +51,34 @@ // FIXME: we could do this in a better way, but improving it doesn't // matter much if we will eventually be removing the old terminal. if (m_experimental_terminal_widget) - m_terminal = new command_widget (oct_qobj, this); + { + command_widget *widget = new command_widget (oct_qobj, this); + + connect (this, &terminal_dock_widget::settings_changed, + widget, &command_widget::notice_settings); + + connect (this, &terminal_dock_widget::update_prompt_signal, + widget, &command_widget::update_prompt); + + connect (this, &terminal_dock_widget::interpreter_output_signal, + widget, &command_widget::insert_interpreter_output); + + m_terminal = widget; + } else - m_terminal = QTerminal::create (oct_qobj, this); + { + QTerminal *widget = QTerminal::create (oct_qobj, this); + + connect (this, &terminal_dock_widget::settings_changed, + widget, &QTerminal::notice_settings); + + // Connect the visibility signal to the terminal for + // dis-/enabling timers. + connect (this, &terminal_dock_widget::visibilityChanged, + widget, &QTerminal::handle_visibility_changed); + + m_terminal = widget; + } m_terminal->setObjectName ("OctaveTerminal"); m_terminal->setFocusPolicy (Qt::StrongFocus); @@ -91,6 +116,9 @@ win_y = max_y; setGeometry (0, 0, win_x, win_y); + + if (! p) + make_window (); } bool terminal_dock_widget::has_focus (void) const