changeset 16375:f482302d81c9

editor goto line menu item (bug #38590) * file-editor-tab.h,file_editor_tab.cc (file_editor_tab::goto_line): New function. * file-editor.h, file-editor.cc (file-editor::request_goto_line): New function. (file_editor::request_goto_line): New function. (file_editor::construct): New goto_line_action QAction. Include it in edit menu.
author John Donoghue <john.donoghue@ieee.org>
date Wed, 27 Mar 2013 00:44:04 -0400
parents 8b0a04cbdc9d
children a2f65b8f1955
files libgui/src/m-editor/file-editor-tab.cc libgui/src/m-editor/file-editor-tab.h libgui/src/m-editor/file-editor.cc libgui/src/m-editor/file-editor.h
diffstat 4 files changed, 41 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor-tab.cc	Tue Mar 26 13:52:03 2013 -0400
+++ b/libgui/src/m-editor/file-editor-tab.cc	Wed Mar 27 00:44:04 2013 -0400
@@ -41,6 +41,7 @@
 #include <QMessageBox>
 #include <QTextStream>
 #include <QVBoxLayout>
+#include <QInputDialog>
 
 #include "file-editor-tab.h"
 #include "file-editor.h"
@@ -628,6 +629,25 @@
 }
 
 void
+file_editor_tab::goto_line (const QWidget* ID)
+{
+  if (ID != this)
+    return;
+
+  int line, index;
+
+  _edit_area->getCursorPosition(&line, &index);
+
+  bool ok = false;
+
+  line = QInputDialog::getInt (_edit_area, "Goto line", "Line number", 
+                               line+1, 1, _edit_area->lines(), 1, &ok);
+  if (ok)
+    _edit_area->setCursorPosition (line-1, 0);
+}
+
+
+void
 file_editor_tab::do_comment_selected_text (bool comment)
 {
   if ( _edit_area->hasSelectedText() )
--- a/libgui/src/m-editor/file-editor-tab.h	Tue Mar 26 13:52:03 2013 -0400
+++ b/libgui/src/m-editor/file-editor-tab.h	Wed Mar 27 00:44:04 2013 -0400
@@ -75,6 +75,7 @@
   void comment_selected_text (const QWidget* ID);
   void uncomment_selected_text (const QWidget* ID);
   void find (const QWidget* ID);
+  void goto_line (const QWidget* ID);
 
   void set_debugger_position (int line);
 
--- a/libgui/src/m-editor/file-editor.cc	Tue Mar 26 13:52:03 2013 -0400
+++ b/libgui/src/m-editor/file-editor.cc	Wed Mar 27 00:44:04 2013 -0400
@@ -397,6 +397,13 @@
 }
 
 void
+file_editor::request_goto_line ()
+{
+  emit fetab_goto_line (_tab_widget->currentWidget ());
+}
+
+
+void
 file_editor::handle_mru_add_file (const QString& file_name)
 {
   _mru_files.removeAll (file_name);
@@ -587,6 +594,8 @@
   _run_action = new QAction (QIcon(":/actions/icons/artsbuilderexecute.png"),
                              tr("Save File And Run"), _tool_bar);
 
+  QAction *goto_line_action  = new QAction (tr ("Go&to Line"), _tool_bar);
+
   // the mru-list and an empty array of actions
   QSettings *settings = resource_manager::get_settings ();
   // FIXME -- what should happen if settings is 0?
@@ -671,6 +680,8 @@
   editMenu->addAction (next_bookmark_action);
   editMenu->addAction (previous_bookmark_action);
   editMenu->addAction (remove_bookmark_action);
+  editMenu->addSeparator ();
+  editMenu->addAction (goto_line_action);
   _menu_bar->addMenu (editMenu);
 
   _debug_menu = new QMenu (tr ("&Debug"), _menu_bar);
@@ -736,6 +747,10 @@
            SIGNAL (triggered ()), this, SLOT (request_uncomment_selected_text ()));
   connect (find_action,
            SIGNAL (triggered ()), this, SLOT (request_find ()));
+
+  connect (goto_line_action,
+           SIGNAL (triggered ()), this, SLOT (request_goto_line ()));
+ 
   // The actions of the mru file menu
   for (int i = 0; i < MaxMRUFiles; ++i)
     {
@@ -832,6 +847,8 @@
            f, SLOT (uncomment_selected_text (const QWidget*)));
   connect (this, SIGNAL (fetab_find (const QWidget*)),
            f, SLOT (find (const QWidget*)));
+  connect (this, SIGNAL (fetab_goto_line (const QWidget*)),
+           f, SLOT (goto_line (const QWidget*)));
   connect (this, SIGNAL (fetab_set_focus (const QWidget*)),
            f, SLOT (set_focus (const QWidget*)));
 
--- a/libgui/src/m-editor/file-editor.h	Tue Mar 26 13:52:03 2013 -0400
+++ b/libgui/src/m-editor/file-editor.h	Wed Mar 27 00:44:04 2013 -0400
@@ -85,6 +85,7 @@
   void fetab_comment_selected_text (const QWidget* ID);
   void fetab_uncomment_selected_text (const QWidget* ID);
   void fetab_find (const QWidget* ID);
+  void fetab_goto_line (const QWidget* ID);
   void fetab_set_focus (const QWidget* ID);
 
 public slots:
@@ -114,6 +115,8 @@
   void request_uncomment_selected_text ();
   void request_find ();
 
+  void request_goto_line ();
+
   void handle_file_name_changed (const QString& fileName, const QString& toolTip);
   void handle_tab_close_request (int index);
   void handle_tab_remove_request ();