Mercurial > octave-nkf
changeset 14825:eae0e9f2a8c6 gui
Added menus, markers and methods to visualize debugging in the editor and add, remove and navigate breakpoints* .
* arrow_right.png: Icon to indicate debugger position.
* redled.png: Icon for a breakpoint.
* file-editor-tab: Added methods to add/remove breakpoints and menu entries.
* file-editor: Added methods to add/remove breakpoints and menu entries.
* resource.qrc: Added new icons to resource file.
author | Jacob Dawid <jacob.dawid@googlemail.com> |
---|---|
date | Mon, 02 Jul 2012 09:31:30 +0200 |
parents | 9c0959a1dc7b |
children | ed0f820c7ce0 |
files | gui/src/icons/arrow_right.png gui/src/icons/redled.png gui/src/m-editor/file-editor-tab.cc gui/src/m-editor/file-editor-tab.h gui/src/m-editor/file-editor.cc gui/src/m-editor/file-editor.h gui/src/resource.qrc |
diffstat | 7 files changed, 157 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/gui/src/m-editor/file-editor-tab.cc Mon Jul 02 07:56:07 2012 +0200 +++ b/gui/src/m-editor/file-editor-tab.cc Mon Jul 02 09:31:30 2012 +0200 @@ -30,10 +30,14 @@ _edit_area = new QsciScintilla (this); _edit_area->setLexer (fileEditor->lexer ()); - // markers + // symbols _edit_area->setMarginType (1, QsciScintilla::SymbolMargin); _edit_area->setMarginSensitivity (1, true); - _edit_area->markerDefine (QsciScintilla::RightTriangle, MARKER_BOOKMARK); + _edit_area->markerDefine (QsciScintilla::RightTriangle, bookmark); + _edit_area->markerDefine (QImage (":/actions/icons/redled.png"), breakpoint); + _edit_area->markerDefine (QImage (":/actions/icons/arrow_right.png"), + debugger_position); + connect (_edit_area, SIGNAL (marginClicked (int, int, Qt::KeyboardModifiers)), this, SLOT (handle_margin_clicked (int, int, Qt::KeyboardModifiers))); @@ -47,8 +51,8 @@ _edit_area->setMarginsFont( marginFont ); QFontMetrics metrics(marginFont); _edit_area->setMarginType (2, QsciScintilla::TextMargin); - _edit_area->setMarginWidth(2, metrics.width("99999")); - _edit_area->setMarginLineNumbers(2, true); + _edit_area->setMarginWidth(2, metrics.width("9999")); + _edit_area->setMarginLineNumbers (2, true); } // code folding @@ -150,13 +154,24 @@ file_editor_tab::handle_margin_clicked(int margin, int line, Qt::KeyboardModifiers state) { Q_UNUSED (state); - if (margin == 1) // marker margin + if (margin == 1) { unsigned int mask = _edit_area->markersAtLine (line); - if (mask && (1 << MARKER_BOOKMARK)) - _edit_area->markerDelete(line,MARKER_BOOKMARK); + + if (state & Qt::ControlModifier) + { + if (mask && (1 << bookmark)) + _edit_area->markerDelete(line,bookmark); + else + _edit_area->markerAdd(line,bookmark); + } else - _edit_area->markerAdd(line,MARKER_BOOKMARK); + { + if (mask && (1 << breakpoint)) + _edit_area->markerDelete(line,breakpoint); + else + _edit_area->markerAdd(line,breakpoint); + } } } @@ -271,40 +286,79 @@ void file_editor_tab::remove_bookmark () { - _edit_area->markerDeleteAll(MARKER_BOOKMARK); + _edit_area->markerDeleteAll (bookmark); } void file_editor_tab::toggle_bookmark () { - int line,cur; - _edit_area->getCursorPosition(&line,&cur); - if ( _edit_area->markersAtLine (line) && (1 << MARKER_BOOKMARK) ) - _edit_area->markerDelete(line,MARKER_BOOKMARK); + int line, cur; + _edit_area->getCursorPosition (&line,&cur); + if ( _edit_area->markersAtLine (line) && (1 << bookmark) ) + _edit_area->markerDelete (line, bookmark); else - _edit_area->markerAdd(line,MARKER_BOOKMARK); + _edit_area->markerAdd (line, bookmark); } void -file_editor_tab::next_bookmark () +file_editor_tab::next_bookmark() { - int line,cur,nextline; - _edit_area->getCursorPosition(&line,&cur); - if ( _edit_area->markersAtLine(line) && (1 << MARKER_BOOKMARK) ) - line++; // we have a bookmark here, so start search from next line - nextline = _edit_area->markerFindNext(line,(1 << MARKER_BOOKMARK)); - _edit_area->setCursorPosition(nextline,0); + int line, cur, nextline; + _edit_area->getCursorPosition (&line, &cur); + if ( _edit_area->markersAtLine (line) && (1 << bookmark) ) + line++; // we have a breakpoint here, so start search from next line + nextline = _edit_area->markerFindNext (line, (1 << bookmark)); + _edit_area->setCursorPosition (nextline, 0); } void file_editor_tab::previous_bookmark () { - int line,cur,prevline; - _edit_area->getCursorPosition(&line,&cur); - if ( _edit_area->markersAtLine(line) && (1 << MARKER_BOOKMARK) ) - line--; // we have a bookmark here, so start search from prev line - prevline = _edit_area->markerFindPrevious(line,(1 << MARKER_BOOKMARK)); - _edit_area->setCursorPosition(prevline,0); + int line, cur, prevline; + _edit_area->getCursorPosition (&line, &cur); + if ( _edit_area->markersAtLine (line) && (1 << bookmark) ) + line--; // we have a breakpoint here, so start search from prev line + prevline = _edit_area->markerFindPrevious (line, (1 << bookmark)); + _edit_area->setCursorPosition (prevline, 0); +} + +void +file_editor_tab::remove_breakpoint () +{ + _edit_area->markerDeleteAll (breakpoint); +} + +void +file_editor_tab::toggle_breakpoint () +{ + int line, cur; + _edit_area->getCursorPosition (&line,&cur); + if ( _edit_area->markersAtLine (line) && (1 << breakpoint) ) + _edit_area->markerDelete (line, breakpoint); + else + _edit_area->markerAdd (line, breakpoint); +} + +void +file_editor_tab::next_breakpoint () +{ + int line, cur, nextline; + _edit_area->getCursorPosition (&line, &cur); + if ( _edit_area->markersAtLine (line) && (1 << breakpoint) ) + line++; // we have a breakpoint here, so start search from next line + nextline = _edit_area->markerFindNext (line, (1 << breakpoint)); + _edit_area->setCursorPosition (nextline, 0); +} + +void +file_editor_tab::previous_breakpoint () +{ + int line, cur, prevline; + _edit_area->getCursorPosition (&line, &cur); + if ( _edit_area->markersAtLine (line) && (1 << breakpoint) ) + line--; // we have a breakpoint here, so start search from prev line + prevline = _edit_area->markerFindPrevious (line, (1 << breakpoint)); + _edit_area->setCursorPosition (prevline, 0); } void @@ -338,6 +392,16 @@ } void +file_editor_tab::set_debugger_position (int line) +{ + _edit_area->markerDeleteAll (debugger_position); + if (line > 0) + { + _edit_area->markerAdd (line, debugger_position); + } +} + +void file_editor_tab::set_modified (bool modified) { _edit_area->setModified (modified);
--- a/gui/src/m-editor/file-editor-tab.h Mon Jul 02 07:56:07 2012 +0200 +++ b/gui/src/m-editor/file-editor-tab.h Mon Jul 02 09:31:30 2012 +0200 @@ -46,11 +46,16 @@ void toggle_bookmark (); void next_bookmark (); void previous_bookmark (); + void remove_breakpoint (); + void toggle_breakpoint (); + void next_breakpoint (); + void previous_breakpoint (); void cut (); void copy (); void paste (); void undo (); void redo (); + void set_debugger_position (int line); void set_modified (bool modified = true);
--- a/gui/src/m-editor/file-editor.cc Mon Jul 02 07:56:07 2012 +0200 +++ b/gui/src/m-editor/file-editor.cc Mon Jul 02 09:31:30 2012 +0200 @@ -202,6 +202,38 @@ } void +file_editor::request_toggle_breakpoint () +{ + file_editor_tab *activeFileEditorTab = active_editor_tab (); + if (activeFileEditorTab) + activeFileEditorTab->toggle_breakpoint (); +} + +void +file_editor::request_next_breakpoint () +{ + file_editor_tab *activeFileEditorTab = active_editor_tab (); + if (activeFileEditorTab) + activeFileEditorTab->next_breakpoint (); +} + +void +file_editor::request_previous_breakpoint () +{ + file_editor_tab *activeFileEditorTab = active_editor_tab (); + if (activeFileEditorTab) + activeFileEditorTab->previous_breakpoint (); +} + +void +file_editor::request_remove_breakpoint () +{ + file_editor_tab *activeFileEditorTab = active_editor_tab (); + if (activeFileEditorTab) + activeFileEditorTab->remove_breakpoint (); +} + +void file_editor::request_comment_selected_text () { file_editor_tab *activeFileEditorTab = active_editor_tab (); @@ -319,6 +351,12 @@ QAction *previous_bookmark_action = new QAction (tr ("Pre&vious Bookmark"),_tool_bar); QAction *toggle_bookmark_action = new QAction (tr ("Toggle &Bookmark"),_tool_bar); QAction *remove_bookmark_action = new QAction (tr ("&Remove All Bookmarks"),_tool_bar); + + QAction *next_breakpoint_action = new QAction (tr ("&Next breakpoint"),_tool_bar); + QAction *previous_breakpoint_action = new QAction (tr ("Pre&vious breakpoint"),_tool_bar); + QAction *toggle_breakpoint_action = new QAction (tr ("Toggle &breakpoint"),_tool_bar); + QAction *remove_breakpoint_action = new QAction (tr ("&Remove All breakpoints"),_tool_bar); + QAction *comment_selection_action = new QAction (tr ("&Comment Selected Text"),_tool_bar); QAction *uncomment_selection_action = new QAction (tr ("&Uncomment Selected Text"),_tool_bar); @@ -403,6 +441,12 @@ _menu_bar->addMenu (editMenu); _debug_menu = new QMenu (tr ("&Debug"), _menu_bar); + _debug_menu->addAction (toggle_breakpoint_action); + _debug_menu->addAction (next_breakpoint_action); + _debug_menu->addAction (previous_breakpoint_action); + _debug_menu->addAction (remove_breakpoint_action); + _debug_menu->addSeparator (); + // The other debug actions will be added by the main window. _menu_bar->addMenu (_debug_menu); QMenu *runMenu = new QMenu (tr ("&Run"), _menu_bar); @@ -431,6 +475,10 @@ connect (next_bookmark_action, SIGNAL (triggered ()), this, SLOT (request_next_bookmark ())); connect (previous_bookmark_action, SIGNAL (triggered ()), this, SLOT (request_previous_bookmark ())); connect (remove_bookmark_action, SIGNAL (triggered ()), this, SLOT (request_remove_bookmark ())); + connect (toggle_breakpoint_action, SIGNAL (triggered ()), this, SLOT (request_toggle_breakpoint ())); + connect (next_breakpoint_action, SIGNAL (triggered ()), this, SLOT (request_next_breakpoint ())); + connect (previous_breakpoint_action, SIGNAL (triggered ()), this, SLOT (request_previous_breakpoint ())); + connect (remove_breakpoint_action, SIGNAL (triggered ()), this, SLOT (request_remove_breakpoint ())); connect (comment_selection_action, SIGNAL (triggered ()), this, SLOT (request_comment_selected_text ())); connect (uncomment_selection_action, SIGNAL (triggered ()), this, SLOT (request_uncomment_selected_text ())); connect (_tab_widget, SIGNAL (tabCloseRequested (int)), this, SLOT (handle_tab_close_request (int)));
--- a/gui/src/m-editor/file-editor.h Mon Jul 02 07:56:07 2012 +0200 +++ b/gui/src/m-editor/file-editor.h Mon Jul 02 09:31:30 2012 +0200 @@ -35,10 +35,11 @@ const char UNNAMED_FILE[] = "<unnamed>"; const char SAVE_FILE_FILTER[] = "Octave Files (*.m);;All Files (*.*)"; -enum MARKER +enum editor_markers { - MARKER_BOOKMARK, - MARKER_BREAKPOINT + bookmark, + breakpoint, + debugger_position }; class file_editor : public file_editor_interface @@ -73,6 +74,12 @@ void request_next_bookmark (); void request_previous_bookmark (); void request_remove_bookmark (); + + void request_toggle_breakpoint (); + void request_next_breakpoint (); + void request_previous_breakpoint (); + void request_remove_breakpoint (); + void request_comment_selected_text (); void request_uncomment_selected_text (); @@ -93,7 +100,7 @@ QAction* _copy_action; QAction* _cut_action; QTabWidget * _tab_widget; - int _marker_bookmark; + int _marker_breakpoint; lexer_octave_gui *_lexer; QsciAPIs * _lexer_api; };
--- a/gui/src/resource.qrc Mon Jul 02 07:56:07 2012 +0200 +++ b/gui/src/resource.qrc Mon Jul 02 09:31:30 2012 +0200 @@ -13,5 +13,7 @@ <file>icons/up.png</file> <file>icons/configure.png</file> <file>icons/filesaveas.png</file> + <file>icons/redled.png</file> + <file>icons/arrow_right.png</file> </qresource> </RCC>