Mercurial > octave-nkf
comparison libgui/src/m-editor/file-editor-tab.cc @ 18303:106da7544504 gui-release
gui: Add indent/unindent edit menu to editor (Bug #41223)
* libgui/src/m-editor/file-editor.h
(file_editor::private): Add _indent_selection_action, _unindent_selection_action menus.
(file_editor::request_indent_selected_text): New function.
(file_editor::request_indent_selected_text): New function.
(file_editor::fetab_indent_selected_text): New signal.
(file_editor::fetab_indent_selected_text): New signal.
* libgui/src/m-editor/file-editor.cc
(file_editor::request_indent_selected_text): New function.
(file_editor::request_unindent_selected_text): New function.
(file_editor::contruct: Create indent menus and connect signals.
(file_editor::set_shortcuts): Enable/disable indent menus and shortcuts.
(file_editor::check_actions): Enable indent menus if have editor tabs.
* libgui/src/m-editor/file-editor-tab.h
(file-editor-tab::indent_selected_text): New function.
(file-editor-tab::unindent_selected_text): New function.
(file-editor-tab::do_indent_selected_text): New function.
* libgui/src/m-editor/file-editor-tab.cc
(file-editor-tab::indent_selected_text): New function.
(file-editor-tab::unindent_selected_text): New function.
(file-editor-tab::do_indent_selected_text): New function.
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Sat, 18 Jan 2014 08:50:03 -0500 |
parents | 6736fc9bce24 |
children | 6e8188effddf |
comparison
equal
deleted
inserted
replaced
18302:e8176099889c | 18303:106da7544504 |
---|---|
744 | 744 |
745 do_comment_selected_text (false); | 745 do_comment_selected_text (false); |
746 } | 746 } |
747 | 747 |
748 void | 748 void |
749 file_editor_tab::indent_selected_text (const QWidget *ID) | |
750 { | |
751 if (ID != this) | |
752 return; | |
753 | |
754 do_indent_selected_text (true); | |
755 } | |
756 | |
757 void | |
758 file_editor_tab::unindent_selected_text (const QWidget *ID) | |
759 { | |
760 if (ID != this) | |
761 return; | |
762 | |
763 do_indent_selected_text (false); | |
764 } | |
765 | |
766 | |
767 void | |
749 file_editor_tab::handle_find_dialog_finished (int) | 768 file_editor_tab::handle_find_dialog_finished (int) |
750 { | 769 { |
751 // Find dialog is going to hide. Save location of window for | 770 // Find dialog is going to hide. Save location of window for |
752 // when it is reshown. | 771 // when it is reshown. |
753 _find_dialog_geometry = _find_dialog->geometry (); | 772 _find_dialog_geometry = _find_dialog->geometry (); |
811 } | 830 } |
812 else // go to given line without dialog | 831 else // go to given line without dialog |
813 _edit_area->setCursorPosition (line-1, 0); | 832 _edit_area->setCursorPosition (line-1, 0); |
814 } | 833 } |
815 | 834 |
835 void | |
836 file_editor_tab::do_indent_selected_text (bool indent) | |
837 { | |
838 // TODO | |
839 _edit_area->beginUndoAction (); | |
840 | |
841 if (_edit_area->hasSelectedText ()) | |
842 { | |
843 int lineFrom, lineTo, colFrom, colTo; | |
844 _edit_area->getSelection (&lineFrom, &colFrom, &lineTo, &colTo); | |
845 | |
846 if (colTo == 0) // the beginning of last line is not selected | |
847 lineTo--; // stop at line above | |
848 | |
849 for (int i = lineFrom; i <= lineTo; i++) | |
850 { | |
851 if (indent) | |
852 _edit_area->indent (i); | |
853 else | |
854 _edit_area->unindent (i); | |
855 } | |
856 //set selection on (un)indented section | |
857 _edit_area->setSelection (lineFrom, 0, lineTo, | |
858 _edit_area->text (lineTo).length ()); | |
859 } | |
860 else | |
861 { | |
862 int cpline, col; | |
863 _edit_area->getCursorPosition (&cpline, &col); | |
864 if (indent) | |
865 _edit_area->indent (cpline); | |
866 else | |
867 _edit_area->unindent (cpline); | |
868 } | |
869 | |
870 _edit_area->endUndoAction (); | |
871 } | |
816 | 872 |
817 void | 873 void |
818 file_editor_tab::do_comment_selected_text (bool comment) | 874 file_editor_tab::do_comment_selected_text (bool comment) |
819 { | 875 { |
820 QString comment_str = comment_string (_edit_area->lexer ()->lexer ()); | 876 QString comment_str = comment_string (_edit_area->lexer ()->lexer ()); |