Commit eaecac2f authored by Nikolai Kosjar's avatar Nikolai Kosjar

CppEditor: Extract CppLocalRenaming

Now CppEditorWidget is much less convoluted with the local rename mode.

This class can be reused since there is no dependency on
CPPEditorWidget.

Change-Id: If513e59a03214cf9f2e3831f7e3616c001e1f036
Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
parent 98ae1bf6
This diff is collapsed.
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <texteditor/basetexteditor.h> #include <texteditor/basetexteditor.h>
#include <texteditor/semantichighlighter.h> #include <texteditor/semantichighlighter.h>
#include <texteditor/texteditorconstants.h>
#include <utils/qtcoverride.h> #include <utils/qtcoverride.h>
#include <utils/uncommentselection.h> #include <utils/uncommentselection.h>
...@@ -171,6 +172,9 @@ private slots: ...@@ -171,6 +172,9 @@ private slots:
void onCommentsSettingsChanged(const CppTools::CommentsSettings &settings); void onCommentsSettingsChanged(const CppTools::CommentsSettings &settings);
void abortDeclDefLink(); void abortDeclDefLink();
void onLocalRenamingFinished();
void onLocalRenamingProcessKeyPressNormally(QKeyEvent *e);
private: private:
static bool openCppEditorAt(const Link &, bool inNextSplit = false); static bool openCppEditorAt(const Link &, bool inNextSplit = false);
...@@ -185,15 +189,13 @@ private: ...@@ -185,15 +189,13 @@ private:
const CPlusPlus::Macro *findCanonicalMacro(const QTextCursor &cursor, const CPlusPlus::Macro *findCanonicalMacro(const QTextCursor &cursor,
CPlusPlus::Document::Ptr doc) const; CPlusPlus::Document::Ptr doc) const;
QTextCharFormat textCharFormat(TextEditor::TextStyle category);
void markSymbols(const QTextCursor &tc, const CppTools::SemanticInfo &info); void markSymbols(const QTextCursor &tc, const CppTools::SemanticInfo &info);
bool sortedOutline() const; bool sortedOutline() const;
void highlightUses(const QList<TextEditor::HighlightingResult> &uses, QList<QTextEdit::ExtraSelection> createSelectionsFromUses(
QList<QTextEdit::ExtraSelection> *selections); const QList<TextEditor::HighlightingResult> &uses);
void startRename();
void finishRename();
void abortRename();
QModelIndex indexForPosition(int line, int column, QModelIndex indexForPosition(int line, int column,
const QModelIndex &rootIndex = QModelIndex()) const; const QModelIndex &rootIndex = QModelIndex()) const;
......
...@@ -23,6 +23,7 @@ HEADERS += \ ...@@ -23,6 +23,7 @@ HEADERS += \
cppincludehierarchymodel.h \ cppincludehierarchymodel.h \
cppincludehierarchytreeview.h \ cppincludehierarchytreeview.h \
cppinsertvirtualmethods.h \ cppinsertvirtualmethods.h \
cpplocalrenaming.h \
cppoutline.h \ cppoutline.h \
cpppreprocessordialog.h \ cpppreprocessordialog.h \
cppquickfix.h \ cppquickfix.h \
...@@ -52,6 +53,7 @@ SOURCES += \ ...@@ -52,6 +53,7 @@ SOURCES += \
cppincludehierarchymodel.cpp \ cppincludehierarchymodel.cpp \
cppincludehierarchytreeview.cpp \ cppincludehierarchytreeview.cpp \
cppinsertvirtualmethods.cpp \ cppinsertvirtualmethods.cpp \
cpplocalrenaming.cpp \
cppoutline.cpp \ cppoutline.cpp \
cpppreprocessordialog.cpp \ cpppreprocessordialog.cpp \
cppquickfix.cpp \ cppquickfix.cpp \
......
...@@ -42,6 +42,7 @@ QtcPlugin { ...@@ -42,6 +42,7 @@ QtcPlugin {
"cppincludehierarchytreeview.cpp", "cppincludehierarchytreeview.h", "cppincludehierarchytreeview.cpp", "cppincludehierarchytreeview.h",
"cppinsertvirtualmethods.cpp", "cppinsertvirtualmethods.cpp",
"cppinsertvirtualmethods.h", "cppinsertvirtualmethods.h",
"cpplocalrenaming.cpp", "cpplocalrenaming.h",
"cppoutline.cpp", "cppoutline.h", "cppoutline.cpp", "cppoutline.h",
"cpppreprocessordialog.cpp", "cpppreprocessordialog.h", "cpppreprocessordialog.ui", "cpppreprocessordialog.cpp", "cpppreprocessordialog.h", "cpppreprocessordialog.ui",
"cppquickfix.cpp", "cppquickfix.h", "cppquickfix.cpp", "cppquickfix.h",
......
This diff is collapsed.
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator.
**
** 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
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
#ifndef CPPLOCALRENAMING
#define CPPLOCALRENAMING
#include <texteditor/texteditorconstants.h>
#include <QTextEdit>
namespace TextEditor { class BaseTextEditorWidget; }
namespace CppEditor {
namespace Internal {
class CppLocalRenaming : public QObject
{
Q_OBJECT
Q_DISABLE_COPY(CppLocalRenaming)
public:
explicit CppLocalRenaming(TextEditor::BaseTextEditorWidget *editorWidget);
void updateLocalUseSelections(const QList<QTextEdit::ExtraSelection> &selections);
bool start();
bool isActive() const;
void stop();
// Delegates for the editor widget
bool handlePaste();
bool handleCut();
bool handleSelectAll();
// E.g. limit navigation keys to selection, stop() on Esc/Return or delegate
// to BaseTextEditorWidget::keyPressEvent()
bool handleKeyPressEvent(QKeyEvent *e);
signals:
void finished();
void processKeyPressNormally(QKeyEvent *e);
private slots:
void onContentsChangeOfEditorWidgetDocument(int position, int charsRemoved, int charsAdded);
private:
CppLocalRenaming();
// The "rename selection" is the local use selection on which the user started the renaming
bool findRenameSelection(int cursorPosition);
void forgetRenamingSelection();
bool isWithinRenameSelection(int position);
QTextEdit::ExtraSelection &renameSelection();
int renameSelectionBegin() { return renameSelection().cursor.position(); }
int renameSelectionEnd() { return renameSelection().cursor.anchor(); }
void updateRenamingSelectionCursor(const QTextCursor &cursor);
void updateRenamingSelectionFormat(const QTextCharFormat &format);
void changeOtherSelectionsText(const QString &text);
void startRenameChange();
void finishRenameChange();
void updateEditorWidgetWithSelections();
QTextCharFormat textCharFormat(TextEditor::TextStyle category) const;
private:
TextEditor::BaseTextEditorWidget *m_editorWidget;
QList<QTextEdit::ExtraSelection> m_selections;
int m_renameSelectionIndex;
bool m_modifyingSelections;
bool m_renameSelectionChanged;
bool m_firstRenameChangeExpected;
};
} // namespace Internal
} // namespace CppEditor
#endif // CPPLOCALRENAMING
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment