Files
qt-creator/src/plugins/texteditor/texteditoractionhandler.h

234 lines
7.2 KiB
C
Raw Normal View History

/****************************************************************************
2008-12-02 12:01:29 +01:00
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
2008-12-02 12:01:29 +01:00
**
** This file is part of Qt Creator.
2008-12-02 12:01:29 +01:00
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
2010-12-17 16:01:08 +01:00
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
2008-12-02 16:19:05 +01:00
2008-12-02 12:01:29 +01:00
#ifndef TEXTEDITORACTIONHANDLER_H
#define TEXTEDITORACTIONHANDLER_H
#include "texteditor_global.h"
#include <coreplugin/icontext.h>
2008-12-02 12:01:29 +01:00
#include <QObject>
#include <QPointer>
#include <QList>
2008-12-02 12:01:29 +01:00
QT_FORWARD_DECLARE_CLASS(QAction)
namespace Core {
class ICore;
class IEditor;
class ActionContainer;
}
2008-12-02 12:01:29 +01:00
namespace TextEditor {
class BaseTextEditorWidget;
2008-12-02 12:01:29 +01:00
// Redirects slots from global actions to the respective editor.
class TEXTEDITOR_EXPORT TextEditorActionHandler : public QObject
{
Q_OBJECT
public:
enum OptionalActionsMask {
None = 0,
Format = 1,
UnCommentSelection = 2,
UnCollapseAll = 4,
FollowSymbolUnderCursor = 8,
JumpToFileUnderCursor = 16
2008-12-02 12:01:29 +01:00
};
explicit TextEditorActionHandler(QObject *parent, Core::Id contextId, uint optionalActions = None);
~TextEditorActionHandler();
2008-12-02 12:01:29 +01:00
protected:
virtual BaseTextEditorWidget *resolveTextEditorWidget(Core::IEditor *editor) const;
private:
QAction *registerAction(Core::Id id,
const char *slot,
bool scriptable = false,
const QString &title = QString(),
const QKeySequence &keySequence = QKeySequence(),
const char *menueGroup = 0,
Core::ActionContainer *container = 0);
2008-12-02 12:01:29 +01:00
void createActions();
2008-12-02 12:01:29 +01:00
private slots:
void updateActions();
void updateRedoAction();
void updateUndoAction();
void updateCopyAction();
2008-12-02 12:01:29 +01:00
void undoAction();
void redoAction();
void copyAction();
void cutAction();
void pasteAction();
void circularPasteAction();
void switchUtf8bomAction();
2008-12-02 12:01:29 +01:00
void selectAllAction();
void gotoAction();
void printAction();
void formatAction();
void rewrapParagraphAction();
2008-12-02 12:01:29 +01:00
void setVisualizeWhitespace(bool);
void cleanWhitespace();
2008-12-02 12:01:29 +01:00
void setTextWrapping(bool);
void unCommentSelection();
void unfoldAll();
void fold();
void unfold();
void cutLine();
void copyLine();
2008-12-02 12:01:29 +01:00
void deleteLine();
void deleteEndOfWord();
void deleteEndOfWordCamelCase();
void deleteStartOfWord();
void deleteStartOfWordCamelCase();
2008-12-02 12:01:29 +01:00
void selectEncoding();
void increaseFontSize();
void decreaseFontSize();
void resetFontSize();
void gotoBlockStart();
void gotoBlockEnd();
void gotoBlockStartWithSelection();
void gotoBlockEndWithSelection();
void selectBlockUp();
void selectBlockDown();
void viewPageUp();
void viewPageDown();
void viewLineUp();
void viewLineDown();
void moveLineUp();
void moveLineDown();
void copyLineUp();
void copyLineDown();
void joinLines();
void insertLineAbove();
void insertLineBelow();
void uppercaseSelection();
void lowercaseSelection();
void updateCurrentEditor(Core::IEditor *editor);
void indent();
void unindent();
void openLinkUnderCursor();
void openLinkUnderCursorInNextSplit();
2008-12-02 12:01:29 +01:00
void gotoLineStart();
void gotoLineStartWithSelection();
void gotoLineEnd();
void gotoLineEndWithSelection();
void gotoNextLine();
void gotoNextLineWithSelection();
void gotoPreviousLine();
void gotoPreviousLineWithSelection();
void gotoPreviousCharacter();
void gotoPreviousCharacterWithSelection();
void gotoNextCharacter();
void gotoNextCharacterWithSelection();
void gotoPreviousWord();
void gotoPreviousWordWithSelection();
void gotoNextWord();
void gotoNextWordWithSelection();
void gotoPreviousWordCamelCase();
void gotoPreviousWordCamelCaseWithSelection();
void gotoNextWordCamelCase();
void gotoNextWordCamelCaseWithSelection();
2008-12-02 12:01:29 +01:00
private:
QAction *m_undoAction;
QAction *m_redoAction;
QAction *m_copyAction;
QAction *m_cutAction;
QAction *m_pasteAction;
QAction *m_circularPasteAction;
QAction *m_switchUtf8bomAction;
2008-12-02 12:01:29 +01:00
QAction *m_selectAllAction;
QAction *m_gotoAction;
QAction *m_printAction;
QAction *m_formatAction;
QAction *m_rewrapParagraphAction;
2008-12-02 12:01:29 +01:00
QAction *m_visualizeWhitespaceAction;
QAction *m_cleanWhitespaceAction;
2008-12-02 12:01:29 +01:00
QAction *m_textWrappingAction;
QAction *m_unCommentSelectionAction;
QAction *m_unfoldAllAction;
QAction *m_foldAction;
QAction *m_unfoldAction;
QAction *m_cutLineAction;
QAction *m_copyLineAction;
2008-12-02 12:01:29 +01:00
QAction *m_deleteLineAction;
QAction *m_deleteEndOfWordAction;
QAction *m_deleteEndOfWordCamelCaseAction;
QAction *m_deleteStartOfWordAction;
QAction *m_deleteStartOfWordCamelCaseAction;
2008-12-02 12:01:29 +01:00
QAction *m_selectEncodingAction;
QAction *m_increaseFontSizeAction;
QAction *m_decreaseFontSizeAction;
QAction *m_resetFontSizeAction;
QAction *m_gotoBlockStartAction;
QAction *m_gotoBlockEndAction;
QAction *m_gotoBlockStartWithSelectionAction;
QAction *m_gotoBlockEndWithSelectionAction;
QAction *m_selectBlockUpAction;
QAction *m_selectBlockDownAction;
QAction *m_viewPageUpAction;
QAction *m_viewPageDownAction;
QAction *m_viewLineUpAction;
QAction *m_viewLineDownAction;
QAction *m_moveLineUpAction;
QAction *m_moveLineDownAction;
QAction *m_copyLineUpAction;
QAction *m_copyLineDownAction;
QAction *m_joinLinesAction;
QAction *m_insertLineAboveAction;
QAction *m_insertLineBelowAction;
QAction *m_upperCaseSelectionAction;
QAction *m_lowerCaseSelectionAction;
QAction *m_indentAction;
QAction *m_unindentAction;
QAction *m_followSymbolAction;
QAction *m_followSymbolInNextSplitAction;
QAction *m_jumpToFileAction;
QAction *m_jumpToFileInNextSplitAction;
QList<QAction *> m_modifyingActions;
2008-12-02 12:01:29 +01:00
uint m_optionalActions;
QPointer<BaseTextEditorWidget> m_currentEditorWidget;
Core::Id m_contextId;
2008-12-02 12:01:29 +01:00
};
} // namespace TextEditor
#endif // TEXTEDITORACTIONHANDLER_H