From fe9eeece403e15d88759aa3766168f7c7d76d5d7 Mon Sep 17 00:00:00 2001 From: Adam Treat <atreat@rim.com> Date: Sun, 22 Jan 2012 17:05:02 -0500 Subject: [PATCH] Adds two actions to indent and unindent a selection. Add actions to the basetexteditor to indent and unindent a selection. These actions are equivalent to Key_Tab and Key_BackTab respectively. The advantage of having actions here is the user can override them and assign any key binding they want. Thus, I could assign Ctrl+I and Shift+Ctrl+I to them and have the same behavior as Kate. Change-Id: I0a305a7b45018072a78f2880ea15650ea92095a1 Reviewed-by: Leandro Melo <leandro.melo@nokia.com> --- src/plugins/texteditor/basetexteditor.cpp | 10 ++++++++++ src/plugins/texteditor/basetexteditor.h | 3 +++ src/plugins/texteditor/texteditoractionhandler.cpp | 14 ++++++++++++++ src/plugins/texteditor/texteditoractionhandler.h | 4 ++++ src/plugins/texteditor/texteditorconstants.h | 2 ++ 5 files changed, 33 insertions(+) diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 9233f2adf72..12885a14bb9 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -1063,6 +1063,16 @@ void BaseTextEditorWidget::lowercaseSelection() transformSelection(&QString::toLower); } +void BaseTextEditorWidget::indent() +{ + indentOrUnindent(true); +} + +void BaseTextEditorWidget::unindent() +{ + indentOrUnindent(false); +} + void BaseTextEditorWidget::moveLineUpDown(bool up) { QTextCursor cursor = textCursor(); diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index 4a39f9c6264..708d82c867f 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -322,6 +322,9 @@ public slots: void cleanWhitespace(); + void indent(); + void unindent(); + signals: void changed(); diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index 3685d5e75fd..17d180c2c08 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -102,6 +102,8 @@ TextEditorActionHandler::TextEditorActionHandler(const char *context, m_insertLineBelowAction(0), m_upperCaseSelectionAction(0), m_lowerCaseSelectionAction(0), + m_indentAction(0), + m_unindentAction(0), m_optionalActions(optionalActions), m_currentEditor(0), m_contextId(context), @@ -377,6 +379,16 @@ void TextEditorActionHandler::createActions() connect(m_circularPasteAction, SIGNAL(triggered()), this, SLOT(circularPasteAction())); medit->addAction(command, Core::Constants::G_EDIT_COPYPASTE); + m_indentAction = new QAction(tr("Indent"), this); + m_modifyingActions << m_indentAction; + command = am->registerAction(m_indentAction, Constants::INDENT, m_contextId, true); + connect(m_indentAction, SIGNAL(triggered()), this, SLOT(indent())); + + m_unindentAction = new QAction(tr("Unindent"), this); + m_modifyingActions << m_unindentAction; + command = am->registerAction(m_unindentAction, Constants::UNINDENT, m_contextId, true); + connect(m_unindentAction, SIGNAL(triggered()), this, SLOT(unindent())); + QAction *a = 0; a = new QAction(tr("Go to Line Start"), this); command = am->registerAction(a, Constants::GOTO_LINE_START, m_contextId, true); @@ -611,6 +623,8 @@ FUNCTION(uppercaseSelection) FUNCTION(lowercaseSelection) FUNCTION(insertLineAbove) FUNCTION(insertLineBelow) +FUNCTION(indent) +FUNCTION(unindent) FUNCTION(gotoLineStart) FUNCTION(gotoLineStartWithSelection) diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h index f24e4ec845c..70ff79237af 100644 --- a/src/plugins/texteditor/texteditoractionhandler.h +++ b/src/plugins/texteditor/texteditoractionhandler.h @@ -138,6 +138,8 @@ private slots: void uppercaseSelection(); void lowercaseSelection(); void updateCurrentEditor(Core::IEditor *editor); + void indent(); + void unindent(); void gotoLineStart(); void gotoLineStartWithSelection(); @@ -206,6 +208,8 @@ private: QAction *m_insertLineBelowAction; QAction *m_upperCaseSelectionAction; QAction *m_lowerCaseSelectionAction; + QAction *m_indentAction; + QAction *m_unindentAction; QList<QAction *> m_modifyingActions; uint m_optionalActions; diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h index 513a9604837..0f26a6f7830 100644 --- a/src/plugins/texteditor/texteditorconstants.h +++ b/src/plugins/texteditor/texteditorconstants.h @@ -102,6 +102,8 @@ const char TASK_DOWNLOAD_DEFINITIONS[] = "TextEditor.Task.Download"; const char TASK_REGISTER_DEFINITIONS[] = "TextEditor.Task.Register"; const char TASK_OPEN_FILE[] = "TextEditor.Task.OpenFile"; const char CIRCULAR_PASTE[] = "TextEditor.CircularPaste"; +const char INDENT[] = "TextEditor.Indent"; +const char UNINDENT[] = "TextEditor.Unindent"; // Text color and style categories const char C_TEXT[] = "Text"; -- GitLab