diff libgui/src/m-editor/file-editor.cc @ 16386:4902484f9181

callbacks to set markers in editor using command line dbstop function * debug.h, debug.cc (location_info): New function. * input.cc (get_debug_input): Use it to pass location info to hook functions. * debug.cc (bp_table::do_add_breakpoint): Likewise. (bp_table::do_remove_all_breakpoints_in_file): Likewise. (bp_table::do_remove_breakpoint): Likewise. (Fadd_dbstop_hook, Fremove_dbstop_hook, Fadd_dbclear_hook, Fremove_dbclear_hook): New functions. (dbstop_hook_functions, dbclear_hook_functions): New static variables. * file-editor-interface.h (file_editor_interface::handle_update_dbstop_marker_request): New pure virtual function. (file_editor_interface::request_open_file): New args, dbstop_marker and insert. * file-editor.h, file-editor.cc (file_editor::request_open_file): Likewise. Emit signal to set or remove dbstop marker. (file_editor::handle_update_dbstop_marker_request): New function. (file_editor::fetab_do_dbstop_marker): New signal. (file_editor::add_file_editor_tab): Connect fetab_do_dbstop_marker signal to do_dbstop_marker. * file-editor-tab.h, file-editor-tab.cc (file_editor_tab::do_dbstop_marker): New function. * file-editor-tab.cc (file_editor::goto_line): Eliminate shadowing variable declaration. * main-window.h, main-window.cc (main_window::handle_update_dbstop_marker_request): New function. (main_window::construct): Connect update_dbstop_marker_signal signal to handle_update_dbstop_marker_request. * octave-event-listener.h (event_listener::update_dbstop_marker): New pure virtual function. * octave-link.h, octave-link.cc (octave_link::update_breakpoint_hook_fcn, octave_link::do_update_breakpoint_hook_fcn): New functions. (octave_link::do_update_debug_pointer): Improve error messages. * octave-main-thread.cc (dbstop_hook_fcn, dbclear_hook_fcn): New functions. (octave_main_thread::octave_main_thread): Install hook functions for for dbstop and dbclear hooks. * octave-qt-event-listener.h, octave-qt-event-listener.cc (octave_qt_event_listener::update_dbstop_marker): New fucntion. (octave_qt_event_listener::update_dbstop_marker_signal): New signal.
author John W. Eaton <jwe@octave.org>
date Thu, 28 Mar 2013 03:20:25 -0400
parents 3cacd597464d
children f5204f486a29
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor.cc	Thu Mar 28 02:52:18 2013 -0400
+++ b/libgui/src/m-editor/file-editor.cc	Thu Mar 28 03:20:25 2013 -0400
@@ -148,7 +148,8 @@
 
 void
 file_editor::request_open_file (const QString& openFileName, int line,
-                                bool set_marker)
+                                bool debug_pointer,
+                                bool dbstop_marker, bool insert)
 {
   if (openFileName.isEmpty ())
     {
@@ -171,8 +172,11 @@
             {
               emit fetab_goto_line (p->second, line);
 
-              if (set_marker)
+              if (debug_pointer)
                 emit fetab_set_debugger_position (p->second, line-1);
+
+              if (dbstop_marker)
+                emit fetab_do_dbstop_marker (insert, p->second, line-1);
             }
 
           emit fetab_set_focus (p->second);
@@ -196,8 +200,11 @@
                     {
                       emit fetab_goto_line (fileEditorTab, line);
 
-                      if (set_marker)
+                      if (debug_pointer)
                         emit fetab_set_debugger_position (fileEditorTab, line-1);
+                      if (dbstop_marker)
+                        emit fetab_do_dbstop_marker
+                          (insert, fileEditorTab, line-1);
                     }
                 }
               else
@@ -298,6 +305,13 @@
 }
 
 void
+file_editor::handle_update_dbstop_marker_request (bool insert,
+                                                  const QString& file, int line)
+{
+  request_open_file (file, line, false, true, insert);
+}
+
+void
 file_editor::request_undo ()
 {
   emit fetab_undo (_tab_widget->currentWidget ());
@@ -870,6 +884,8 @@
            f, SLOT (set_focus (const QWidget*)));
   connect (this, SIGNAL (fetab_set_debugger_position (const QWidget *, int)),
            f, SLOT (set_debugger_position (const QWidget *, int)));
+  connect (this, SIGNAL (fetab_do_dbstop_marker (bool, const QWidget *, int)),
+           f, SLOT (do_dbstop_marker (bool, const QWidget *, int)));
 
   _tab_widget->setCurrentWidget (f);
 }