nemiver r879 - in trunk: . src/persp/dbgperspective src/persp/dbgperspective/menus src/uicommon



Author: dodji
Date: Sat Jun 28 18:22:16 2008
New Revision: 879
URL: http://svn.gnome.org/viewvc/nemiver?rev=879&view=rev

Log:
fix #540653 - add a shorcut to set a conditional breakpoint


Modified:
   trunk/ChangeLog
   trunk/src/persp/dbgperspective/menus/menus.xml
   trunk/src/persp/dbgperspective/nmv-dbg-perspective.cc
   trunk/src/uicommon/nmv-source-editor.cc
   trunk/src/uicommon/nmv-source-editor.h

Modified: trunk/src/persp/dbgperspective/menus/menus.xml
==============================================================================
--- trunk/src/persp/dbgperspective/menus/menus.xml	(original)
+++ trunk/src/persp/dbgperspective/menus/menus.xml	Sat Jun 28 18:22:16 2008
@@ -72,6 +72,8 @@
                 name="ToggleEnableBreakMenuItem"/>
             <menuitem action="SetBreakPointMenuItemAction"
                 name="SetBreakMenuItem"/>
+            <menuitem action="SetBreakPointUsingDialogMenuItemAction"
+                name="SetBreakUsingDialogMenuItem"/>
             <separator/>
             <menuitem action="InspectVariableMenuItemAction"
                 name="InspectVariableMenuItem"/>

Modified: trunk/src/persp/dbgperspective/nmv-dbg-perspective.cc
==============================================================================
--- trunk/src/persp/dbgperspective/nmv-dbg-perspective.cc	(original)
+++ trunk/src/persp/dbgperspective/nmv-dbg-perspective.cc	Sat Jun 28 18:22:16 2008
@@ -224,6 +224,7 @@
     void on_continue_action () ;
     void on_continue_until_action () ;
     void on_set_breakpoint_action () ;
+    void on_set_breakpoint_using_dialog_action ();
     void on_refresh_locals_action () ;
     void on_toggle_breakpoint_action () ;
     void on_toggle_breakpoint_enabled_action () ;
@@ -252,7 +253,8 @@
                                      const Glib::ustring &a_text,
                                      int a_dont_know) ;
 
-    void on_source_view_markers_region_clicked_signal (int a_line) ;
+    void on_source_view_markers_region_clicked_signal (int a_line,
+                                                       bool a_dialog_requested) ;
 
     bool on_button_pressed_in_source_view_signal (GdkEventButton *a_event) ;
 
@@ -465,6 +467,7 @@
     void step_out () ;
     void do_continue () ;
     void do_continue_until () ;
+    void set_breakpoint_at_current_line_using_dialog ();
     void set_breakpoint () ;
     void set_breakpoint (const UString &a_file,
                          int a_line,
@@ -489,7 +492,11 @@
                                     bool &a_enabled) ;
     void toggle_breakpoint (const UString &a_file_path,
                             int a_linenum) ;
-    void set_breakpoint_dialog ();
+    void set_breakpoint_using_dialog ();
+    void set_breakpoint_using_dialog (const UString &a_file_path,
+                                      const int a_line_num);
+    void set_breakpoint_using_dialog (const UString &a_function_name);
+    void set_breakpoint_from_dialog (SetBreakpointDialog &a_dialog);
     void refresh_locals () ;
 
     void inspect_variable () ;
@@ -1308,7 +1315,17 @@
 {
     LOG_FUNCTION_SCOPE_NORMAL_DD ;
     NEMIVER_TRY
-    set_breakpoint_dialog () ;
+    set_breakpoint_using_dialog () ;
+    NEMIVER_CATCH
+}
+
+void
+DBGPerspective::on_set_breakpoint_using_dialog_action ()
+{
+    LOG_FUNCTION_SCOPE_NORMAL_DD;
+
+    NEMIVER_TRY
+    set_breakpoint_at_current_line_using_dialog ();
     NEMIVER_CATCH
 }
 
@@ -1586,7 +1603,9 @@
 }
 
 void
-DBGPerspective::on_source_view_markers_region_clicked_signal (int a_line)
+DBGPerspective::on_source_view_markers_region_clicked_signal
+                                                        (int a_line,
+                                                         bool a_dialog_requested)
 {
     LOG_FUNCTION_SCOPE_NORMAL_DD ;
     NEMIVER_TRY
@@ -1596,7 +1615,11 @@
         THROW_IF_FAIL (cur_editor) ;
         UString path ;
         cur_editor->get_path (path) ;
-        toggle_breakpoint (path, a_line + 1 ) ;
+        if (a_dialog_requested) {
+            set_breakpoint_using_dialog (path, a_line + 1);
+        } else {
+            toggle_breakpoint (path, a_line + 1 ) ;
+        }
     }
 
     NEMIVER_CATCH
@@ -2640,6 +2663,17 @@
         },
 
         {
+            "SetBreakPointUsingDialogMenuItemAction",
+            nil_stock_id,
+            _("Set Breakpoint with dialog..."),
+            _("Set a breakpoint at the current line using a dialog"),
+            sigc::mem_fun (*this,
+                           &DBGPerspective::on_set_breakpoint_using_dialog_action),
+            ActionEntry::DEFAULT,
+            "<control><shift>B"
+        },
+
+        {
             "InspectVariableMenuItemAction",
             nil_stock_id,
             _("Inspect a Variable"),
@@ -5284,7 +5318,7 @@
     source_editor->get_path (path) ;
     THROW_IF_FAIL (path != "") ;
 
-    gint current_line =
+    int current_line =
         source_editor->source_view ().get_source_buffer ()->get_insert
                 ()->get_iter ().get_line () + 1;
     if (current_line >= 0)
@@ -5292,42 +5326,37 @@
 }
 
 void
-DBGPerspective::set_breakpoint_dialog ()
+DBGPerspective::set_breakpoint_from_dialog (SetBreakpointDialog &a_dialog)
 {
-    LOG_FUNCTION_SCOPE_NORMAL_DD ;
-    SetBreakpointDialog dialog (plugin_path ()) ;
-
-    int result = dialog.run () ;
-    if (result != Gtk::RESPONSE_OK) {
-        return;
-    }
-
-    switch(dialog.mode ()) {
+    switch (a_dialog.mode ()) {
         case SetBreakpointDialog::MODE_SOURCE_LOCATION:
             {
                 UString filename;
-                filename = dialog.file_name () ;
+                filename = a_dialog.file_name () ;
                 THROW_IF_FAIL (filename != "") ;
-                int line = dialog.line_number () ;
+                int line = a_dialog.line_number () ;
                 LOG_DD ("setting breakpoint in file "
                         << filename << " at line " << line) ;
-                set_breakpoint (filename, line, dialog.condition ());
+                set_breakpoint (filename, line, a_dialog.condition ());
                 break;
             }
+
         case SetBreakpointDialog::MODE_FUNCTION_NAME:
             {
-                UString function = dialog.function ();
+                UString function = a_dialog.function ();
                 THROW_IF_FAIL (function != "") ;
-                set_breakpoint (function, dialog.condition ());
+                set_breakpoint (function, a_dialog.condition ());
                 break;
             }
+
         case SetBreakpointDialog::MODE_EVENT:
             {
-                UString event = dialog.event ();
+                UString event = a_dialog.event ();
                 THROW_IF_FAIL (event != "");
                 debugger ()->set_catch (event);
                 break;
             }
+
         default:
             THROW ("should not be reached");
             break;
@@ -5335,6 +5364,67 @@
 }
 
 void
+DBGPerspective::set_breakpoint_at_current_line_using_dialog ()
+{
+    SourceEditor *source_editor = get_current_source_editor () ;
+    THROW_IF_FAIL (source_editor) ;
+    UString path ;
+    source_editor->get_path (path) ;
+    THROW_IF_FAIL (path != "") ;
+    int current_line =
+        source_editor->source_view ().get_source_buffer ()->get_insert
+                ()->get_iter ().get_line () + 1;
+    if (current_line >= 0)
+        set_breakpoint_using_dialog (path, current_line);
+}
+
+void
+DBGPerspective::set_breakpoint_using_dialog ()
+{
+    LOG_FUNCTION_SCOPE_NORMAL_DD;
+    SetBreakpointDialog dialog (plugin_path ()) ;
+
+    int result = dialog.run () ;
+    if (result != Gtk::RESPONSE_OK) {
+        return;
+    }
+    set_breakpoint_from_dialog (dialog);
+}
+
+void
+DBGPerspective::set_breakpoint_using_dialog (const UString &a_file_name,
+                                             const int a_line_num)
+{
+    LOG_FUNCTION_SCOPE_NORMAL_DD;
+    THROW_IF_FAIL (!a_file_name.empty ());
+    THROW_IF_FAIL (a_line_num > 0);
+
+    SetBreakpointDialog dialog (plugin_path ()) ;
+    dialog.mode (SetBreakpointDialog::MODE_SOURCE_LOCATION);
+    dialog.file_name (a_file_name);
+    dialog.line_number (a_line_num);
+    int result = dialog.run () ;
+    if (result != Gtk::RESPONSE_OK) {
+        return;
+    }
+    set_breakpoint_from_dialog (dialog);
+}
+
+void
+DBGPerspective::set_breakpoint_using_dialog (const UString &a_function_name)
+{
+    LOG_FUNCTION_SCOPE_NORMAL_DD;
+    SetBreakpointDialog dialog (plugin_path ());
+    dialog.mode (SetBreakpointDialog::MODE_FUNCTION_NAME);
+    dialog.file_name (a_function_name);
+    int result = dialog.run ();
+    if (result != Gtk::RESPONSE_OK) {
+        return;
+    }
+    set_breakpoint_from_dialog (dialog);
+}
+
+void
 DBGPerspective::refresh_locals ()
 {
     get_local_vars_inspector ().show_local_variables_of_current_function () ;

Modified: trunk/src/uicommon/nmv-source-editor.cc
==============================================================================
--- trunk/src/uicommon/nmv-source-editor.cc	(original)
+++ trunk/src/uicommon/nmv-source-editor.cc	Sat Jun 28 18:22:16 2008
@@ -60,7 +60,7 @@
 
 class SourceView : public gtksourceview::SourceView {
 
-    sigc::signal<void, int> m_marker_region_got_clicked_signal ;
+    sigc::signal<void, int, bool> m_marker_region_got_clicked_signal ;
 
 public:
     SourceView (Glib::RefPtr<SourceBuffer> &a_buf) :
@@ -115,7 +115,8 @@
         THROW_IF_FAIL (iter) ;
 
         LOG_DD ("got clicked on line: " << iter.get_line ()) ;
-        marker_region_got_clicked_signal ().emit (iter.get_line ()) ; ;
+        marker_region_got_clicked_signal ().emit (iter.get_line (),
+                                                  false/*no dialog requested*/);
     }
 
     bool on_button_press_event (GdkEventButton *a_event)
@@ -129,7 +130,7 @@
         }
     }
 
-    sigc::signal<void, int>& marker_region_got_clicked_signal ()
+    sigc::signal<void, int, bool>& marker_region_got_clicked_signal ()
     {
         return m_marker_region_got_clicked_signal ;
     }
@@ -151,7 +152,7 @@
     Gtk::Label *line_col_label ;
     Gtk::Label *line_count;
     sigc::signal<void, gint, gint> signal_insertion_moved ;
-    sigc::signal<void, int> marker_region_got_clicked_signal ;
+    sigc::signal<void, int, bool> marker_region_got_clicked_signal ;
     sigc::signal<void, const Gtk::TextBuffer::iterator&>
                                                     insertion_changed_signal;
     UString path ;
@@ -159,9 +160,9 @@
     //**************
     //<signal slots>
     //**************
-    void on_marker_region_got_clicked (int a_line)
+    void on_marker_region_got_clicked (int a_line, bool a_dialog_requested)
     {
-        marker_region_got_clicked_signal.emit (a_line) ;
+        marker_region_got_clicked_signal.emit (a_line, a_dialog_requested) ;
     }
 
     void on_mark_set_signal (const Gtk::TextBuffer::iterator &a_iter,
@@ -772,7 +773,7 @@
     return false ;
 }
 
-sigc::signal<void, int>&
+sigc::signal<void, int, bool>&
 SourceEditor::marker_region_got_clicked_signal () const
 {
     return m_priv->marker_region_got_clicked_signal ;

Modified: trunk/src/uicommon/nmv-source-editor.h
==============================================================================
--- trunk/src/uicommon/nmv-source-editor.h	(original)
+++ trunk/src/uicommon/nmv-source-editor.h	Sat Jun 28 18:22:16 2008
@@ -93,9 +93,12 @@
 
     /// \name signals
     /// @{
-    sigc::signal<void, int>& marker_region_got_clicked_signal () const ;
+    sigc::signal<void,
+                 int/*line clicked*/,
+                 bool/*dialog requested*/>&
+                                 marker_region_got_clicked_signal () const ;
     sigc::signal<void, const Gtk::TextBuffer::iterator&>&
-                                            insertion_changed_signal () const ;
+                                 insertion_changed_signal () const ;
     /// @}
 };//end class SourceEditor
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]