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 ());