| 1 | // SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. |
|---|---|
| 2 | // |
| 3 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 4 | |
| 5 | #include "texteditkeeper.h" |
| 6 | |
| 7 | TextEdit *TextEditKeeper::create(const QString &language, QString *err) |
| 8 | { |
| 9 | return instance()->editFactory.create(language, err); |
| 10 | } |
| 11 | |
| 12 | void TextEditKeeper::setAnalysedLanguage(const QString &lang) |
| 13 | { |
| 14 | instance()->analysedLanguage = lang; |
| 15 | } |
| 16 | |
| 17 | QString TextEditKeeper::getAnalysedLanguage() |
| 18 | { |
| 19 | return instance()->analysedLanguage; |
| 20 | } |
| 21 | |
| 22 | void TextEditKeeper::setAnalysedWorkspace(const QString &workspace) |
| 23 | { |
| 24 | instance()->analysedWorkspace = workspace; |
| 25 | } |
| 26 | |
| 27 | QString TextEditKeeper::getAnalysedWorkspace() |
| 28 | { |
| 29 | return instance()->analysedWorkspace; |
| 30 | } |
| 31 | |
| 32 | void TextEditKeeper::setAnalysedStorage(const QString &storage) |
| 33 | { |
| 34 | instance()->analysedStorage = storage; |
| 35 | } |
| 36 | |
| 37 | QString TextEditKeeper::getAnalysedStorage() |
| 38 | { |
| 39 | return instance()->analysedStorage; |
| 40 | } |
| 41 | |
| 42 | void TextEditKeeper::setAnalysedData(const AnalysedData &data) |
| 43 | { |
| 44 | instance()->data = data; |
| 45 | } |
| 46 | |
| 47 | void TextEditKeeper::cleanAnalysedData() |
| 48 | { |
| 49 | instance()->data.rules.clear(); |
| 50 | instance()->data.tokenMaps.clear(); |
| 51 | } |
| 52 | |
| 53 | QString TextEditKeeper::userActionAnalyseTitle() |
| 54 | { |
| 55 | return "User Action Analyse"; // can't translation this, crashed |
| 56 | } |
| 57 | |
| 58 | QString TextEditKeeper::getTokenTypeAnnLine(const QString &tokenType, const QString &displayText) |
| 59 | { |
| 60 | QString result; |
| 61 | auto data = instance()->data; |
| 62 | auto rules = data.rules; |
| 63 | for(auto tokenMap: data.tokenMaps) { |
| 64 | if (tokenType.toStdString() != tokenMap.semanticTokenType |
| 65 | || tokenMap.result.empty()) |
| 66 | continue; |
| 67 | for (size_t idx = 0; idx < rules.size(); idx++) { |
| 68 | if (!result.isEmpty()) result += " "; |
| 69 | result += QString::fromStdString(data.rules[idx]); |
| 70 | if (!result.isEmpty()) result += ": "; |
| 71 | result += QString::number(tokenMap.result[idx]*100) + "%"; |
| 72 | } |
| 73 | } |
| 74 | if (!result.isEmpty()) { |
| 75 | QString textInfo; |
| 76 | if (!displayText.isEmpty()) { |
| 77 | textInfo += "\""+ displayText + "\""; |
| 78 | } |
| 79 | if (!textInfo.isEmpty()) |
| 80 | result = tokenType + " "+ textInfo + " "+ result; |
| 81 | } |
| 82 | return result; |
| 83 | } |
| 84 | |
| 85 | AnalysedData TextEditKeeper::analysedData() |
| 86 | { |
| 87 | return instance()->data; |
| 88 | } |
| 89 | |
| 90 | dpfservice::ProjectInfo TextEditKeeper::projectInfo() |
| 91 | { |
| 92 | return instance()->proInfo; |
| 93 | } |
| 94 | |
| 95 | void TextEditKeeper::saveProjectInfo(const dpfservice::ProjectInfo &info) |
| 96 | { |
| 97 | instance()->proInfo = info; |
| 98 | } |
| 99 | |
| 100 | void TextEditKeeper::removeProjectInfo(const dpfservice::ProjectInfo &info) |
| 101 | { |
| 102 | if (instance()->proInfo.workspaceFolder() == info.workspaceFolder()) { |
| 103 | instance()->proInfo = dpfservice::ProjectInfo(); |
| 104 | } |
| 105 | } |
| 106 |