From 953cdb971fd110da2c4a30a53350c5628f8deb71 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 26 Sep 2014 09:14:03 +0200 Subject: TextEditor: More BaseText* -> Text* renamings *Document* and *Layout* classes, all basetext* files Change-Id: I1c6e376733a434fcb5c7f19c6210dfa031eeafde Reviewed-by: Eike Ziller --- src/plugins/texteditor/textdocument.h | 156 ++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 src/plugins/texteditor/textdocument.h (limited to 'src/plugins/texteditor/textdocument.h') diff --git a/src/plugins/texteditor/textdocument.h b/src/plugins/texteditor/textdocument.h new file mode 100644 index 0000000000..55ba153982 --- /dev/null +++ b/src/plugins/texteditor/textdocument.h @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** 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 BASETEXTDOCUMENT_H +#define BASETEXTDOCUMENT_H + +#include "texteditor_global.h" + +#include +#include +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE +class QTextCursor; +class QTextDocument; +QT_END_NAMESPACE + +namespace TextEditor { + +class ExtraEncodingSettings; +class FontSettings; +class Indenter; +class StorageSettings; +class SyntaxHighlighter; +class TabSettings; +class TextDocumentPrivate; +class TextMark; +class TypingSettings; + +typedef QList TextMarks; + +class TEXTEDITOR_EXPORT TextDocument : public Core::BaseTextDocument +{ + Q_OBJECT + +public: + explicit TextDocument(Core::Id id = Core::Id()); + virtual ~TextDocument(); + + static QMap openedTextDocumentContents(); + static QMap openedTextDocumentEncodings(); + + virtual QString plainText() const; + virtual QString textAt(int pos, int length) const; + virtual QChar characterAt(int pos) const; + + void setTypingSettings(const TypingSettings &typingSettings); + void setStorageSettings(const StorageSettings &storageSettings); + void setExtraEncodingSettings(const ExtraEncodingSettings &extraEncodingSettings); + + const TypingSettings &typingSettings() const; + const StorageSettings &storageSettings() const; + const TabSettings &tabSettings() const; + const ExtraEncodingSettings &extraEncodingSettings() const; + const FontSettings &fontSettings() const; + + void setIndenter(Indenter *indenter); + Indenter *indenter() const; + void autoIndent(const QTextCursor &cursor, QChar typedChar = QChar::Null); + void autoReindent(const QTextCursor &cursor); + QTextCursor indent(const QTextCursor &cursor); + QTextCursor unindent(const QTextCursor &cursor); + + TextMarks marks() const; + bool addMark(TextMark *mark); + TextMarks marksAt(int line) const; + void removeMark(TextMark *mark); + void updateMark(TextMark *mark); + void moveMark(TextMark *mark, int previousLine); + void removeMarkFromMarksCache(TextMark *mark); + + // IDocument implementation. + bool save(QString *errorString, const QString &fileName, bool autoSave); + bool setContents(const QByteArray &contents); + bool shouldAutoSave() const; + bool isFileReadOnly() const; + bool isModified() const; + bool isSaveAsAllowed() const; + void checkPermissions(); + bool reload(QString *errorString, ReloadFlag flag, ChangeType type); + void setFilePath(const QString &newName); + + QString defaultPath() const; + QString suggestedFileName() const; + + void setDefaultPath(const QString &defaultPath); + void setSuggestedFileName(const QString &suggestedFileName); + + virtual bool open(QString *errorString, const QString &fileName, const QString &realFileName); + virtual bool reload(QString *errorString); + + bool setPlainText(const QString &text); + QTextDocument *document() const; + void setSyntaxHighlighter(SyntaxHighlighter *highlighter); + SyntaxHighlighter *syntaxHighlighter() const; + + bool reload(QString *errorString, QTextCodec *codec); + void cleanWhitespace(const QTextCursor &cursor); + + virtual void triggerPendingUpdates(); + +public slots: + void setTabSettings(const TextEditor::TabSettings &tabSettings); + void setFontSettings(const TextEditor::FontSettings &fontSettings); + +signals: + void contentsChanged(); + void tabSettingsChanged(); + void fontSettingsChanged(); + +protected slots: + virtual void applyFontSettings(); + +private: + void cleanWhitespace(QTextCursor &cursor, bool cleanIndentation, bool inEntireDocument); + void ensureFinalNewLine(QTextCursor &cursor); + + TextDocumentPrivate *d; +}; + +typedef QSharedPointer BaseTextDocumentPtr; + +} // namespace TextEditor + +#endif // BASETEXTDOCUMENT_H -- cgit v1.2.1