Mercurial > hg > octave-lojdl
changeset 16438:a971d8bdaadc
use signals instead of event queue for entering/leaving debug mode
* file-editor-interface.h
(file_editor_interface::handle_enter_debug_mode): Rename from
file_editor_interface::handle_entered_debug_mode. Change all uses.
(file_editor_interface::handle_exit_debug_mode): Rename from
file_editor_interface::handle_quit_debug_mode. Change all uses.
* file_editor.h, file_editor.cc
(file_editor::handle_enter_debug_mode): Rename from
file_editor::handle_entered_debug_mode. Change all uses.
(file_editor::handle_exit_debug_mode): Rename from
file_editor::handle_quit_debug_mode. Change all uses.
* main-window.h, main-window.cc (main_window::handle_enter_debugger):
Rename from main_window::handle_entered_debug_mode. Change all uses.
(main_window::handle_exit_debugger): Rename from
main_window::handle_quit_debug_mode. Change all uses.
(main_window::construct): Delete signal connection from
_octave_qt_event_listener::entered_debug_mode_signal to
main_window::handle_entered_debug_mode.
Delete signal connection from
_octave_qt_event_listener::quit_debug_mode_signal to
main_window::handle_quit_debug_mode.
Connect _octave_qt_link::enter_debugger_signal signal to
main_window::handle_enter_debugger.
Connect _octave_qt_link::exit_debugger_signal signal to
main_window::handle_exit_debugger.
* octave-qt-event-listener.h, octave-qt-event-listener.cc
(octave_qt_event_listener::entered_debug_mode,
octave_qt_event_listener::quit_debug_mode): Delete.
(octave_qt_event_listener::entered_debug_mode_signal,
octave_qt_event_listener::quit_debug_mode_signal): Delete signals.
* octave-qt-link.h, octave-qt-link.cc
(octave_qt_link::do_enter_debugger_event): Emit enter_debugger_signal.
(octave_qt_link::do_execute_in_debugger_event): New function.
(octave_qt_link::do_exit_debugger_event): Emit exit_debugger_signal.
(octave_qt_link::enter_debugger_signal,
octave_qt_link::exit_debugger_signal): New signals.
* octave-event-listener.h (octave_event_listener::entered_debug_mode,
octave_event_listener::quit_debug_mode): Delete.
* input.cc (octave_base_reader::octave_gets): Call
octave_link::exit_debugger_event if not debugging.
(execute_in_debugger_handler): Rename from exit_debugger_handler.
Change all uses.
Call octave_link::execute_in_debugger_event instead of
octave_link::exit_debugger_event.
* octave-link.h, octave-link.cc (octave_link::do_generate_events):
Don't call debugging mode functions here.
(octave_link::enter_debugger_event): Set instance->debugging to true.
(octave_link::execute_in_debugger_event): New function.
(octave_link::exit_debugger_event): Don't do anything unless
instance->debugging is true. Toggle instance->debugging.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 05 Apr 2013 03:04:56 -0400 |
parents | 919796a440c6 |
children | 7762d56dbc8a |
files | libgui/src/m-editor/file-editor-interface.h libgui/src/m-editor/file-editor.cc libgui/src/m-editor/file-editor.h libgui/src/main-window.cc libgui/src/main-window.h libgui/src/octave-qt-event-listener.cc libgui/src/octave-qt-event-listener.h libgui/src/octave-qt-link.cc libgui/src/octave-qt-link.h libinterp/interp-core/octave-event-listener.h libinterp/interpfcn/input.cc libinterp/interpfcn/octave-link.cc libinterp/interpfcn/octave-link.h |
diffstat | 13 files changed, 64 insertions(+), 61 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor-interface.h +++ b/libgui/src/m-editor/file-editor-interface.h @@ -44,8 +44,8 @@ virtual QMenu *debug_menu () = 0; virtual QToolBar *toolbar () = 0; - virtual void handle_entered_debug_mode () = 0; - virtual void handle_quit_debug_mode () = 0; + virtual void handle_enter_debug_mode (void) = 0; + virtual void handle_exit_debug_mode (void) = 0; virtual void handle_insert_debugger_pointer_request (const QString& file, int line) = 0;
--- a/libgui/src/m-editor/file-editor.cc +++ b/libgui/src/m-editor/file-editor.cc @@ -100,13 +100,13 @@ } void -file_editor::handle_entered_debug_mode () +file_editor::handle_enter_debug_mode (void) { _run_action->setEnabled (false); } void -file_editor::handle_quit_debug_mode () +file_editor::handle_exit_debug_mode (void) { _run_action->setEnabled (true); }
--- a/libgui/src/m-editor/file-editor.h +++ b/libgui/src/m-editor/file-editor.h @@ -57,8 +57,8 @@ QToolBar * toolbar (); void set_focus (); - void handle_entered_debug_mode (); - void handle_quit_debug_mode (); + void handle_enter_debug_mode (void); + void handle_exit_debug_mode (void); signals: void fetab_settings_changed (const QSettings *settings);
--- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -476,30 +476,34 @@ } void -main_window::handle_entered_debug_mode () +main_window::handle_enter_debugger (void) { setWindowTitle ("Octave (Debugging)"); + _debug_continue->setEnabled (true); _debug_step_into->setEnabled (true); _debug_step_over->setEnabled (true); _debug_step_out->setEnabled (true); _debug_quit->setEnabled (true); + #ifdef HAVE_QSCINTILLA - _file_editor->handle_entered_debug_mode (); + _file_editor->handle_enter_debug_mode (); #endif } void -main_window::handle_quit_debug_mode () +main_window::handle_exit_debugger (void) { setWindowTitle ("Octave"); + _debug_continue->setEnabled (false); _debug_step_into->setEnabled (false); _debug_step_over->setEnabled (false); _debug_step_out->setEnabled (false); _debug_quit->setEnabled (false); + #ifdef HAVE_QSCINTILLA - _file_editor->handle_quit_debug_mode (); + _file_editor->handle_exit_debug_mode (); #endif } @@ -1148,16 +1152,6 @@ this, SLOT (update_workspace ())); - connect (_octave_qt_event_listener, - SIGNAL (entered_debug_mode_signal ()), - this, - SLOT(handle_entered_debug_mode ())); - - connect (_octave_qt_event_listener, - SIGNAL (quit_debug_mode_signal ()), - this, - SLOT (handle_quit_debug_mode ())); - // FIXME -- is it possible to eliminate the event_listenter? _octave_qt_link = new octave_qt_link (); @@ -1177,6 +1171,12 @@ SIGNAL (clear_history_signal (void)), _history_dock_widget, SLOT (clear_history (void))); + connect (_octave_qt_link, SIGNAL (enter_debugger_signal ()), + this, SLOT (handle_enter_debugger ())); + + connect (_octave_qt_link, SIGNAL (exit_debugger_signal ()), + this, SLOT (handle_exit_debugger ())); + connect (_octave_qt_link, SIGNAL (update_dbstop_marker_signal (bool, const QString&, int)), _file_editor,
--- a/libgui/src/main-window.h +++ b/libgui/src/main-window.h @@ -106,8 +106,8 @@ void handle_editor_visible (bool); void handle_documentation_visible (bool); - void handle_entered_debug_mode (); - void handle_quit_debug_mode (); + void handle_enter_debugger (void); + void handle_exit_debugger (void); void debug_continue (); void debug_step_into (); void debug_step_over ();
--- a/libgui/src/octave-qt-event-listener.cc +++ b/libgui/src/octave-qt-event-listener.cc @@ -52,12 +52,3 @@ { qApp->quit (); } - -void -octave_qt_event_listener::entered_debug_mode () -{ emit entered_debug_mode_signal (); } - -void -octave_qt_event_listener::quit_debug_mode () -{ emit quit_debug_mode_signal (); } -
--- a/libgui/src/octave-qt-event-listener.h +++ b/libgui/src/octave-qt-event-listener.h @@ -38,14 +38,9 @@ void update_workspace (void); void about_to_exit (); - void entered_debug_mode (); - void quit_debug_mode (); - signals: void current_directory_has_changed_signal (const QString& directory); void update_workspace_signal (void); - void entered_debug_mode_signal (); - void quit_debug_mode_signal (); }; #endif // OCTAVEQTEVENTLISTENER_H
--- a/libgui/src/octave-qt-link.cc +++ b/libgui/src/octave-qt-link.cc @@ -98,15 +98,23 @@ octave_qt_link::do_enter_debugger_event (const std::string& file, int line) { do_insert_debugger_pointer (file, line); + + emit enter_debugger_signal (); } void -octave_qt_link::do_exit_debugger_event (const std::string& file, int line) +octave_qt_link::do_execute_in_debugger_event (const std::string& file, int line) { do_delete_debugger_pointer (file, line); } void +octave_qt_link::do_exit_debugger_event (void) +{ + emit exit_debugger_signal (); +} + +void octave_qt_link::do_update_breakpoint (bool insert, const std::string& file, int line) {
--- a/libgui/src/octave-qt-link.h +++ b/libgui/src/octave-qt-link.h @@ -65,7 +65,8 @@ void do_post_input_event (void); void do_enter_debugger_event (const std::string& file, int line); - void do_exit_debugger_event (const std::string& file, int line); + void do_execute_in_debugger_event (const std::string& file, int line); + void do_exit_debugger_event (void); void do_update_breakpoint (bool insert, const std::string& file, int line); @@ -94,6 +95,9 @@ void append_history_signal (const QString& hist_entry); void clear_history_signal (void); + void enter_debugger_signal (void); + void exit_debugger_signal (void); + void update_dbstop_marker_signal (bool insert, const QString& file, int line); void edit_file_signal (const QString& file);
--- a/libinterp/interp-core/octave-event-listener.h +++ b/libinterp/interp-core/octave-event-listener.h @@ -35,9 +35,6 @@ update_workspace (void) = 0; virtual void about_to_exit () = 0; - - virtual void entered_debug_mode () = 0; - virtual void quit_debug_mode () = 0; }; #endif // OCTAVEEVENTLISTENER_H
--- a/libinterp/interpfcn/input.cc +++ b/libinterp/interpfcn/input.cc @@ -212,7 +212,12 @@ // printing the prompt. if (interactive || forced_interactive) - octave_link::pre_input_event (); + { + if (! Vdebugging) + octave_link::exit_debugger_event (); + + octave_link::pre_input_event (); + } bool history_skip_auto_repeated_debugging_command = false; @@ -460,9 +465,9 @@ } static void -exit_debugger_handler (const std::pair<std::string, int>& arg) +execute_in_debugger_handler (const std::pair<std::string, int>& arg) { - octave_link::exit_debugger_event (arg.first, arg.second); + octave_link::execute_in_debugger_event (arg.first, arg.second); } static void @@ -514,7 +519,7 @@ { octave_link::enter_debugger_event (nm, curr_debug_line); - frame.add_fcn (exit_debugger_handler, + frame.add_fcn (execute_in_debugger_handler, std::pair<std::string, int> (nm, curr_debug_line)); std::string line_buf
--- a/libinterp/interpfcn/octave-link.cc +++ b/libinterp/interpfcn/octave-link.cc @@ -86,18 +86,6 @@ void octave_link::do_generate_events (void) { - if (debugging != Vdebugging) - { - debugging = Vdebugging; - - if (event_listener) - { - if (debugging) - event_listener->entered_debug_mode (); - else - event_listener->quit_debug_mode (); - } - } } void
--- a/libinterp/interpfcn/octave-link.h +++ b/libinterp/interpfcn/octave-link.h @@ -153,13 +153,27 @@ static void enter_debugger_event (const std::string& file, int line) { if (instance_ok ()) - instance->do_enter_debugger_event (file, line); + { + instance->debugging = true; + + instance->do_enter_debugger_event (file, line); + } } - static void exit_debugger_event (const std::string& file, int line) + static void execute_in_debugger_event (const std::string& file, int line) { if (instance_ok ()) - instance->do_exit_debugger_event (file, line); + instance->do_execute_in_debugger_event (file, line); + } + + static void exit_debugger_event (void) + { + if (instance_ok () && instance->debugging) + { + instance->debugging = false; + + instance->do_exit_debugger_event (); + } } static void @@ -243,7 +257,8 @@ virtual void do_post_input_event (void) = 0; virtual void do_enter_debugger_event (const std::string& file, int line) = 0; - virtual void do_exit_debugger_event (const std::string& file, int line) = 0; + virtual void do_execute_in_debugger_event (const std::string& file, int line) = 0; + virtual void do_exit_debugger_event (void) = 0; virtual void do_update_breakpoint (bool insert, const std::string& file, int line) = 0;