diff options
author | hjk <hjk121@nokiamail.com> | 2014-07-19 11:27:28 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-07-23 10:38:31 +0200 |
commit | cf8a614419fe07912ca959410cebf995a5ff9b4d (patch) | |
tree | f98c0cb436d2fcaf127e12e981e1ab4b6b17bd1e /src/plugins/texteditor/textmark.h | |
parent | 53bfd5285de2633f560ed5a2c5d5bd42b78a1c99 (diff) |
Merge ITextMark and BaseTextMark
Turns out we don't even need two-phase initialization,
by transparently postponing registration until we get
a non-empty file name, either at constuction, or at
file name change times.
Change-Id: I3e87e47c820066e6707e946fc474ab9c1993e61f
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'src/plugins/texteditor/textmark.h')
-rw-r--r-- | src/plugins/texteditor/textmark.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/src/plugins/texteditor/textmark.h b/src/plugins/texteditor/textmark.h new file mode 100644 index 0000000000..60d63fb96f --- /dev/null +++ b/src/plugins/texteditor/textmark.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** 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 TextMark_H +#define TextMark_H + +#include "texteditor_global.h" + +#include <QObject> +#include <QIcon> + +QT_BEGIN_NAMESPACE +class QPainter; +class QRect; +class QTextBlock; +QT_END_NAMESPACE + +namespace TextEditor { + +class ITextEditor; +class BaseTextDocument; + +namespace Internal { class TextMarkRegistry; } + +class TEXTEDITOR_EXPORT TextMark +{ +public: + TextMark(const QString &fileName, int lineNumber); + virtual ~TextMark(); + + // determine order on markers on the same line. + enum Priority + { + LowPriority, + NormalPriority, + HighPriority // shown on top. + }; + + QString fileName() const; + int lineNumber() const; + + virtual void paint(QPainter *painter, const QRect &rect) const; + /// called if the filename of the document changed + virtual void updateFileName(const QString &fileName); + virtual void updateLineNumber(int lineNumber); + virtual void updateBlock(const QTextBlock &block); + virtual void move(int line); + virtual void removedFromEditor(); + virtual bool isClickable() const; + virtual void clicked(); + virtual bool isDraggable() const; + virtual void dragToLine(int lineNumber); + + void setIcon(const QIcon &icon); + // call this if the icon has changed. + void updateMarker(); + Priority priority() const; + void setPriority(Priority prioriy); + bool isVisible() const; + void setVisible(bool isVisible); + double widthFactor() const; + void setWidthFactor(double factor); + + BaseTextDocument *baseTextDocument() const; + void setBaseTextDocument(BaseTextDocument *baseTextDocument); + +private: + Q_DISABLE_COPY(TextMark) + friend class Internal::TextMarkRegistry; + + BaseTextDocument *m_baseTextDocument; + QString m_fileName; + int m_lineNumber; + Priority m_priority; + bool m_visible; + QIcon m_icon; + double m_widthFactor; +}; + +} // namespace TextEditor + +#endif // TextMark_H |