Mercurial > octave-libgccjit
diff libgui/src/m-editor/octave-qscintilla.cc @ 17627:811019b9ef57
Add help and documentation on actual keyword to the editor menu
* octave-qscintilla.cc(context_help_doc): new function for editor menu action;
(get_global_textcursor_pos): new function for calculationg the cursor pos;
(contextMenuEvent): uses get_global_textcursor_pos now, added context menu
entry for documentation;
(contextmenu_help,contextmenu_doc): slots for context menu;
(contextmenu_help_doc): new common function used from context_help_doc and the
context menu slots
* octave-qscintilla.h: new functions context_help_doc, contextmenu_doc,
contextmenu_help_doc, get_global_textcursor_pos
* file-editor-tab.cc(context_help): new slot for editor menu action
* file-editor-tab.h: new slot context_help
* file-editor.cc(request_context_help,request_context_doc): new slots for
help menu entries;
(construct): new help menu with keyword help and documentation;
(add_file_editor_tab): connect new signal fetab_context_help to the new
slot context_help in file_editor_tab;
(set_shortcuts): enable/disable new shortcuts when editor focus changes
(check_actions): enable/disable new actions depending on existing tabs
* file-editor.h: new signal fetab_context_help, new slots request_context_help
and request_contest_doc, new help and doc actions
author | Torsten <ttl@justmail.de> |
---|---|
date | Fri, 11 Oct 2013 13:05:06 +0200 |
parents | e2de3c8882be |
children | 99ffa521ecec |
line wrap: on
line diff
--- a/libgui/src/m-editor/octave-qscintilla.cc Thu Oct 10 17:43:32 2013 -0700 +++ b/libgui/src/m-editor/octave-qscintilla.cc Fri Oct 11 13:05:06 2013 +0200 @@ -40,6 +40,30 @@ octave_qscintilla::~octave_qscintilla () { } +void +octave_qscintilla::get_global_textcursor_pos (QPoint *global_pos, QPoint *local_pos) +{ + long position = SendScintilla (QsciScintillaBase::SCI_GETCURRENTPOS); + long point_x = SendScintilla + (QsciScintillaBase::SCI_POINTXFROMPOSITION,0,position); + long point_y = SendScintilla + (QsciScintillaBase::SCI_POINTYFROMPOSITION,0,position); + *local_pos = QPoint (point_x,point_y); // local cursor position + *global_pos = mapToGlobal (*local_pos); // global position of cursor +} + +// call documentation or help on the current word +void +octave_qscintilla::context_help_doc (bool documentation) +{ + QPoint global_pos, local_pos; + get_global_textcursor_pos (&global_pos, &local_pos); + _word_at_cursor = wordAtPoint (local_pos); + QString lexer_name = lexer ()->lexer (); + if ((lexer_name == "octave" || lexer_name == "matlab") + && !_word_at_cursor.isEmpty ()) + contextmenu_help_doc (documentation); +} #ifdef HAVE_QSCI_VERSION_2_6_0 // context menu requested @@ -58,13 +82,7 @@ } else { // context menu by keyboard or other: get point of text cursor - long position = SendScintilla (QsciScintillaBase::SCI_GETCURRENTPOS); - long point_x = SendScintilla - (QsciScintillaBase::SCI_POINTXFROMPOSITION,0,position); - long point_y = SendScintilla - (QsciScintillaBase::SCI_POINTYFROMPOSITION,0,position); - local_pos = QPoint (point_x,point_y); // local cursor position - global_pos = mapToGlobal (local_pos); // global position of cursor + get_global_textcursor_pos (&global_pos, &local_pos); QRect editor_rect = geometry (); // editor rect mapped to global editor_rect.moveTopLeft (parentWidget ()->mapToGlobal (editor_rect.topLeft ())); @@ -82,8 +100,10 @@ { _word_at_cursor = wordAtPoint (local_pos); if (!_word_at_cursor.isEmpty ()) - context_menu->addAction (tr ("help") + " " + _word_at_cursor, + context_menu->addAction (tr ("Help on") + " " + _word_at_cursor, this, SLOT (contextmenu_help (bool))); + context_menu->addAction (tr ("Documentation on") + " " + _word_at_cursor, + this, SLOT (contextmenu_doc (bool))); } // finaly show the menu @@ -92,12 +112,28 @@ #endif -// handle the menu entry for calling help +// handle the menu entry for calling help or doc +void +octave_qscintilla::contextmenu_doc (bool) +{ + contextmenu_help_doc (true); +} void octave_qscintilla::contextmenu_help (bool) { - QString command = "help " + _word_at_cursor; - emit execute_command_in_terminal_signal (command); + contextmenu_help_doc (false); +} + +// common function with flag for documentation +void +octave_qscintilla::contextmenu_help_doc (bool documentation) +{ + QString command; + if (documentation) + command = "doc "; + else + command = "help "; + emit execute_command_in_terminal_signal (command + _word_at_cursor); } #endif