1 Star 0 Fork 0

旷野芦苇殇/texteditor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
textsuggestion.h 2.45 KB
一键复制 编辑 原始数据 按行查看 历史
旷野芦苇殇 提交于 2025-03-05 21:22 +08:00 . 同步15.01的AI 部分代码
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "texteditor_global.h"
#include "basehoverhandler.h"
#include <utils/textutils.h>
#include <QTextBlock>
#include <QTextCursor>
#include <QTextDocument>
namespace TextEditor {
class TextEditorWidget;
class TEXTEDITOR_EXPORT TextSuggestion
{
public:
class TEXTEDITOR_EXPORT Data
{
public:
Utils::Text::Range range;
Utils::Text::Position position;
QString text;
};
TextSuggestion(const Data &suggestion, QTextDocument *sourceDocument);
virtual ~TextSuggestion();
// Returns true if the suggestion was applied completely, false if it was only partially applied.
virtual bool apply();
// Returns true if the suggestion was applied completely, false if it was only partially applied.
virtual bool applyWord(TextEditorWidget *widget);
virtual bool applyLine(TextEditorWidget *widget);
virtual bool filterSuggestions(TextEditorWidget *widget);
int currentPosition() const { return m_currentPosition; }
void setCurrentPosition(int position) { m_currentPosition = position; }
QTextDocument *replacementDocument() { return &m_replacementDocument; }
QTextDocument *sourceDocument() { return m_sourceDocument; }
private:
enum Part {Word, Line};
bool applyPart(Part part, TextEditor::TextEditorWidget *widget);
Data m_suggestion;
QTextDocument m_replacementDocument;
QTextDocument *m_sourceDocument = nullptr;
int m_currentPosition = -1;
};
class TEXTEDITOR_EXPORT CyclicSuggestion : public TextSuggestion
{
public:
CyclicSuggestion(
const QList<Data> &suggestions, QTextDocument *sourceDocument, int currentCompletion = 0);
QList<Data> suggestions() const { return m_suggestions; }
int currentSuggestion() const { return m_currentSuggestion; }
private:
bool filterSuggestions(TextEditorWidget *widget) override;
QList<Data> m_suggestions;
int m_currentSuggestion = 0;
};
class SuggestionHoverHandler final : public BaseHoverHandler
{
public:
SuggestionHoverHandler() = default;
protected:
void identifyMatch(TextEditor::TextEditorWidget *editorWidget,
int pos,
ReportPriority report) final;
void operateTooltip(TextEditor::TextEditorWidget *editorWidget, const QPoint &point) final;
private:
QTextBlock m_block;
};
} // namespace TextEditor
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/fengzhu2007/texteditor.git
git@gitee.com:fengzhu2007/texteditor.git
fengzhu2007
texteditor
texteditor
main

搜索帮助