Mercurial > octave-nkf
diff libgui/src/main-window.cc @ 16570:d5ae5aa80d42
preserve pending command line input when running commands from GUI actions
* QTerminal.h, QTerminal.cc (QTerminal::relay_command): Delete.
* file-editor-tab.cc (file_editor_tab::run_file_callback): New
argument, bp_info. Save pending command line input and execute
command.
(file_editor_tab::run_file): Use octave_link to execute file.
* main-window.h, main-window.cc
(main_window::execute_command_in_terminal): Rename from
main_window::handle_command_double_clicked. Post event through
octave_link to execute command.
(main_window::construct_octave_qt_link): Connect
_octave_qt_link::execute_command_in_terminal_signal to
main_window::execute_command_in_terminal.
(main_window::execute_command_callback): New function.
(main_window::relay_command_signal): Delete signal. Remove all uses.
* octave-qt-link.h, octave-qt-link.cc
(octave_qt_link::do_execute_command_in_terminal): New function.
(octave_qt_link::execute_command_in_terminal_signal): New signal.
* terminal-dock-widget.h, terminal-dock-widget.cc
(terminal_dock_widget::relay_command_signal): Delete signal. Remove
all uses.
* octave-link.h (octave_link::execute_command_in_terminal,
octave_link::do_execute_command_in_terminal): New functions.
* cmd-edit.h, cmd-edit.cc
(command_editor::pre_input_hook_set): New variable.
(gnu_readline::previous_pre_input_hook,
command_editor::intial_input): New member variables.
(command_editor::restore_pre_input_hook,
command_editor::do_get_current_line,
command_editor::do_replace_line, command_editor::set_pre_input_hook,
gnu_readline::do_get_current_line, gnu_readline::do_replace_line,
gnu_readline::set_pre_input_hook, command_editor::set_initial_input,
gnu_readline::restore_pre_input_hook,
default_command_editor::do_get_current_line,
default_command_editor::do_replace_line,
command_editor::insert_initial_input,
command_editor::pre_input_handler, command_editor::get_current_line,
command_editor::replace_line, command_editor::add_pre_input_hook,
command_editor::do_insert_initial_input,
command_editor::set_pre_input_hook,
command_editor::restore_pre_input_hook): New functions.
(command_editor::readline): Handle initial input.
(command_editor::interrupt): Give argument a default value.
* oct-rl-edit.h, oct-rl-edit.c (octave_rl_copy_line,
octave_rl_replace_line, octave_rl_set_pre_input_hook,
octave_rl_get_pre_input_hook): New functions.
(rl_pre_input_hook_fcn_ptr): New typedef.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 25 Apr 2013 17:57:55 -0400 |
parents | 662a712b8fd5 |
children | 17941fedd4ce |
line wrap: on
line diff
--- a/libgui/src/main-window.cc Thu Apr 25 12:33:09 2013 -0400 +++ b/libgui/src/main-window.cc Thu Apr 25 17:57:55 2013 -0400 @@ -188,11 +188,12 @@ } void -main_window::handle_command_double_clicked (const QString& command) +main_window::execute_command_in_terminal (const QString& command) { - emit relay_command_signal (command); + octave_link::post_event (this, &main_window::execute_command_callback, + command.toStdString ()); - command_window->focus (); + focus_command_window (); } void @@ -764,6 +765,10 @@ this, SLOT (change_directory (QString))); connect (_octave_qt_link, + SIGNAL (execute_command_in_terminal_signal (QString)), + this, SLOT (execute_command_in_terminal (QString))); + + connect (_octave_qt_link, SIGNAL (set_history_signal (const QStringList&)), history_window, SLOT (set_history (const QStringList&))); @@ -1337,6 +1342,21 @@ } void +main_window::execute_command_callback (const std::string& command) +{ + std::string pending_input = command_editor::get_current_line (); + + command_editor::set_initial_input (pending_input); + + command_editor::replace_line (command); + command_editor::redisplay (); + + // We are executing inside the command editor event loop. Force + // the current line to be returned for processing. + command_editor::interrupt (); +} + +void main_window::new_figure_callback (void) { Fbuiltin (ovl ("figure"));