mirror of
https://github.com/nomic-ai/gpt4all.git
synced 2025-06-23 14:07:58 +00:00
Latest rc5 fixes (#2492)
* Adjust the size of the new conversation tray to enlarge a bit. * Add themeable code syntax highlighting. * Change the default size to a larger context chunk for localdocs. Signed-off-by: Adam Treat <treat.adam@gmail.com>
This commit is contained in:
parent
4a1a3c48e8
commit
37dbd56153
@ -41,29 +41,6 @@ enum Language {
|
|||||||
Markdown
|
Markdown
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO (Adam) These should be themeable and not hardcoded since they are quite harsh on the eyes in
|
|
||||||
// light mode.
|
|
||||||
|
|
||||||
static QColor defaultColor = "#d1d5db"; // white
|
|
||||||
static QColor keywordColor = "#2e95d3"; // blue
|
|
||||||
static QColor functionColor = "#f22c3d"; // red
|
|
||||||
static QColor functionCallColor = "#e9950c"; // orange
|
|
||||||
static QColor commentColor = "#808080"; // gray
|
|
||||||
static QColor stringColor = "#00a37d"; // green
|
|
||||||
static QColor numberColor = "#df3079"; // fuchsia
|
|
||||||
static QColor preprocessorColor = keywordColor;
|
|
||||||
static QColor typeColor = numberColor;
|
|
||||||
static QColor arrowColor = functionColor;
|
|
||||||
static QColor commandColor = functionCallColor;
|
|
||||||
static QColor variableColor = numberColor;
|
|
||||||
static QColor keyColor = functionColor;
|
|
||||||
static QColor valueColor = stringColor;
|
|
||||||
static QColor parameterColor = stringColor;
|
|
||||||
static QColor attributeNameColor = numberColor;
|
|
||||||
static QColor attributeValueColor = stringColor;
|
|
||||||
static QColor specialCharacterColor = functionColor;
|
|
||||||
static QColor doctypeColor = commentColor;
|
|
||||||
|
|
||||||
static Language stringToLanguage(const QString &language)
|
static Language stringToLanguage(const QString &language)
|
||||||
{
|
{
|
||||||
if (language == "python")
|
if (language == "python")
|
||||||
@ -101,11 +78,62 @@ static Language stringToLanguage(const QString &language)
|
|||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum Code {
|
||||||
|
Default,
|
||||||
|
Keyword,
|
||||||
|
Function,
|
||||||
|
FunctionCall,
|
||||||
|
Comment,
|
||||||
|
String,
|
||||||
|
Number,
|
||||||
|
Header,
|
||||||
|
Preprocessor,
|
||||||
|
Type,
|
||||||
|
Arrow,
|
||||||
|
Command,
|
||||||
|
Variable,
|
||||||
|
Key,
|
||||||
|
Value,
|
||||||
|
Parameter,
|
||||||
|
AttributeName,
|
||||||
|
AttributeValue,
|
||||||
|
SpecialCharacter,
|
||||||
|
DocType
|
||||||
|
};
|
||||||
|
|
||||||
struct HighlightingRule {
|
struct HighlightingRule {
|
||||||
QRegularExpression pattern;
|
QRegularExpression pattern;
|
||||||
QTextCharFormat format;
|
Code format;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static QColor formatToColor(Code c, const CodeColors &colors)
|
||||||
|
{
|
||||||
|
switch (c) {
|
||||||
|
case Default: return colors.defaultColor;
|
||||||
|
case Keyword: return colors.keywordColor;
|
||||||
|
case Function: return colors.functionColor;
|
||||||
|
case FunctionCall: return colors.functionCallColor;
|
||||||
|
case Comment: return colors.commentColor;
|
||||||
|
case String: return colors.stringColor;
|
||||||
|
case Number: return colors.numberColor;
|
||||||
|
case Header: return colors.headerColor;
|
||||||
|
case Preprocessor: return colors.preprocessorColor;
|
||||||
|
case Type: return colors.typeColor;
|
||||||
|
case Arrow: return colors.arrowColor;
|
||||||
|
case Command: return colors.commandColor;
|
||||||
|
case Variable: return colors.variableColor;
|
||||||
|
case Key: return colors.keyColor;
|
||||||
|
case Value: return colors.valueColor;
|
||||||
|
case Parameter: return colors.parameterColor;
|
||||||
|
case AttributeName: return colors.attributeNameColor;
|
||||||
|
case AttributeValue: return colors.attributeValueColor;
|
||||||
|
case SpecialCharacter: return colors.specialCharacterColor;
|
||||||
|
case DocType: return colors.doctypeColor;
|
||||||
|
default: Q_UNREACHABLE();
|
||||||
|
}
|
||||||
|
return QColor();
|
||||||
|
}
|
||||||
|
|
||||||
static QVector<HighlightingRule> pythonHighlightingRules()
|
static QVector<HighlightingRule> pythonHighlightingRules()
|
||||||
{
|
{
|
||||||
static QVector<HighlightingRule> highlightingRules;
|
static QVector<HighlightingRule> highlightingRules;
|
||||||
@ -113,32 +141,22 @@ static QVector<HighlightingRule> pythonHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionCallFormat;
|
|
||||||
functionCallFormat.setForeground(functionCallColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
||||||
rule.format = functionCallFormat;
|
rule.format = FunctionCall;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionFormat;
|
|
||||||
functionFormat.setForeground(functionColor);
|
|
||||||
rule.pattern = QRegularExpression("\\bdef\\s+(\\w+)\\b");
|
rule.pattern = QRegularExpression("\\bdef\\s+(\\w+)\\b");
|
||||||
rule.format = functionFormat;
|
rule.format = Function;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat numberFormat;
|
|
||||||
numberFormat.setForeground(numberColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
||||||
rule.format = numberFormat;
|
rule.format = Number;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat keywordFormat;
|
|
||||||
keywordFormat.setForeground(keywordColor);
|
|
||||||
QStringList keywordPatterns = {
|
QStringList keywordPatterns = {
|
||||||
"\\bdef\\b", "\\bclass\\b", "\\bif\\b", "\\belse\\b", "\\belif\\b",
|
"\\bdef\\b", "\\bclass\\b", "\\bif\\b", "\\belse\\b", "\\belif\\b",
|
||||||
"\\bwhile\\b", "\\bfor\\b", "\\breturn\\b", "\\bprint\\b", "\\bimport\\b",
|
"\\bwhile\\b", "\\bfor\\b", "\\breturn\\b", "\\bprint\\b", "\\bimport\\b",
|
||||||
@ -148,24 +166,20 @@ static QVector<HighlightingRule> pythonHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : keywordPatterns) {
|
for (const QString &pattern : keywordPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = keywordFormat;
|
rule.format = Keyword;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat stringFormat;
|
|
||||||
stringFormat.setForeground(stringColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"");
|
rule.pattern = QRegularExpression("\".*?\"");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("\'.*?\'");
|
rule.pattern = QRegularExpression("\'.*?\'");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("#[^\n]*");
|
rule.pattern = QRegularExpression("#[^\n]*");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -179,36 +193,26 @@ static QVector<HighlightingRule> csharpHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
// Function call highlighting
|
// Function call highlighting
|
||||||
QTextCharFormat functionCallFormat;
|
|
||||||
functionCallFormat.setForeground(functionCallColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
||||||
rule.format = functionCallFormat;
|
rule.format = FunctionCall;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
// Function definition highlighting
|
// Function definition highlighting
|
||||||
QTextCharFormat functionFormat;
|
|
||||||
functionFormat.setForeground(functionColor);
|
|
||||||
rule.pattern = QRegularExpression("\\bvoid|int|double|string|bool\\s+(\\w+)\\s*(?=\\()");
|
rule.pattern = QRegularExpression("\\bvoid|int|double|string|bool\\s+(\\w+)\\s*(?=\\()");
|
||||||
rule.format = functionFormat;
|
rule.format = Function;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
// Number highlighting
|
// Number highlighting
|
||||||
QTextCharFormat numberFormat;
|
|
||||||
numberFormat.setForeground(numberColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
||||||
rule.format = numberFormat;
|
rule.format = Number;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
// Keyword highlighting
|
// Keyword highlighting
|
||||||
QTextCharFormat keywordFormat;
|
|
||||||
keywordFormat.setForeground(keywordColor);
|
|
||||||
QStringList keywordPatterns = {
|
QStringList keywordPatterns = {
|
||||||
"\\bvoid\\b", "\\bint\\b", "\\bdouble\\b", "\\bstring\\b", "\\bbool\\b",
|
"\\bvoid\\b", "\\bint\\b", "\\bdouble\\b", "\\bstring\\b", "\\bbool\\b",
|
||||||
"\\bclass\\b", "\\bif\\b", "\\belse\\b", "\\bwhile\\b", "\\bfor\\b",
|
"\\bclass\\b", "\\bif\\b", "\\belse\\b", "\\bwhile\\b", "\\bfor\\b",
|
||||||
@ -220,27 +224,23 @@ static QVector<HighlightingRule> csharpHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : keywordPatterns) {
|
for (const QString &pattern : keywordPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = keywordFormat;
|
rule.format = Keyword;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
// String highlighting
|
// String highlighting
|
||||||
QTextCharFormat stringFormat;
|
|
||||||
stringFormat.setForeground(stringColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"");
|
rule.pattern = QRegularExpression("\".*?\"");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
// Single-line comment highlighting
|
// Single-line comment highlighting
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("//[^\n]*");
|
rule.pattern = QRegularExpression("//[^\n]*");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
// Multi-line comment highlighting
|
// Multi-line comment highlighting
|
||||||
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
return highlightingRules;
|
return highlightingRules;
|
||||||
@ -253,32 +253,22 @@ static QVector<HighlightingRule> cppHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionCallFormat;
|
|
||||||
functionCallFormat.setForeground(functionCallColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
||||||
rule.format = functionCallFormat;
|
rule.format = FunctionCall;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionFormat;
|
|
||||||
functionFormat.setForeground(functionColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[a-zA-Z_][a-zA-Z0-9_]*\\s+(\\w+)\\s*\\(");
|
rule.pattern = QRegularExpression("\\b[a-zA-Z_][a-zA-Z0-9_]*\\s+(\\w+)\\s*\\(");
|
||||||
rule.format = functionFormat;
|
rule.format = Function;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat numberFormat;
|
|
||||||
numberFormat.setForeground(numberColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
||||||
rule.format = numberFormat;
|
rule.format = Number;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat keywordFormat;
|
|
||||||
keywordFormat.setForeground(keywordColor);
|
|
||||||
QStringList keywordPatterns = {
|
QStringList keywordPatterns = {
|
||||||
"\\bauto\\b", "\\bbool\\b", "\\bbreak\\b", "\\bcase\\b", "\\bcatch\\b",
|
"\\bauto\\b", "\\bbool\\b", "\\bbreak\\b", "\\bcase\\b", "\\bcatch\\b",
|
||||||
"\\bchar\\b", "\\bclass\\b", "\\bconst\\b", "\\bconstexpr\\b", "\\bcontinue\\b",
|
"\\bchar\\b", "\\bclass\\b", "\\bconst\\b", "\\bconstexpr\\b", "\\bcontinue\\b",
|
||||||
@ -297,34 +287,28 @@ static QVector<HighlightingRule> cppHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : keywordPatterns) {
|
for (const QString &pattern : keywordPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = keywordFormat;
|
rule.format = Keyword;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat stringFormat;
|
|
||||||
stringFormat.setForeground(stringColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"");
|
rule.pattern = QRegularExpression("\".*?\"");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("\'.*?\'");
|
rule.pattern = QRegularExpression("\'.*?\'");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("//[^\n]*");
|
rule.pattern = QRegularExpression("//[^\n]*");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat preprocessorFormat;
|
|
||||||
preprocessorFormat.setForeground(preprocessorColor);
|
|
||||||
rule.pattern = QRegularExpression("#(?:include|define|undef|ifdef|ifndef|if|else|elif|endif|error|pragma)\\b.*");
|
rule.pattern = QRegularExpression("#(?:include|define|undef|ifdef|ifndef|if|else|elif|endif|error|pragma)\\b.*");
|
||||||
rule.format = preprocessorFormat;
|
rule.format = Preprocessor;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
return highlightingRules;
|
return highlightingRules;
|
||||||
@ -337,32 +321,22 @@ static QVector<HighlightingRule> typescriptHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionCallFormat;
|
|
||||||
functionCallFormat.setForeground(functionCallColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
||||||
rule.format = functionCallFormat;
|
rule.format = FunctionCall;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionFormat;
|
|
||||||
functionFormat.setForeground(functionColor);
|
|
||||||
rule.pattern = QRegularExpression("\\bfunction\\s+(\\w+)\\b");
|
rule.pattern = QRegularExpression("\\bfunction\\s+(\\w+)\\b");
|
||||||
rule.format = functionFormat;
|
rule.format = Function;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat numberFormat;
|
|
||||||
numberFormat.setForeground(numberColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
||||||
rule.format = numberFormat;
|
rule.format = Number;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat keywordFormat;
|
|
||||||
keywordFormat.setForeground(keywordColor);
|
|
||||||
QStringList keywordPatterns = {
|
QStringList keywordPatterns = {
|
||||||
"\\bfunction\\b", "\\bvar\\b", "\\blet\\b", "\\bconst\\b", "\\bif\\b", "\\belse\\b",
|
"\\bfunction\\b", "\\bvar\\b", "\\blet\\b", "\\bconst\\b", "\\bif\\b", "\\belse\\b",
|
||||||
"\\bfor\\b", "\\bwhile\\b", "\\breturn\\b", "\\btry\\b", "\\bcatch\\b", "\\bfinally\\b",
|
"\\bfor\\b", "\\bwhile\\b", "\\breturn\\b", "\\btry\\b", "\\bcatch\\b", "\\bfinally\\b",
|
||||||
@ -377,12 +351,10 @@ static QVector<HighlightingRule> typescriptHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : keywordPatterns) {
|
for (const QString &pattern : keywordPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = keywordFormat;
|
rule.format = Keyword;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat typeFormat;
|
|
||||||
typeFormat.setForeground(typeColor);
|
|
||||||
QStringList typePatterns = {
|
QStringList typePatterns = {
|
||||||
"\\bstring\\b", "\\bnumber\\b", "\\bboolean\\b", "\\bany\\b", "\\bvoid\\b",
|
"\\bstring\\b", "\\bnumber\\b", "\\bboolean\\b", "\\bany\\b", "\\bvoid\\b",
|
||||||
"\\bnever\\b", "\\bunknown\\b", "\\bObject\\b", "\\bArray\\b"
|
"\\bnever\\b", "\\bunknown\\b", "\\bObject\\b", "\\bArray\\b"
|
||||||
@ -390,30 +362,24 @@ static QVector<HighlightingRule> typescriptHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : typePatterns) {
|
for (const QString &pattern : typePatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = typeFormat;
|
rule.format = Type;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat stringFormat;
|
|
||||||
stringFormat.setForeground(stringColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"|'.*?'|`.*?`");
|
rule.pattern = QRegularExpression("\".*?\"|'.*?'|`.*?`");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("//[^\n]*");
|
rule.pattern = QRegularExpression("//[^\n]*");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat arrowFormat;
|
|
||||||
arrowFormat.setForeground(arrowColor);
|
|
||||||
rule.pattern = QRegularExpression("=>");
|
rule.pattern = QRegularExpression("=>");
|
||||||
rule.format = arrowFormat;
|
rule.format = Arrow;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -427,32 +393,22 @@ static QVector<HighlightingRule> javaHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionCallFormat;
|
|
||||||
functionCallFormat.setForeground(functionCallColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
||||||
rule.format = functionCallFormat;
|
rule.format = FunctionCall;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionFormat;
|
|
||||||
functionFormat.setForeground(functionColor);
|
|
||||||
rule.pattern = QRegularExpression("\\bvoid\\s+(\\w+)\\b");
|
rule.pattern = QRegularExpression("\\bvoid\\s+(\\w+)\\b");
|
||||||
rule.format = functionFormat;
|
rule.format = Function;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat numberFormat;
|
|
||||||
numberFormat.setForeground(numberColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
||||||
rule.format = numberFormat;
|
rule.format = Number;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat keywordFormat;
|
|
||||||
keywordFormat.setForeground(keywordColor);
|
|
||||||
QStringList keywordPatterns = {
|
QStringList keywordPatterns = {
|
||||||
"\\bpublic\\b", "\\bprivate\\b", "\\bprotected\\b", "\\bstatic\\b", "\\bfinal\\b",
|
"\\bpublic\\b", "\\bprivate\\b", "\\bprotected\\b", "\\bstatic\\b", "\\bfinal\\b",
|
||||||
"\\bclass\\b", "\\bif\\b", "\\belse\\b", "\\bwhile\\b", "\\bfor\\b",
|
"\\bclass\\b", "\\bif\\b", "\\belse\\b", "\\bwhile\\b", "\\bfor\\b",
|
||||||
@ -468,28 +424,24 @@ static QVector<HighlightingRule> javaHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : keywordPatterns) {
|
for (const QString &pattern : keywordPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = keywordFormat;
|
rule.format = Keyword;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat stringFormat;
|
|
||||||
stringFormat.setForeground(stringColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"");
|
rule.pattern = QRegularExpression("\".*?\"");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("\'.*?\'");
|
rule.pattern = QRegularExpression("\'.*?\'");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("//[^\n]*");
|
rule.pattern = QRegularExpression("//[^\n]*");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
return highlightingRules;
|
return highlightingRules;
|
||||||
@ -502,32 +454,22 @@ static QVector<HighlightingRule> goHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionCallFormat;
|
|
||||||
functionCallFormat.setForeground(functionCallColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
||||||
rule.format = functionCallFormat;
|
rule.format = FunctionCall;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionFormat;
|
|
||||||
functionFormat.setForeground(functionColor);
|
|
||||||
rule.pattern = QRegularExpression("\\bfunc\\s+(\\w+)\\b");
|
rule.pattern = QRegularExpression("\\bfunc\\s+(\\w+)\\b");
|
||||||
rule.format = functionFormat;
|
rule.format = Function;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat numberFormat;
|
|
||||||
numberFormat.setForeground(numberColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
||||||
rule.format = numberFormat;
|
rule.format = Number;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat keywordFormat;
|
|
||||||
keywordFormat.setForeground(keywordColor);
|
|
||||||
QStringList keywordPatterns = {
|
QStringList keywordPatterns = {
|
||||||
"\\bfunc\\b", "\\bpackage\\b", "\\bimport\\b", "\\bvar\\b", "\\bconst\\b",
|
"\\bfunc\\b", "\\bpackage\\b", "\\bimport\\b", "\\bvar\\b", "\\bconst\\b",
|
||||||
"\\btype\\b", "\\bstruct\\b", "\\binterface\\b", "\\bfor\\b", "\\bif\\b",
|
"\\btype\\b", "\\bstruct\\b", "\\binterface\\b", "\\bfor\\b", "\\bif\\b",
|
||||||
@ -538,28 +480,24 @@ static QVector<HighlightingRule> goHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : keywordPatterns) {
|
for (const QString &pattern : keywordPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = keywordFormat;
|
rule.format = Keyword;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat stringFormat;
|
|
||||||
stringFormat.setForeground(stringColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"");
|
rule.pattern = QRegularExpression("\".*?\"");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("`.*?`");
|
rule.pattern = QRegularExpression("`.*?`");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("//[^\n]*");
|
rule.pattern = QRegularExpression("//[^\n]*");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -573,32 +511,24 @@ static QVector<HighlightingRule> bashHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commandFormat;
|
|
||||||
commandFormat.setForeground(commandColor);
|
|
||||||
QStringList commandPatterns = {
|
QStringList commandPatterns = {
|
||||||
"\\b(grep|awk|sed|ls|cat|echo|rm|mkdir|cp|break|alias|eval|cd|exec|head|tail|strings|printf|touch|mv|chmod)\\b"
|
"\\b(grep|awk|sed|ls|cat|echo|rm|mkdir|cp|break|alias|eval|cd|exec|head|tail|strings|printf|touch|mv|chmod)\\b"
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const QString &pattern : commandPatterns) {
|
for (const QString &pattern : commandPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = commandFormat;
|
rule.format = Command;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat numberFormat;
|
|
||||||
numberFormat.setForeground(numberColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
||||||
rule.format = numberFormat;
|
rule.format = Number;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat keywordFormat;
|
|
||||||
keywordFormat.setForeground(keywordColor);
|
|
||||||
QStringList keywordPatterns = {
|
QStringList keywordPatterns = {
|
||||||
"\\bif\\b", "\\bthen\\b", "\\belse\\b", "\\bfi\\b", "\\bfor\\b",
|
"\\bif\\b", "\\bthen\\b", "\\belse\\b", "\\bfi\\b", "\\bfor\\b",
|
||||||
"\\bin\\b", "\\bdo\\b", "\\bdone\\b", "\\bwhile\\b", "\\buntil\\b",
|
"\\bin\\b", "\\bdo\\b", "\\bdone\\b", "\\bwhile\\b", "\\buntil\\b",
|
||||||
@ -609,30 +539,24 @@ static QVector<HighlightingRule> bashHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : keywordPatterns) {
|
for (const QString &pattern : keywordPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = keywordFormat;
|
rule.format = Keyword;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat stringFormat;
|
|
||||||
stringFormat.setForeground(stringColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"");
|
rule.pattern = QRegularExpression("\".*?\"");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("\'.*?\'");
|
rule.pattern = QRegularExpression("\'.*?\'");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat variableFormat;
|
|
||||||
variableFormat.setForeground(variableColor);
|
|
||||||
rule.pattern = QRegularExpression("\\$(\\w+|\\{[^}]+\\})");
|
rule.pattern = QRegularExpression("\\$(\\w+|\\{[^}]+\\})");
|
||||||
rule.format = variableFormat;
|
rule.format = Variable;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("#[^\n]*");
|
rule.pattern = QRegularExpression("#[^\n]*");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -646,22 +570,16 @@ static QVector<HighlightingRule> latexHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commandFormat;
|
|
||||||
commandFormat.setForeground(commandColor); // commandColor needs to be set to your liking
|
|
||||||
rule.pattern = QRegularExpression("\\\\[A-Za-z]+"); // Pattern for LaTeX commands
|
rule.pattern = QRegularExpression("\\\\[A-Za-z]+"); // Pattern for LaTeX commands
|
||||||
rule.format = commandFormat;
|
rule.format = Command;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor); // commentColor needs to be set to your liking
|
|
||||||
rule.pattern = QRegularExpression("%[^\n]*"); // Pattern for LaTeX comments
|
rule.pattern = QRegularExpression("%[^\n]*"); // Pattern for LaTeX comments
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
return highlightingRules;
|
return highlightingRules;
|
||||||
@ -674,40 +592,28 @@ static QVector<HighlightingRule> htmlHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat attributeNameFormat;
|
|
||||||
attributeNameFormat.setForeground(attributeNameColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b(\\w+)\\s*=");
|
rule.pattern = QRegularExpression("\\b(\\w+)\\s*=");
|
||||||
rule.format = attributeNameFormat;
|
rule.format = AttributeName;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat attributeValueFormat;
|
|
||||||
attributeValueFormat.setForeground(attributeValueColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"|'.*?'");
|
rule.pattern = QRegularExpression("\".*?\"|'.*?'");
|
||||||
rule.format = attributeValueFormat;
|
rule.format = AttributeValue;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("<!--.*?-->");
|
rule.pattern = QRegularExpression("<!--.*?-->");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat specialCharacterFormat;
|
|
||||||
specialCharacterFormat.setForeground(specialCharacterColor);
|
|
||||||
rule.pattern = QRegularExpression("&[a-zA-Z0-9#]*;");
|
rule.pattern = QRegularExpression("&[a-zA-Z0-9#]*;");
|
||||||
rule.format = specialCharacterFormat;
|
rule.format = SpecialCharacter;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat doctypeFormat;
|
|
||||||
doctypeFormat.setForeground(doctypeColor);
|
|
||||||
rule.pattern = QRegularExpression("<!DOCTYPE.*?>");
|
rule.pattern = QRegularExpression("<!DOCTYPE.*?>");
|
||||||
rule.format = doctypeFormat;
|
rule.format = DocType;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
return highlightingRules;
|
return highlightingRules;
|
||||||
@ -720,32 +626,22 @@ static QVector<HighlightingRule> phpHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionCallFormat;
|
|
||||||
functionCallFormat.setForeground(functionCallColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
rule.pattern = QRegularExpression("\\b(\\w+)\\s*(?=\\()");
|
||||||
rule.format = functionCallFormat;
|
rule.format = FunctionCall;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat functionFormat;
|
|
||||||
functionFormat.setForeground(functionColor);
|
|
||||||
rule.pattern = QRegularExpression("\\bfunction\\s+(\\w+)\\b");
|
rule.pattern = QRegularExpression("\\bfunction\\s+(\\w+)\\b");
|
||||||
rule.format = functionFormat;
|
rule.format = Function;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat numberFormat;
|
|
||||||
numberFormat.setForeground(numberColor);
|
|
||||||
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
rule.pattern = QRegularExpression("\\b[0-9]*\\.?[0-9]+\\b");
|
||||||
rule.format = numberFormat;
|
rule.format = Number;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat keywordFormat;
|
|
||||||
keywordFormat.setForeground(keywordColor);
|
|
||||||
QStringList keywordPatterns = {
|
QStringList keywordPatterns = {
|
||||||
"\\bif\\b", "\\belse\\b", "\\belseif\\b", "\\bwhile\\b", "\\bfor\\b",
|
"\\bif\\b", "\\belse\\b", "\\belseif\\b", "\\bwhile\\b", "\\bfor\\b",
|
||||||
"\\bforeach\\b", "\\breturn\\b", "\\bprint\\b", "\\binclude\\b", "\\brequire\\b",
|
"\\bforeach\\b", "\\breturn\\b", "\\bprint\\b", "\\binclude\\b", "\\brequire\\b",
|
||||||
@ -758,28 +654,24 @@ static QVector<HighlightingRule> phpHighlightingRules()
|
|||||||
|
|
||||||
for (const QString &pattern : keywordPatterns) {
|
for (const QString &pattern : keywordPatterns) {
|
||||||
rule.pattern = QRegularExpression(pattern);
|
rule.pattern = QRegularExpression(pattern);
|
||||||
rule.format = keywordFormat;
|
rule.format = Keyword;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCharFormat stringFormat;
|
|
||||||
stringFormat.setForeground(stringColor);
|
|
||||||
rule.pattern = QRegularExpression("\".*?\"");
|
rule.pattern = QRegularExpression("\".*?\"");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("\'.*?\'");
|
rule.pattern = QRegularExpression("\'.*?\'");
|
||||||
rule.format = stringFormat;
|
rule.format = String;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
QTextCharFormat commentFormat;
|
|
||||||
commentFormat.setForeground(commentColor);
|
|
||||||
rule.pattern = QRegularExpression("//[^\n]*");
|
rule.pattern = QRegularExpression("//[^\n]*");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
rule.pattern = QRegularExpression("/\\*.*?\\*/");
|
||||||
rule.format = commentFormat;
|
rule.format = Comment;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
return highlightingRules;
|
return highlightingRules;
|
||||||
@ -793,30 +685,23 @@ static QVector<HighlightingRule> jsonHighlightingRules()
|
|||||||
|
|
||||||
HighlightingRule rule;
|
HighlightingRule rule;
|
||||||
|
|
||||||
QTextCharFormat defaultFormat;
|
|
||||||
defaultFormat.setForeground(defaultColor);
|
|
||||||
rule.pattern = QRegularExpression(".*");
|
rule.pattern = QRegularExpression(".*");
|
||||||
rule.format = defaultFormat;
|
rule.format = Default;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
// Key string rule
|
// Key string rule
|
||||||
QTextCharFormat keyFormat;
|
|
||||||
keyFormat.setForeground(keyColor); // Assuming keyColor is defined
|
|
||||||
rule.pattern = QRegularExpression("\".*?\":"); // keys are typically in the "key": format
|
rule.pattern = QRegularExpression("\".*?\":"); // keys are typically in the "key": format
|
||||||
rule.format = keyFormat;
|
rule.format = Key;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
// Value string rule
|
// Value string rule
|
||||||
QTextCharFormat valueFormat;
|
|
||||||
valueFormat.setForeground(valueColor); // Assuming valueColor is defined
|
|
||||||
rule.pattern = QRegularExpression(":\\s*(\".*?\")"); // values are typically in the : "value" format
|
rule.pattern = QRegularExpression(":\\s*(\".*?\")"); // values are typically in the : "value" format
|
||||||
rule.format = valueFormat;
|
rule.format = Value;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
}
|
}
|
||||||
return highlightingRules;
|
return highlightingRules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SyntaxHighlighter::SyntaxHighlighter(QObject *parent)
|
SyntaxHighlighter::SyntaxHighlighter(QObject *parent)
|
||||||
: QSyntaxHighlighter(parent)
|
: QSyntaxHighlighter(parent)
|
||||||
{
|
{
|
||||||
@ -871,7 +756,9 @@ void SyntaxHighlighter::highlightBlock(const QString &text)
|
|||||||
QRegularExpressionMatch match = matchIterator.next();
|
QRegularExpressionMatch match = matchIterator.next();
|
||||||
int startIndex = match.capturedStart();
|
int startIndex = match.capturedStart();
|
||||||
int length = match.capturedLength();
|
int length = match.capturedLength();
|
||||||
setFormat(startIndex, length, rule.format);
|
QTextCharFormat format;
|
||||||
|
format.setForeground(formatToColor(rule.format, m_codeColors));
|
||||||
|
setFormat(startIndex, length, format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -948,6 +835,17 @@ void ChatViewTextProcessor::setFontPixelSize(qreal sz)
|
|||||||
handleTextChanged();
|
handleTextChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CodeColors ChatViewTextProcessor::codeColors() const
|
||||||
|
{
|
||||||
|
return m_syntaxHighlighter->codeColors();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChatViewTextProcessor::setCodeColors(const CodeColors &colors)
|
||||||
|
{
|
||||||
|
m_syntaxHighlighter->setCodeColors(colors);
|
||||||
|
emit codeColorsChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void traverseDocument(QTextDocument *doc, QTextFrame *frame)
|
void traverseDocument(QTextDocument *doc, QTextFrame *frame)
|
||||||
{
|
{
|
||||||
QTextFrame *rootFrame = frame ? frame : doc->rootFrame();
|
QTextFrame *rootFrame = frame ? frame : doc->rootFrame();
|
||||||
@ -1001,6 +899,8 @@ void ChatViewTextProcessor::handleTextChanged()
|
|||||||
QTextCursor cursor(doc);
|
QTextCursor cursor(doc);
|
||||||
QString invisibleCharacter = QString(QChar(0xFEFF));
|
QString invisibleCharacter = QString(QChar(0xFEFF));
|
||||||
cursor.insertText(invisibleCharacter, QTextCharFormat());
|
cursor.insertText(invisibleCharacter, QTextCharFormat());
|
||||||
|
|
||||||
|
m_syntaxHighlighter->rehighlight();
|
||||||
m_isProcessingText = false;
|
m_isProcessingText = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1014,7 +914,7 @@ void ChatViewTextProcessor::handleCodeBlocks()
|
|||||||
textFormat.setForeground(QColor("white"));
|
textFormat.setForeground(QColor("white"));
|
||||||
|
|
||||||
QTextFrameFormat frameFormatBase;
|
QTextFrameFormat frameFormatBase;
|
||||||
frameFormatBase.setBackground(QColor("black"));
|
frameFormatBase.setBackground(codeColors().backgroundColor);
|
||||||
|
|
||||||
QTextTableFormat tableFormat;
|
QTextTableFormat tableFormat;
|
||||||
tableFormat.setMargin(0);
|
tableFormat.setMargin(0);
|
||||||
@ -1026,33 +926,33 @@ void ChatViewTextProcessor::handleCodeBlocks()
|
|||||||
tableFormat.setColumnWidthConstraints(constraints);
|
tableFormat.setColumnWidthConstraints(constraints);
|
||||||
|
|
||||||
QTextTableFormat headerTableFormat;
|
QTextTableFormat headerTableFormat;
|
||||||
headerTableFormat.setBackground(m_headerColor);
|
headerTableFormat.setBackground(codeColors().headerColor);
|
||||||
headerTableFormat.setPadding(0);
|
headerTableFormat.setPadding(0);
|
||||||
headerTableFormat.setBorder(0);
|
headerTableFormat.setBorder(0);
|
||||||
headerTableFormat.setBorderCollapse(true);
|
headerTableFormat.setBorderCollapse(true);
|
||||||
headerTableFormat.setTopMargin(15);
|
headerTableFormat.setTopMargin(10);
|
||||||
headerTableFormat.setBottomMargin(15);
|
headerTableFormat.setBottomMargin(10);
|
||||||
headerTableFormat.setLeftMargin(30);
|
headerTableFormat.setLeftMargin(15);
|
||||||
headerTableFormat.setRightMargin(30);
|
headerTableFormat.setRightMargin(15);
|
||||||
QList<QTextLength> headerConstraints;
|
QList<QTextLength> headerConstraints;
|
||||||
headerConstraints << QTextLength(QTextLength::PercentageLength, 80);
|
headerConstraints << QTextLength(QTextLength::PercentageLength, 80);
|
||||||
headerConstraints << QTextLength(QTextLength::PercentageLength, 20);
|
headerConstraints << QTextLength(QTextLength::PercentageLength, 20);
|
||||||
headerTableFormat.setColumnWidthConstraints(headerConstraints);
|
headerTableFormat.setColumnWidthConstraints(headerConstraints);
|
||||||
|
|
||||||
QTextTableFormat codeBlockTableFormat;
|
QTextTableFormat codeBlockTableFormat;
|
||||||
codeBlockTableFormat.setBackground(QColor("black"));
|
codeBlockTableFormat.setBackground(codeColors().backgroundColor);
|
||||||
codeBlockTableFormat.setPadding(0);
|
codeBlockTableFormat.setPadding(0);
|
||||||
codeBlockTableFormat.setBorder(0);
|
codeBlockTableFormat.setBorder(0);
|
||||||
codeBlockTableFormat.setBorderCollapse(true);
|
codeBlockTableFormat.setBorderCollapse(true);
|
||||||
codeBlockTableFormat.setTopMargin(30);
|
codeBlockTableFormat.setTopMargin(15);
|
||||||
codeBlockTableFormat.setBottomMargin(30);
|
codeBlockTableFormat.setBottomMargin(15);
|
||||||
codeBlockTableFormat.setLeftMargin(30);
|
codeBlockTableFormat.setLeftMargin(15);
|
||||||
codeBlockTableFormat.setRightMargin(30);
|
codeBlockTableFormat.setRightMargin(15);
|
||||||
codeBlockTableFormat.setColumnWidthConstraints(constraints);
|
codeBlockTableFormat.setColumnWidthConstraints(constraints);
|
||||||
|
|
||||||
QTextImageFormat copyImageFormat;
|
QTextImageFormat copyImageFormat;
|
||||||
copyImageFormat.setWidth(30);
|
copyImageFormat.setWidth(24);
|
||||||
copyImageFormat.setHeight(30);
|
copyImageFormat.setHeight(24);
|
||||||
copyImageFormat.setName("qrc:/gpt4all/icons/copy.svg");
|
copyImageFormat.setName("qrc:/gpt4all/icons/copy.svg");
|
||||||
|
|
||||||
// Regex for code blocks
|
// Regex for code blocks
|
||||||
@ -1126,10 +1026,17 @@ void ChatViewTextProcessor::handleCodeBlocks()
|
|||||||
newCopy.startPos = copyCursor.position();
|
newCopy.startPos = copyCursor.position();
|
||||||
newCopy.endPos = newCopy.startPos + 1;
|
newCopy.endPos = newCopy.startPos + 1;
|
||||||
newCopies.append(newCopy);
|
newCopies.append(newCopy);
|
||||||
QTextBlockFormat blockFormat;
|
// FIXME: There are two reasons this is commented out. Odd drawing behavior is seen when this is added
|
||||||
blockFormat.setAlignment(Qt::AlignRight);
|
// and one selects with the mouse the code language in a code block. The other reason is the code that
|
||||||
copyCursor.setBlockFormat(blockFormat);
|
// tries to do a hit test for the image is just very broken and buggy and does not always work. So I'm
|
||||||
copyCursor.insertImage(copyImageFormat, QTextFrameFormat::FloatRight);
|
// disabling this code and included functionality for v3.0.0 until I can figure out how to make this much
|
||||||
|
// less buggy
|
||||||
|
#if 0
|
||||||
|
// QTextBlockFormat blockFormat;
|
||||||
|
// blockFormat.setAlignment(Qt::AlignRight);
|
||||||
|
// copyCursor.setBlockFormat(blockFormat);
|
||||||
|
// copyCursor.insertImage(copyImageFormat, QTextFrameFormat::FloatRight);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextTableCell codeCell = table->cellAt(codeLanguage.isEmpty() ? 0 : 1, 0);
|
QTextTableCell codeCell = table->cellAt(codeLanguage.isEmpty() ? 0 : 1, 0);
|
||||||
@ -1138,7 +1045,7 @@ void ChatViewTextProcessor::handleCodeBlocks()
|
|||||||
QTextTableCell code = codeTable->cellAt(0, 0);
|
QTextTableCell code = codeTable->cellAt(0, 0);
|
||||||
|
|
||||||
QTextCharFormat codeBlockCharFormat;
|
QTextCharFormat codeBlockCharFormat;
|
||||||
codeBlockCharFormat.setForeground(defaultColor);
|
codeBlockCharFormat.setForeground(codeColors().defaultColor);
|
||||||
|
|
||||||
QFont monospaceFont("Courier");
|
QFont monospaceFont("Courier");
|
||||||
monospaceFont.setPointSize(m_fontPixelSize);
|
monospaceFont.setPointSize(m_fontPixelSize);
|
||||||
|
@ -16,12 +16,57 @@ class QPainter;
|
|||||||
class QTextDocument;
|
class QTextDocument;
|
||||||
class QTextFormat;
|
class QTextFormat;
|
||||||
|
|
||||||
|
struct CodeColors {
|
||||||
|
Q_GADGET
|
||||||
|
Q_PROPERTY(QColor defaultColor MEMBER defaultColor)
|
||||||
|
Q_PROPERTY(QColor keywordColor MEMBER keywordColor)
|
||||||
|
Q_PROPERTY(QColor functionColor MEMBER functionColor)
|
||||||
|
Q_PROPERTY(QColor functionCallColor MEMBER functionCallColor)
|
||||||
|
Q_PROPERTY(QColor commentColor MEMBER commentColor)
|
||||||
|
Q_PROPERTY(QColor stringColor MEMBER stringColor)
|
||||||
|
Q_PROPERTY(QColor numberColor MEMBER numberColor)
|
||||||
|
Q_PROPERTY(QColor headerColor MEMBER headerColor)
|
||||||
|
Q_PROPERTY(QColor backgroundColor MEMBER backgroundColor)
|
||||||
|
|
||||||
|
public:
|
||||||
|
QColor defaultColor;
|
||||||
|
QColor keywordColor;
|
||||||
|
QColor functionColor;
|
||||||
|
QColor functionCallColor;
|
||||||
|
QColor commentColor;
|
||||||
|
QColor stringColor;
|
||||||
|
QColor numberColor;
|
||||||
|
QColor headerColor;
|
||||||
|
QColor backgroundColor;
|
||||||
|
|
||||||
|
QColor preprocessorColor = keywordColor;
|
||||||
|
QColor typeColor = numberColor;
|
||||||
|
QColor arrowColor = functionColor;
|
||||||
|
QColor commandColor = functionCallColor;
|
||||||
|
QColor variableColor = numberColor;
|
||||||
|
QColor keyColor = functionColor;
|
||||||
|
QColor valueColor = stringColor;
|
||||||
|
QColor parameterColor = stringColor;
|
||||||
|
QColor attributeNameColor = numberColor;
|
||||||
|
QColor attributeValueColor = stringColor;
|
||||||
|
QColor specialCharacterColor = functionColor;
|
||||||
|
QColor doctypeColor = commentColor;
|
||||||
|
};
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(CodeColors)
|
||||||
|
|
||||||
class SyntaxHighlighter : public QSyntaxHighlighter {
|
class SyntaxHighlighter : public QSyntaxHighlighter {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
SyntaxHighlighter(QObject *parent);
|
SyntaxHighlighter(QObject *parent);
|
||||||
~SyntaxHighlighter();
|
~SyntaxHighlighter();
|
||||||
void highlightBlock(const QString &text) override;
|
void highlightBlock(const QString &text) override;
|
||||||
|
|
||||||
|
CodeColors codeColors() const { return m_codeColors; }
|
||||||
|
void setCodeColors(const CodeColors &colors) { m_codeColors = colors; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
CodeColors m_codeColors;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ContextLink {
|
struct ContextLink {
|
||||||
@ -43,6 +88,7 @@ class ChatViewTextProcessor : public QObject
|
|||||||
Q_PROPERTY(QQuickTextDocument* textDocument READ textDocument WRITE setTextDocument NOTIFY textDocumentChanged())
|
Q_PROPERTY(QQuickTextDocument* textDocument READ textDocument WRITE setTextDocument NOTIFY textDocumentChanged())
|
||||||
Q_PROPERTY(bool shouldProcessText READ shouldProcessText WRITE setShouldProcessText NOTIFY shouldProcessTextChanged())
|
Q_PROPERTY(bool shouldProcessText READ shouldProcessText WRITE setShouldProcessText NOTIFY shouldProcessTextChanged())
|
||||||
Q_PROPERTY(qreal fontPixelSize READ fontPixelSize WRITE setFontPixelSize NOTIFY fontPixelSizeChanged())
|
Q_PROPERTY(qreal fontPixelSize READ fontPixelSize WRITE setFontPixelSize NOTIFY fontPixelSizeChanged())
|
||||||
|
Q_PROPERTY(CodeColors codeColors READ codeColors WRITE setCodeColors NOTIFY codeColorsChanged())
|
||||||
QML_ELEMENT
|
QML_ELEMENT
|
||||||
public:
|
public:
|
||||||
explicit ChatViewTextProcessor(QObject *parent = nullptr);
|
explicit ChatViewTextProcessor(QObject *parent = nullptr);
|
||||||
@ -50,9 +96,6 @@ public:
|
|||||||
QQuickTextDocument* textDocument() const;
|
QQuickTextDocument* textDocument() const;
|
||||||
void setTextDocument(QQuickTextDocument* textDocument);
|
void setTextDocument(QQuickTextDocument* textDocument);
|
||||||
|
|
||||||
Q_INVOKABLE void setLinkColor(const QColor &c) { m_linkColor = c; }
|
|
||||||
Q_INVOKABLE void setHeaderColor(const QColor &c) { m_headerColor = c; }
|
|
||||||
|
|
||||||
Q_INVOKABLE bool tryCopyAtPosition(int position) const;
|
Q_INVOKABLE bool tryCopyAtPosition(int position) const;
|
||||||
|
|
||||||
bool shouldProcessText() const;
|
bool shouldProcessText() const;
|
||||||
@ -61,10 +104,14 @@ public:
|
|||||||
qreal fontPixelSize() const;
|
qreal fontPixelSize() const;
|
||||||
void setFontPixelSize(qreal b);
|
void setFontPixelSize(qreal b);
|
||||||
|
|
||||||
|
CodeColors codeColors() const;
|
||||||
|
void setCodeColors(const CodeColors &colors);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void textDocumentChanged();
|
void textDocumentChanged();
|
||||||
void shouldProcessTextChanged();
|
void shouldProcessTextChanged();
|
||||||
void fontPixelSizeChanged();
|
void fontPixelSizeChanged();
|
||||||
|
void codeColorsChanged();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void handleTextChanged();
|
void handleTextChanged();
|
||||||
@ -76,8 +123,6 @@ private:
|
|||||||
SyntaxHighlighter *m_syntaxHighlighter;
|
SyntaxHighlighter *m_syntaxHighlighter;
|
||||||
QVector<ContextLink> m_links;
|
QVector<ContextLink> m_links;
|
||||||
QVector<CodeCopy> m_copies;
|
QVector<CodeCopy> m_copies;
|
||||||
QColor m_linkColor;
|
|
||||||
QColor m_headerColor;
|
|
||||||
bool m_shouldProcessText = false;
|
bool m_shouldProcessText = false;
|
||||||
bool m_isProcessingText = false;
|
bool m_isProcessingText = false;
|
||||||
qreal m_fontPixelSize;
|
qreal m_fontPixelSize;
|
||||||
|
@ -41,7 +41,7 @@ static const QVariantMap basicDefaults {
|
|||||||
{ "saveChatsContext", false },
|
{ "saveChatsContext", false },
|
||||||
{ "serverChat", false },
|
{ "serverChat", false },
|
||||||
{ "userDefaultModel", "Application default" },
|
{ "userDefaultModel", "Application default" },
|
||||||
{ "localdocs/chunkSize", 256 },
|
{ "localdocs/chunkSize", 512 },
|
||||||
{ "localdocs/retrievalSize", 3 },
|
{ "localdocs/retrievalSize", 3 },
|
||||||
{ "localdocs/showReferences", true },
|
{ "localdocs/showReferences", true },
|
||||||
{ "localdocs/fileExtensions", QStringList { "txt", "pdf", "md", "rst" } },
|
{ "localdocs/fileExtensions", QStringList { "txt", "pdf", "md", "rst" } },
|
||||||
|
@ -949,13 +949,35 @@ Rectangle {
|
|||||||
|
|
||||||
ChatViewTextProcessor {
|
ChatViewTextProcessor {
|
||||||
id: textProcessor
|
id: textProcessor
|
||||||
fontPixelSize: myTextArea.font.pixelSize
|
}
|
||||||
|
|
||||||
|
function resetChatViewTextProcessor() {
|
||||||
|
textProcessor.fontPixelSize = myTextArea.font.pixelSize
|
||||||
|
textProcessor.codeColors.defaultColor = theme.codeDefaultColor
|
||||||
|
textProcessor.codeColors.keywordColor = theme.codeKeywordColor
|
||||||
|
textProcessor.codeColors.functionColor = theme.codeFunctionColor
|
||||||
|
textProcessor.codeColors.functionCallColor = theme.codeFunctionCallColor
|
||||||
|
textProcessor.codeColors.commentColor = theme.codeCommentColor
|
||||||
|
textProcessor.codeColors.stringColor = theme.codeStringColor
|
||||||
|
textProcessor.codeColors.numberColor = theme.codeNumberColor
|
||||||
|
textProcessor.codeColors.headerColor = theme.codeHeaderColor
|
||||||
|
textProcessor.codeColors.backgroundColor = theme.codeBackgroundColor
|
||||||
|
textProcessor.textDocument = textDocument
|
||||||
|
myTextArea.text = value
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
textProcessor.setLinkColor(theme.linkColor);
|
resetChatViewTextProcessor();
|
||||||
textProcessor.setHeaderColor(name === qsTr("Response: ") ? theme.darkContrast : theme.lightContrast);
|
}
|
||||||
textProcessor.textDocument = textDocument
|
|
||||||
|
Connections {
|
||||||
|
target: MySettings
|
||||||
|
function onFontSizeChanged() {
|
||||||
|
myTextArea.resetChatViewTextProcessor();
|
||||||
|
}
|
||||||
|
function onChatThemeChanged() {
|
||||||
|
myTextArea.resetChatViewTextProcessor();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Accessible.role: Accessible.Paragraph
|
Accessible.role: Accessible.Paragraph
|
||||||
@ -1463,7 +1485,7 @@ Rectangle {
|
|||||||
id: conversationTrayButton
|
id: conversationTrayButton
|
||||||
anchors.bottom: textInputView.top
|
anchors.bottom: textInputView.top
|
||||||
anchors.horizontalCenter: textInputView.horizontalCenter
|
anchors.horizontalCenter: textInputView.horizontalCenter
|
||||||
width: 30
|
width: 40
|
||||||
height: 30
|
height: 30
|
||||||
visible: chatModel.count && !currentChat.isServer && currentChat.isModelLoaded
|
visible: chatModel.count && !currentChat.isServer && currentChat.isModelLoaded
|
||||||
property bool isHovered: conversationTrayMouseAreaButton.containsMouse
|
property bool isHovered: conversationTrayMouseAreaButton.containsMouse
|
||||||
@ -1474,13 +1496,14 @@ Rectangle {
|
|||||||
}
|
}
|
||||||
Text {
|
Text {
|
||||||
id: conversationTrayTextButton
|
id: conversationTrayTextButton
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.centerIn: parent
|
||||||
horizontalAlignment: Qt.AlignHCenter
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
leftPadding: 5
|
leftPadding: 5
|
||||||
rightPadding: 5
|
rightPadding: 5
|
||||||
text: "\u00B7\u00B7\u00B7"
|
text: "\u00B7\u00B7\u00B7"
|
||||||
color: theme.textColor
|
color: theme.textColor
|
||||||
font.pixelSize: 20 // fixed size
|
font.pixelSize: 30 // fixed size
|
||||||
|
font.bold: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1670,8 +1693,8 @@ Rectangle {
|
|||||||
anchors.right: textInputView.right
|
anchors.right: textInputView.right
|
||||||
anchors.verticalCenter: textInputView.verticalCenter
|
anchors.verticalCenter: textInputView.verticalCenter
|
||||||
anchors.rightMargin: 15
|
anchors.rightMargin: 15
|
||||||
imageWidth: theme.fontSizeLarger
|
imageWidth: theme.fontSizeLargest
|
||||||
imageHeight: theme.fontSizeLarger
|
imageHeight: theme.fontSizeLargest
|
||||||
visible: !currentChat.isServer && ModelList.selectableModels.count !== 0
|
visible: !currentChat.isServer && ModelList.selectableModels.count !== 0
|
||||||
enabled: !currentChat.responseInProgress
|
enabled: !currentChat.responseInProgress
|
||||||
source: "qrc:/gpt4all/icons/send_message.svg"
|
source: "qrc:/gpt4all/icons/send_message.svg"
|
||||||
|
@ -824,8 +824,6 @@ QtObject {
|
|||||||
// lighter contrast
|
// lighter contrast
|
||||||
property color mutedLighterTextColor: {
|
property color mutedLighterTextColor: {
|
||||||
switch (MySettings.chatTheme) {
|
switch (MySettings.chatTheme) {
|
||||||
// case "LegacyDark":
|
|
||||||
// case "Dark":
|
|
||||||
default:
|
default:
|
||||||
return gray300;
|
return gray300;
|
||||||
}
|
}
|
||||||
@ -834,8 +832,6 @@ QtObject {
|
|||||||
// light contrast
|
// light contrast
|
||||||
property color mutedLightTextColor: {
|
property color mutedLightTextColor: {
|
||||||
switch (MySettings.chatTheme) {
|
switch (MySettings.chatTheme) {
|
||||||
// case "LegacyDark":
|
|
||||||
// case "Dark":
|
|
||||||
default:
|
default:
|
||||||
return gray400;
|
return gray400;
|
||||||
}
|
}
|
||||||
@ -1069,6 +1065,95 @@ QtObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
property color codeDefaultColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
default:
|
||||||
|
return textColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property color codeKeywordColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
return "#2e95d3"; // blue
|
||||||
|
default:
|
||||||
|
return "#195273"; // dark blue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property color codeFunctionColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
return"#f22c3d"; // red
|
||||||
|
default:
|
||||||
|
return"#7d1721"; // dark red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property color codeFunctionCallColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
return "#e9950c"; // orange
|
||||||
|
default:
|
||||||
|
return "#815207"; // dark orange
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property color codeCommentColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
return "#808080"; // gray
|
||||||
|
default:
|
||||||
|
return "#474747"; // dark gray
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property color codeStringColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
return "#00a37d"; // green
|
||||||
|
default:
|
||||||
|
return "#004a39"; // dark green
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property color codeNumberColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
return "#df3079"; // fuchsia
|
||||||
|
default:
|
||||||
|
return "#761942"; // dark fuchsia
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property color codeHeaderColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
return containerBackground;
|
||||||
|
default:
|
||||||
|
return green50;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property color codeBackgroundColor: {
|
||||||
|
switch (MySettings.chatTheme) {
|
||||||
|
case "LegacyDark":
|
||||||
|
case "Dark":
|
||||||
|
return controlBackground;
|
||||||
|
default:
|
||||||
|
return gray100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
property real fontScale: MySettings.fontSize === "Small" ? 1 :
|
property real fontScale: MySettings.fontSize === "Small" ? 1 :
|
||||||
MySettings.fontSize === "Medium" ? 1.3 :
|
MySettings.fontSize === "Medium" ? 1.3 :
|
||||||
/* "Large" */ 1.8
|
/* "Large" */ 1.8
|
||||||
|
Loading…
Reference in New Issue
Block a user