diff --git a/RedPandaIDE/editor.cpp b/RedPandaIDE/editor.cpp
index ff29a0f7..f11f68ce 100644
--- a/RedPandaIDE/editor.cpp
+++ b/RedPandaIDE/editor.cpp
@@ -5285,14 +5285,24 @@ void Editor::applySettings()
codeFolding().indentGuidesColor = pSettings->editor().indentLineColor();
codeFolding().fillIndents = pSettings->editor().fillIndents();
- QFont f=QFont(pSettings->editor().fontName());
+ QStringList fontFamilies{
+ pSettings->editor().fontName(),
+ pSettings->editor().fallbackFontName()
+ };
+ QFont f=QFont();
+ f.setFamilies(fontFamilies);
f.setPixelSize(pointToPixel(pSettings->editor().fontSize()));
f.setStyleStrategy(QFont::PreferAntialias);
setFont(f);
- QFont f2=QFont(pSettings->editor().nonAsciiFontName());
- f2.setPixelSize(pointToPixel(pSettings->editor().fontSize()));
- f2.setStyleStrategy(QFont::PreferAntialias);
- setFontForNonAscii(f2);
+
+ // QFont f=QFont(pSettings->editor().fontName());
+ // f.setPixelSize(pointToPixel(pSettings->editor().fontSize()));
+ // f.setStyleStrategy(QFont::PreferAntialias);
+ // setFont(f);
+ // QFont f2=QFont(pSettings->editor().nonAsciiFontName());
+ // f2.setPixelSize(pointToPixel(pSettings->editor().fontSize()));
+ // f2.setStyleStrategy(QFont::PreferAntialias);
+ // setFontForNonAscii(f2);
setLineSpacingFactor(pSettings->editor().lineSpacing());
// Set gutter properties
diff --git a/RedPandaIDE/mainwindow.cpp b/RedPandaIDE/mainwindow.cpp
index 3a40dc56..9f66b99d 100644
--- a/RedPandaIDE/mainwindow.cpp
+++ b/RedPandaIDE/mainwindow.cpp
@@ -1436,16 +1436,18 @@ void MainWindow::updateStatusbarForLineCol(const Editor* e, bool clear)
if (!clear && e!=nullptr) {
QString msg;
if (e->selAvail()) {
- msg = tr("Line: %1 Char: %2 Sel:%3 Lines: %4")
- .arg(e->caretY())
- .arg(e->caretX())
- .arg(e->selText().length())
- .arg(e->document()->count());
+ msg = tr("Line: %1/%2 Char: %3/%4 Sel:%5")
+ .arg(e->caretY())
+ .arg(e->document()->count())
+ .arg(e->caretX())
+ .arg(e->lineText().length())
+ .arg(e->selText().length());
} else {
- msg = tr("Line: %1 Char: %2 Lines: %3")
- .arg(e->caretY())
- .arg(e->caretX())
- .arg(e->document()->count());
+ msg = tr("Line: %1/%2 Char: %3/%4")
+ .arg(e->caretY())
+ .arg(e->document()->count())
+ .arg(e->caretX())
+ .arg(e->lineText().length());
}
mFileInfoStatus->setText(msg);
} else {
diff --git a/RedPandaIDE/settings.cpp b/RedPandaIDE/settings.cpp
index 4c129f7e..ba4d232c 100644
--- a/RedPandaIDE/settings.cpp
+++ b/RedPandaIDE/settings.cpp
@@ -667,14 +667,14 @@ void Settings::Editor::setEnableLigaturesSupport(bool newEnableLigaturesSupport)
mEnableLigaturesSupport = newEnableLigaturesSupport;
}
-const QString &Settings::Editor::nonAsciiFontName() const
+const QString &Settings::Editor::fallbackFontName() const
{
- return mNonAsciiFontName;
+ return mFallbackFontName;
}
-void Settings::Editor::setNonAsciiFontName(const QString &newNonAsciiFontName)
+void Settings::Editor::setFallbackFontName(const QString &newFontName)
{
- mNonAsciiFontName = newNonAsciiFontName;
+ mFallbackFontName = newFontName;
}
int Settings::Editor::mouseSelectionScrollSpeed() const
@@ -1348,7 +1348,7 @@ void Settings::Editor::doSave()
//Font
//font
saveValue("font_name", mFontName);
- saveValue("non_ascii_font_name", mNonAsciiFontName);
+ saveValue("fallback_font_name", mFallbackFontName);
saveValue("font_size", mFontSize);
saveValue("font_only_monospaced", mFontOnlyMonospaced);
saveValue("line_spacing",mLineSpacing);
@@ -1491,7 +1491,7 @@ void Settings::Editor::doLoad()
defaultCjkFontName = CJK_MONO_FONT_K;
else if (defaultLocaleName == "zh_CN")
defaultCjkFontName = CJK_MONO_FONT_SC;
- mNonAsciiFontName = stringValue("non_ascii_font_name",defaultCjkFontName);
+ mFallbackFontName = stringValue("fallback_font_name",defaultCjkFontName);
mFontSize = intValue("font_size",12);
mFontOnlyMonospaced = boolValue("font_only_monospaced",true);
mLineSpacing = doubleValue("line_spacing",1.1);
diff --git a/RedPandaIDE/settings.h b/RedPandaIDE/settings.h
index ddb91f83..5ce9c481 100644
--- a/RedPandaIDE/settings.h
+++ b/RedPandaIDE/settings.h
@@ -355,8 +355,8 @@ public:
bool enableLigaturesSupport() const;
void setEnableLigaturesSupport(bool newEnableLigaturesSupport);
- const QString &nonAsciiFontName() const;
- void setNonAsciiFontName(const QString &newNonAsciiFontName);
+ const QString &fallbackFontName() const;
+ void setFallbackFontName(const QString &newNonAsciiFontName);
int mouseSelectionScrollSpeed() const;
void setMouseSelectionScrollSpeed(int newMouseSelectionScrollSpeed);
diff --git a/RedPandaIDE/settingsdialog/editorfontwidget.cpp b/RedPandaIDE/settingsdialog/editorfontwidget.cpp
index 5ee51d98..49437b8f 100644
--- a/RedPandaIDE/settingsdialog/editorfontwidget.cpp
+++ b/RedPandaIDE/settingsdialog/editorfontwidget.cpp
@@ -56,7 +56,7 @@ void EditorFontWidget::doLoad()
//font
ui->chkOnlyMonospacedFonts->setChecked(pSettings->editor().fontOnlyMonospaced());
ui->cbFont->setCurrentFont(QFont(pSettings->editor().fontName()));
- ui->cbNonAsciiFont->setCurrentFont(QFont(pSettings->editor().nonAsciiFontName()));
+ ui->cbFallbackFont->setCurrentFont(QFont(pSettings->editor().fallbackFontName()));
ui->spinFontSize->setValue(pSettings->editor().fontSize());
ui->spinLineSpacing->setValue(pSettings->editor().lineSpacing());
ui->chkLigature->setChecked(pSettings->editor().enableLigaturesSupport());
@@ -84,7 +84,7 @@ void EditorFontWidget::doSave()
//font
pSettings->editor().setFontOnlyMonospaced(ui->chkOnlyMonospacedFonts->isChecked());
pSettings->editor().setFontName(ui->cbFont->currentFont().family());
- pSettings->editor().setNonAsciiFontName(ui->cbNonAsciiFont->currentFont().family());
+ pSettings->editor().setFallbackFontName(ui->cbFallbackFont->currentFont().family());
pSettings->editor().setFontSize(ui->spinFontSize->value());
pSettings->editor().setLineSpacing(ui->spinLineSpacing->value());
diff --git a/RedPandaIDE/settingsdialog/editorfontwidget.ui b/RedPandaIDE/settingsdialog/editorfontwidget.ui
index 469ed77d..e1a61717 100644
--- a/RedPandaIDE/settingsdialog/editorfontwidget.ui
+++ b/RedPandaIDE/settingsdialog/editorfontwidget.ui
@@ -39,7 +39,7 @@
0
-
-
+
false
@@ -224,7 +224,7 @@
-
- Font for non-ascii Text:
+ Fallback Font:
diff --git a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
index d33fb003..8f1832ce 100644
--- a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
@@ -1483,7 +1483,7 @@
- Fonte para texto não ASCII:
+ Fonte para texto não ASCII:
@@ -1553,6 +1553,10 @@
+
+
+
+
EditorGeneralWidget
@@ -5416,11 +5420,11 @@
-
+
-
+
diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
index 40673f19..01bcabd1 100644
--- a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
@@ -1607,24 +1607,24 @@ p, li { white-space: pre-wrap; }
要剪切的内容超过了字符数限制!
-
+
16进制: %1
-
+
十进制: %1
-
+
打印文档
-
-
-
+
+
+
Ctrl+单击以获取更多信息
@@ -1633,27 +1633,27 @@ p, li { white-space: pre-wrap; }
未找到符号'%1'!
-
+
找不到astyle程序
-
+
找不到astyle程序"%1".
-
+
断点条件
-
+
输入当前断点的生效条件:
-
+
只读
@@ -2068,7 +2068,7 @@ p, li { white-space: pre-wrap; }
- 英文字体:
+ 字体:
@@ -2081,9 +2081,8 @@ p, li { white-space: pre-wrap; }
启用合字显示支持(需要Fira Code等字体)
-
- 非英文字体:
+ 非英文字体:
@@ -2099,6 +2098,11 @@ p, li { white-space: pre-wrap; }
行高:
+
+
+
+ 备选字体:
+
@@ -4479,11 +4483,11 @@ p, li { white-space: pre-wrap; }
-
-
-
-
-
+
+
+
+
+
编译器
@@ -4557,7 +4561,7 @@ p, li { white-space: pre-wrap; }
-
+
调试主控台
@@ -4766,9 +4770,9 @@ p, li { white-space: pre-wrap; }
-
-
-
+
+
+
复制
@@ -4779,7 +4783,7 @@ p, li { white-space: pre-wrap; }
-
+
粘贴
@@ -4790,8 +4794,8 @@ p, li { white-space: pre-wrap; }
-
-
+
+
选择全部
@@ -4915,38 +4919,38 @@ p, li { white-space: pre-wrap; }
-
-
+
+
新建试题集
-
+
添加试题
-
+
删除试题
-
-
+
+
保存试题集
-
-
+
+
载入试题集
@@ -4994,7 +4998,7 @@ p, li { white-space: pre-wrap; }
-
+
Remove Problem Set
删除试题案例
@@ -5002,21 +5006,21 @@ p, li { white-space: pre-wrap; }
-
+
打开答案源代码文件
-
+
Run Current Case
运行所有案例
-
+
测试案例验证选项
@@ -5076,15 +5080,15 @@ p, li { white-space: pre-wrap; }
-
-
+
+
导入FPS试题集
-
-
+
+
导出FPS试题集
@@ -5335,7 +5339,7 @@ p, li { white-space: pre-wrap; }
-
+
删除所有断点
@@ -5699,7 +5703,7 @@ p, li { white-space: pre-wrap; }
保存为模板...
-
+
新建文件
@@ -5740,7 +5744,7 @@ p, li { white-space: pre-wrap; }
-
+
重命名符号
@@ -5761,13 +5765,13 @@ p, li { white-space: pre-wrap; }
-
+
导出为RTF
-
+
导出为HTML
@@ -6036,7 +6040,7 @@ p, li { white-space: pre-wrap; }
运行参数...
-
+
文件编码
@@ -6085,17 +6089,17 @@ p, li { white-space: pre-wrap; }
行: %1 列: %2 已选择 :%3 总行数: %4 总长度: %5
-
+
只读
-
+
插入
-
+
覆写
@@ -6112,7 +6116,7 @@ p, li { white-space: pre-wrap; }
确认
-
+
源文件尚未编译。
@@ -6129,39 +6133,39 @@ p, li { white-space: pre-wrap; }
重新编译?
-
-
-
-
+
+
+
+
错误的编译器设置
-
-
-
-
+
+
+
+
编译器被设置为不生成可执行文件。
-
-
+
+
我们需要可执行文件来运行试题案例。
-
+
无编译器设置
-
+
没有配置编译器设置。
-
+
无法启动调试器
@@ -6182,33 +6186,33 @@ p, li { white-space: pre-wrap; }
项目尚未构建。是否构建?
-
+
宿主程序不存在
-
+
动态链接库(DLL)需要一个宿主程序来运行。
-
+
但它不存在。
-
+
宿主程序不存在
-
+
宿主程序'%1'不存在。
-
-
+
+
请在调试前改正设置。
@@ -6217,8 +6221,8 @@ p, li { white-space: pre-wrap; }
重新编译?
-
-
+
+
保存上次打开信息失败
@@ -6227,37 +6231,47 @@ p, li { white-space: pre-wrap; }
无法删除旧上次打开信息文件'%1'
-
+
无法保存上次打开信息文件'%1'
-
-
+
+
载入上次打开信息失败
-
-
+
+
无法载入上次打开信息文件'%1'
-
+
打开源代码文件
-
-
-
+
+
+ 行: %1/%2 字符: %3/%4 选中:%5
+
+
+
+
+ 行: %1/%2 字符: %3/%4
+
+
+
+
+
纠正调试用编译设置
-
-
+
+
生成的可执行文件中会缺少调试符号信息,因此无法编译。
@@ -6265,82 +6279,82 @@ p, li { white-space: pre-wrap; }
如果你正在使用Release版的编译器设置集,请在工具栏中将其改为Debug版本。
-
-
-
-
-
- 您也可以手动在选项对话框的编译器设置页中修正下列选项:
-
-
- - 打开“生成调试信息(-g3)"选项.
+
+ 您也可以手动在选项对话框的编译器设置页中修正下列选项:
-
- - 关闭"剥除附加信息(-s)"选项.
+
+ - 打开“生成调试信息(-g3)"选项.
-
- - 关闭"优化级别(-O)选项,或将其设置为"调试(-Og)"级别.
+
+ - 关闭"剥除附加信息(-s)"选项.
-
-
- 在更换编译器设置集或修改其设置后,需要重新编译.
+
+ - 关闭"优化级别(-O)选项,或将其设置为"调试(-Og)"级别.
+
+
+ 在更换编译器设置集或修改其设置后,需要重新编译.
+
+
+
+
+
您现在就要手动修改编译器设置集的设置吗?
-
-
+
+
批量设置案例
-
+
显示详细调试器日志
-
+
全部复制
-
+
跳转到行
-
+
行
-
+
模板已存在
-
+
模板%1已存在。是否覆盖?
@@ -6348,9 +6362,9 @@ p, li { white-space: pre-wrap; }
-
-
-
+
+
+
清除
@@ -6366,7 +6380,7 @@ p, li { white-space: pre-wrap; }
-
+
试题集%1
@@ -6395,66 +6409,56 @@ p, li { white-space: pre-wrap; }
项目已经被修改过,是否需要重新构建?
-
+
自动保存出错
-
+
自动保存"%1"到"%2"失败:%3
-
+
试题属性...
-
+
设置试题集名称
-
+
试题集名称:
-
+
删除
-
-
-
-
-
-
-
-
-
-
-
+
删除全部书签
-
+
修改描述
-
-
-
+
+
+
书签描述
-
-
-
+
+
+
描述:
@@ -6463,32 +6467,32 @@ p, li { white-space: pre-wrap; }
在调试主控台中显示调试器输出
-
+
清除这次搜索
-
+
删除所有搜索
-
+
断点条件...
-
+
断点条件
-
+
输入当前断点的生效条件:
-
+
Remove all breakpoints
删除所有断点
@@ -6498,34 +6502,34 @@ p, li { white-space: pre-wrap; }
行: %1 列: %2 选中:%3 总行数: %4
-
+
删除当前断点
-
+
重命名文件
-
-
+
+
添加文件夹
-
-
+
+
新文件夹
-
+
文件夹:
-
+
重命名
@@ -6538,17 +6542,17 @@ p, li { white-space: pre-wrap; }
要现在去修改设置吗?
-
+
修改试题集名称
-
+
无法写入配置文件'%1'。
-
+
修改试题名称
@@ -6577,12 +6581,12 @@ p, li { white-space: pre-wrap; }
是否现在去改正?
-
+
项目文件缺失
-
+
下列项目文件缺失,无法构建项目:
@@ -6599,202 +6603,202 @@ p, li { white-space: pre-wrap; }
请取消该设置,重新编译然后重新启动调试。
-
+
跳转到试题网址
-
+
添加试题案例
-
+
运行当前案例
-
+
删除文件夹
-
+
切换为普通视图
-
+
切换为自定义视图
-
+
按类型排序
-
+
按名称排序
-
+
显示继承的成员
-
+
跳转到声明处
-
+
跳转到定义处
-
+
仅当前文件
-
+
整个项目
-
-
+
+
新建文件夹
-
+
重命名
-
-
-
-
-
+
+
+
+
+
删除
-
+
在编辑器中打开
-
+
使用外部程序打开
-
+
在终端中打开
-
+
在文件资源管理器中打开
-
+
字符集
-
+
转换为%1编码
-
+
换行符
-
+
已自动保存%1个文件
-
+
设置答案源代码...
-
+
选择其他文件...
-
+
选择答案源代码文件
-
+
变量断点被触发
-
+
"%1"的值发生了变化:
-
+
新值: %1
-
+
项目文件夹被删除
-
+
项目"%1"的文件夹已被外部程序删除.
-
+
项目将被关闭.
-
+
保存设置失败
-
+
文件夹非空
-
+
项目文件夹不是空的,已有的文件可能会被覆盖。
-
+
您确定要继续吗?
-
+
被监控的变量
-
+
当下面的变量被修改时暂停执行(该变量必须可以从当前程序处访问):
@@ -6803,17 +6807,17 @@ p, li { white-space: pre-wrap; }
中止
-
+
FPS试题集文件(*.fps;*.xml)
-
+
FPS试题集文件(*.fps)
-
+
导出时出错
@@ -6823,7 +6827,7 @@ p, li { white-space: pre-wrap; }
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
新建文件夹%1
@@ -6836,13 +6840,13 @@ p, li { white-space: pre-wrap; }
无标题%1
-
-
+
+
你真的要删除%1吗?
-
+
你真的要删除%1个文件吗?
@@ -6855,7 +6859,7 @@ p, li { white-space: pre-wrap; }
变量"%1"有改动:
-
+
旧值: %1
@@ -6864,63 +6868,63 @@ p, li { white-space: pre-wrap; }
新值: %1
-
+
保存项目
-
+
项目'%1'有改动。
-
-
+
+
需要保存吗?
-
-
+
+
文件已发生变化
-
-
-
+
+
+
新建项目文件?
-
-
-
+
+
+
您是否要将新建的文件加入项目?
-
-
-
-
-
+
+
+
+
+
保存失败
-
+
改变项目编译器配置集
-
+
改变项目的编译器配置集会导致所有的自定义编译器选项被重置。
-
-
+
+
你真的想要那么做吗?
@@ -6929,12 +6933,12 @@ p, li { white-space: pre-wrap; }
批量设置案例
-
+
选择输入数据文件
-
+
输入数据文件 (*.in)
@@ -6943,78 +6947,78 @@ p, li { white-space: pre-wrap; }
无标题%1
-
+
修改监视表达式
-
+
监视表达式
-
+
您真的要清除该文件的所有断点吗?
-
+
新建项目
-
+
关闭'%1'以打开新项目?
-
+
文件夹不存在
-
+
文件夹'%1'不存在。是否创建?
-
+
无法创建文件夹
-
+
创建文件夹'%1'失败。
-
+
-
+
文件夹%1不是空的。
-
+
你真的要删除它吗?
-
+
改变工作文件夹
-
+
File '%1' is not in the current working folder
文件'%1'不在当前工作文件夹中。
-
+
是否将工作文件夹改设为'%1'?
@@ -7023,28 +7027,28 @@ p, li { white-space: pre-wrap; }
正在删除试题...
-
+
无法提交
-
+
Git需要用信息进行提交。
-
+
选择输入数据文件
-
-
+
+
所有文件 (*.*)
-
+
Choose Expected Input Data File
选择期望输出文件
@@ -7056,59 +7060,59 @@ p, li { white-space: pre-wrap; }
-
+
选择工作文件夹
-
-
+
+
头文件已存在
-
-
+
+
头文件"%1"已存在!
-
+
源文件已存在!
-
+
源文件"%1"已存在!
-
+
无法提交!
-
+
下列文件处于冲突状态,请解决后重新添加和提交:
-
+
提交信息
-
+
提交信息:
-
+
提交失败
-
+
提交信息不能为空!
@@ -7117,22 +7121,22 @@ p, li { white-space: pre-wrap; }
小熊猫Dev-C++项目文件 (*.dev)
-
+
新建项目失败
-
+
无法使用模板创建项目
-
+
删除文件
-
+
同时从硬盘上删除文件?
@@ -7141,27 +7145,27 @@ p, li { white-space: pre-wrap; }
无标题
-
+
新的项目文件名
-
+
文件名:
-
+
文件已存在!
-
+
文件'%1'已经存在!
-
+
添加到项目
@@ -7178,12 +7182,12 @@ p, li { white-space: pre-wrap; }
请在工具栏中选择Debug编译器配置集,或者在“编译器配置集”设置的“编译/链接选项”页中<b>启用</b>“生成调试信息(-g3)”、<b>禁用</b>“剥除附件信息(-3)”。
-
+
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
本操作会删除此试题的所有案例。
@@ -7192,7 +7196,7 @@ p, li { white-space: pre-wrap; }
调试失败
-
+
可执行文件中没有符号表信息,无法调试。
@@ -7217,88 +7221,88 @@ p, li { white-space: pre-wrap; }
您也可以删除所有断点,打开“CPU信息窗口”,然后调试汇编代码。
-
+
未能生成可执行文件。
-
+
请查看“工具输出”面板中的详细信息。
-
+
小熊猫C++项目文件(*.dev)
-
+
重命名出错
-
+
符号'%1'在系统头文件中定义,无法修改。
-
+
新名称
-
-
-
-
+
+
+
+
替换出错
-
+
无法打开文件'%1'进行替换!
-
+
内容和上次查找时不一致。
-
+
RTF格式文件 (*.rtf)
-
+
HTML文件 (*.html)
-
+
当前的试题集不是空的。
-
+
试题%1
-
-
+
+
试题集文件 (*.pbs)
-
-
+
+
载入失败
-
-
+
+
试题案例%1
@@ -7309,14 +7313,14 @@ p, li { white-space: pre-wrap; }
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
错误
@@ -7342,8 +7346,8 @@ p, li { white-space: pre-wrap; }
编译生成的可执行文件中没有符号表,无法被调试。
-
-
+
+
版本控制
@@ -7352,46 +7356,46 @@ p, li { white-space: pre-wrap; }
请在工具栏中选用Debug编译器配置集,或者在选项对话框的编辑器配置集页中勾选“生成调试信息(-g3)"选项。
-
+
磁盘文件'%1'已被修改。
-
+
是否重新读取它的内容?
-
+
磁盘文件'%1'已被删除。
-
+
是否保持它在小熊猫C++中打开的编辑窗口?
-
+
打开
-
-
+
+
编译失败
-
+
运行失败
-
-
-
-
+
+
+
+
确认转换
@@ -7415,43 +7419,43 @@ p, li { white-space: pre-wrap; }
行: %1 列: %2 (%3个字符) 总行数: %4
-
-
-
+
+
+
如果你正在使用Release版的编译器设置集,请在工具栏中将其改为Debug版本。
-
-
-
-
+
+
+
+
当前编辑器中的文件将会使用%1编码保存。<br />这项操作无法被撤回。<br />你确定要继续吗?
-
+
新监视表达式
-
+
输入监视表达式
-
+
(%1/%2)正在解析文件"%3"
-
-
+
+
完成%1个文件的解析,用时%2秒
-
+
(每秒%1个文件)
@@ -8857,20 +8861,20 @@ p, li { white-space: pre-wrap; }
- <b>文件名 "%1" 无法被使用!</b><p>可能是重名、过长、为空或者是使用了不能出现在文件名里的符号。
+ <b>文件名 "%1" 无法被使用!</b><p>可能是重名、过长、为空或者是使用了不能出现在文件名里的符号。
QObject
-
+
保存
-
+
将修改保存到"%1"?
@@ -9050,7 +9054,7 @@ p, li { white-space: pre-wrap; }
生成调试信息(-g3)
-
+
您同意小熊猫C++在PATH路径中寻找gcc编译器吗?
@@ -9261,7 +9265,7 @@ p, li { white-space: pre-wrap; }
只生成汇编代码(-S)
-
+
确认
@@ -9282,13 +9286,13 @@ p, li { white-space: pre-wrap; }
如果仍然保留这些设置,可能会导致编译错误。<br /><br />请选择“是”,除非您清楚的知道选择“否”的后果,
-
-
+
+
未配置编译器设置。
-
+
您需要小熊猫C++在下列位置搜索编译器吗:<br />%1<br />%2
@@ -9657,7 +9661,7 @@ p, li { white-space: pre-wrap; }
-
+
@@ -9712,7 +9716,7 @@ p, li { white-space: pre-wrap; }
无法检测适用于 “%1” 的终端参数模式。
-
+
执行平台编译器提示附加组件错误
@@ -10676,12 +10680,12 @@ p, li { white-space: pre-wrap; }
Settings
-
+
错误
-
+
找不到合适的终端程序!
@@ -10878,18 +10882,18 @@ p, li { white-space: pre-wrap; }
性能
-
-
-
-
+
+
+
+
编译器配置集
-
-
+
+
@@ -10901,7 +10905,7 @@ p, li { white-space: pre-wrap; }
自动链接
-
+
@@ -10977,15 +10981,15 @@ p, li { white-space: pre-wrap; }
杂项
-
-
+
+
程序运行
-
+
试题集
@@ -11044,8 +11048,8 @@ p, li { white-space: pre-wrap; }
项目选项
-
-
+
+
diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
index b8a8b616..19af9fbd 100644
--- a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
@@ -1318,10 +1318,6 @@
-
-
-
-
@@ -1390,6 +1386,10 @@
+
+
+
+
EditorGeneralWidget
@@ -5129,11 +5129,11 @@
-
+
-
+
diff --git a/RedPandaIDE/widgets/cpudialog.cpp b/RedPandaIDE/widgets/cpudialog.cpp
index 8c9636b8..740886ab 100644
--- a/RedPandaIDE/widgets/cpudialog.cpp
+++ b/RedPandaIDE/widgets/cpudialog.cpp
@@ -142,14 +142,15 @@ void CPUDialog::setDisassembly(const QString& file, const QString& funcName,cons
void CPUDialog::resetEditorFont(float dpi)
{
- QFont f=QFont(pSettings->editor().fontName());
+
+ QFont f=QFont();
+ f.setFamilies(
+ QStringList{
+ pSettings->editor().fontName(),
+ pSettings->editor().fallbackFontName()});
f.setPixelSize(pointToPixel(pSettings->editor().fontSize(),dpi));
f.setStyleStrategy(QFont::PreferAntialias);
ui->txtCode->setFont(f);
- QFont f2=QFont(pSettings->editor().nonAsciiFontName());
- f2.setPixelSize(pointToPixel(pSettings->editor().fontSize(),dpi));
- f2.setStyleStrategy(QFont::PreferAntialias);
- ui->txtCode->setFontForNonAscii(f2);
}
void CPUDialog::sendSyntaxCommand()
diff --git a/libs/qsynedit/qsynedit/document.cpp b/libs/qsynedit/qsynedit/document.cpp
index cab25361..c96adf2d 100644
--- a/libs/qsynedit/qsynedit/document.cpp
+++ b/libs/qsynedit/qsynedit/document.cpp
@@ -33,7 +33,6 @@ namespace QSynedit {
Document::Document(const QFont& font, const QFont& nonAsciiFont, QObject *parent):
QObject(parent),
mFontMetrics(font),
- mNonAsciiFontMetrics(nonAsciiFont),
mTabSize(4),
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
mMutex()
@@ -591,12 +590,11 @@ const QFontMetrics &Document::fontMetrics() const
return mFontMetrics;
}
-void Document::setFontMetrics(const QFont &newFont, const QFont& newNonAsciiFont)
+void Document::setFont(const QFont &newFont)
{
mFontMetrics = QFontMetrics(newFont);
mCharWidth = mFontMetrics.horizontalAdvance("M");
mSpaceWidth = mFontMetrics.horizontalAdvance(" ");
- mNonAsciiFontMetrics = QFontMetrics(newNonAsciiFont);
invalidateAllLineWidth();
}
@@ -896,11 +894,11 @@ int Document::stringWidth(const QString &str, int left) const
return right - left;
}
-int Document::stringWidth(const QString &str, int left, const QFontMetrics &asciFontMetrics, const QFontMetrics &nonAsciiFontMetrics)
+int Document::stringWidth(const QString &str, int left, const QFontMetrics &fontMetrics)
{
QList glyphStartCharList = calcGlyphStartCharList(str);
int right;
- calcGlyphPositionList(str, glyphStartCharList, asciFontMetrics, nonAsciiFontMetrics, left, right);
+ calcGlyphPositionList(str, glyphStartCharList, fontMetrics, left, right);
return right - left;
}
@@ -938,7 +936,7 @@ int Document::glyphWidth(int line, int glyphIdx)
int Document::glyphWidth(const QString &glyph, int left) const
{
- return glyphWidth(glyph,left,mFontMetrics, mNonAsciiFontMetrics);
+ return glyphWidth(glyph,left,mFontMetrics);
}
int Document::charToGlyphIndex(int line, int charIdx)
@@ -971,7 +969,7 @@ QList Document::calcLineWidth(const QString &lineText, const QList &gl
return calcGlyphPositionList(lineText,glyphStartCharList,0,width);
}
-QList Document::calcGlyphPositionList(const QString &lineText, const QList &glyphStartCharList, const QFontMetrics &fontMetrics, const QFontMetrics &nonAsciiFontMetrics, int left, int &right) const
+QList Document::calcGlyphPositionList(const QString &lineText, const QList &glyphStartCharList, const QFontMetrics &fontMetrics, int left, int &right) const
{
right = std::max(0,left);
int start,end;
@@ -984,7 +982,7 @@ QList Document::calcGlyphPositionList(const QString &lineText, const QList<
end = lineText.length();
}
QString glyph = lineText.mid(start,end-start);
- int gWidth = glyphWidth(glyph, right, fontMetrics, nonAsciiFontMetrics);
+ int gWidth = glyphWidth(glyph, right, fontMetrics);
glyphPostionList.append(right);
right += gWidth;
}
@@ -1157,7 +1155,6 @@ QList Document::calcGlyphPositionList(const QString &lineText, const QList<
{
return calcGlyphPositionList(lineText, glyphStartCharList,
mFontMetrics,
- mNonAsciiFontMetrics,
left,right);
}
@@ -1720,7 +1717,7 @@ int searchForSegmentIdx(const QList &segList, int minVal, int maxVal, int v
int Document::updateGlyphStartPositionList(
const QString &lineText,
const QList &glyphStartCharList, int startChar, int endChar,
- const QFontMetrics &fontMetrics, const QFontMetrics &nonAsciiFontMetrics,
+ const QFontMetrics &fontMetrics,
QList &glyphStartPositionList, int left, int &right, int &startGlyph, int &endGlyph) const
{
right = std::max(0,left);
@@ -1735,7 +1732,7 @@ int Document::updateGlyphStartPositionList(
end = lineText.length();
}
QString glyph = lineText.mid(start,end-start);
- int gWidth = glyphWidth(glyph, right, fontMetrics, nonAsciiFontMetrics);
+ int gWidth = glyphWidth(glyph, right, fontMetrics);
glyphStartPositionList[i] = right;
right += gWidth;
}
@@ -1744,19 +1741,16 @@ int Document::updateGlyphStartPositionList(
return right-left;
}
-int Document::glyphWidth(const QString &glyph, int left, const QFontMetrics &fontMetrics, const QFontMetrics &nonAsciiFontMetrics) const
+int Document::glyphWidth(const QString &glyph, int left, const QFontMetrics &fontMetrics) const
{
int glyphWidth;
- if (glyph.length()==1 && glyph[0].unicode()<128) {
- QChar ch = glyph[0];
- if (ch == '\t') {
- glyphWidth = tabWidth() - left % tabWidth();
- } else {
- glyphWidth = fontMetrics.horizontalAdvance(ch);
- //qDebug()< &glyphStartCharList,
int startChar, int endChar,
- const QFontMetrics &fontMetrics, const QFontMetrics &nonAsciiFontMetrics,
+ const QFontMetrics &fontMetrics,
QList &glyphStartPositionList,
int left, int &right, int &startGlyph, int &endGlyph) const;
@@ -546,7 +546,7 @@ public:
void setTabSize(int newTabSize);
const QFontMetrics &fontMetrics() const;
- void setFontMetrics(const QFont &newFont, const QFont& newNonAsciiFont);
+ void setFont(const QFont &newFont);
public slots:
void invalidateAllLineWidth();
@@ -569,14 +569,13 @@ private:
void setLineWidth(int line, const QString& lineText, int newWidth, const QList glyphStartPositionList);
int glyphWidth(const QString& glyph, int left,
- const QFontMetrics &fontMetrics, const QFontMetrics &nonAsciiFontMetrics) const;
+ const QFontMetrics &fontMetrics) const;
int xposToGlyphIndex(int strWidth, QList glyphPositionList, int xpos) const;
int charToGlyphIndex(const QString& str, QList glyphStartCharList, int charPos) const;
QList calcLineWidth(const QString& lineText, const QList &glyphStartCharList, int &width);
QList calcGlyphPositionList(const QString& lineText, const QList &glyphStartCharList,
const QFontMetrics &fontMetrics,
- const QFontMetrics &nonAsciiFontMetrics,
int left, int &right) const;
QList calcGlyphPositionList(const QString& lineText, const QList &glyphStartCharList, int left, int &right) const;
QList calcGlyphPositionList(const QString& lineText, int &width) const;
@@ -596,7 +595,6 @@ private:
//SynEdit* mEdit;
QFontMetrics mFontMetrics;
- QFontMetrics mNonAsciiFontMetrics;
int mTabSize;
int mCharWidth;
int mSpaceWidth;
diff --git a/libs/qsynedit/qsynedit/painter.cpp b/libs/qsynedit/qsynedit/painter.cpp
index 7e1bba2d..1317db8f 100644
--- a/libs/qsynedit/qsynedit/painter.cpp
+++ b/libs/qsynedit/qsynedit/painter.cpp
@@ -360,12 +360,11 @@ void QSynEditPainter::paintToken(
int startGlyph,
int endGlyph,
int tokenWidth, int tokenLeft,
- int first, int last, bool /*isSelection*/, const QFont& font,
- const QFont& fontForNonAscii, bool showGlyphs)
+ int first, int last,
+ const QFont& font, bool showGlyphs)
{
bool startPaint;
int nX;
- bool lastGlyphAscii = false;
bool fontInited = false;
int tokenRight = tokenWidth+tokenLeft;
@@ -401,17 +400,10 @@ void QSynEditPainter::paintToken(
bool drawed = false;
if (mEdit->mOptions.testFlag(eoLigatureSupport)) {
bool tryLigature = false;
- bool isAscii = false;
if (glyph.length()==0) {
} else if (glyph.length()==1 && glyph.front().unicode()<=32){
- } else if (glyph.length()==1
- && glyph.front().unicode()>32
- && glyph.front().unicode()<128) {
- tryLigature = true;
- isAscii = true;
} else {
tryLigature = true;
- isAscii = false;
}
if (tryLigature) {
QString textToPaint = glyph;
@@ -421,32 +413,19 @@ void QSynEditPainter::paintToken(
QString glyph2 = lineText.mid(glyphStart,glyphLen);
// if (!OperatorGlyphs.contains(glyph))
// break;
- if (isAscii) {
- if ( glyph2.length()!=1
- || glyph2.front().unicode()<=32
- || glyph2.front().unicode()>=128)
- break;
- } else {
- if ( glyph2.length()<1
- ||
- (glyph2.length()==1
- && glyph2.front().unicode()>32
- && glyph2.front().unicode()<128))
- break;
- }
+ if ( glyph2.length()<1
+ ||
+ (glyph2.length()==1
+ && glyph2.front().unicode()<32))
+ break;
i+=1;
glyphWidth += calcSegmentInterval(glyphStartPositionList, tokenRight, i);
textToPaint+=glyph2;
if (tokenWidth + glyphWidth > last )
break;
}
- if (!fontInited || lastGlyphAscii!=isAscii) {
- if (isAscii) {
- mPainter->setFont(font);
- } else {
- mPainter->setFont(fontForNonAscii);
- }
- lastGlyphAscii = isAscii;
+ if (!fontInited) {
+ mPainter->setFont(font);
fontInited = true;
}
mPainter->drawText(nX,rcToken.bottom()-mPainter->fontMetrics().descent() , textToPaint);
@@ -473,19 +452,17 @@ void QSynEditPainter::paintToken(
ch=glyph;
}
if (ch!=" " && ch!="\t") {
- if (!fontInited || !lastGlyphAscii) {
+ if (!fontInited) {
mPainter->setFont(font);
fontInited = true;
- lastGlyphAscii = true;
}
mPainter->drawText(nX+padding,rcToken.bottom()-mPainter->fontMetrics().descent() , ch);
}
//qDebug()<<"Drawing"<setFont(fontForNonAscii);
+ if (!fontInited) {
+ mPainter->setFont(font);
fontInited = true;
- lastGlyphAscii = false;
}
mPainter->drawText(nX,rcToken.bottom()-mPainter->fontMetrics().descent() , glyph);
}
@@ -606,7 +583,8 @@ void QSynEditPainter::paintHighlightToken(const QString& lineText,
glyphStartPositionsList,
mTokenAccu.startGlyph,
mTokenAccu.endGlyph,
- mTokenAccu.width,mTokenAccu.left,nC1,mLineSelStart,false,mTokenAccu.font,mTokenAccu.nonAsciiFont, mTokenAccu.showSpecialGlyphs);
+ mTokenAccu.width,mTokenAccu.left,nC1,mLineSelStart,
+ mTokenAccu.font, mTokenAccu.showSpecialGlyphs);
}
// selected part of the token
setDrawingColors(true);
@@ -619,7 +597,8 @@ void QSynEditPainter::paintHighlightToken(const QString& lineText,
glyphStartPositionsList,
mTokenAccu.startGlyph,
mTokenAccu.endGlyph,
- mTokenAccu.width, mTokenAccu.left, nC1Sel, nC2Sel,true,mTokenAccu.font,mTokenAccu.nonAsciiFont, mTokenAccu.showSpecialGlyphs);
+ mTokenAccu.width, mTokenAccu.left, nC1Sel, nC2Sel,
+ mTokenAccu.font, mTokenAccu.showSpecialGlyphs);
// second unselected part of the token
if (bU2) {
setDrawingColors(false);
@@ -630,7 +609,8 @@ void QSynEditPainter::paintHighlightToken(const QString& lineText,
glyphStartPositionsList,
mTokenAccu.startGlyph,
mTokenAccu.endGlyph,
- mTokenAccu.width, mTokenAccu.left, mLineSelEnd, nC2,false,mTokenAccu.font,mTokenAccu.nonAsciiFont, mTokenAccu.showSpecialGlyphs);
+ mTokenAccu.width, mTokenAccu.left, mLineSelEnd, nC2,
+ mTokenAccu.font, mTokenAccu.showSpecialGlyphs);
}
} else {
setDrawingColors(bSel);
@@ -641,7 +621,8 @@ void QSynEditPainter::paintHighlightToken(const QString& lineText,
glyphStartPositionsList,
mTokenAccu.startGlyph,
mTokenAccu.endGlyph,
- mTokenAccu.width, mTokenAccu.left, nC1, nC2,bSel,mTokenAccu.font,mTokenAccu.nonAsciiFont, mTokenAccu.showSpecialGlyphs);
+ mTokenAccu.width, mTokenAccu.left, nC1, nC2,
+ mTokenAccu.font, mTokenAccu.showSpecialGlyphs);
}
}
@@ -751,11 +732,6 @@ void QSynEditPainter::addHighlightToken(
mTokenAccu.font.setItalic(style & FontStyle::fsItalic);
mTokenAccu.font.setStrikeOut(style & FontStyle::fsStrikeOut);
mTokenAccu.font.setUnderline(style & FontStyle::fsUnderline);
- mTokenAccu.nonAsciiFont = mEdit->fontForNonAscii();
- mTokenAccu.nonAsciiFont.setBold(style & FontStyle::fsBold);
- mTokenAccu.nonAsciiFont.setItalic(style & FontStyle::fsItalic);
- mTokenAccu.nonAsciiFont.setStrikeOut(style & FontStyle::fsStrikeOut);
- mTokenAccu.nonAsciiFont.setUnderline(style & FontStyle::fsUnderline);
}
//calculate width of the token ( and update it's glyph start positions )
int tokenRight;
@@ -766,7 +742,6 @@ void QSynEditPainter::addHighlightToken(
tokenStartChar,
tokenEndChar,
QFontMetrics(mTokenAccu.font),
- QFontMetrics(mTokenAccu.nonAsciiFont),
glyphStartPositionList,
tokenLeft,
tokenRight,
@@ -1042,7 +1017,8 @@ void QSynEditPainter::paintLines()
glyphStartPositionsList,
0,
glyphStartCharList.length(),
- tokenWidth, 0, mLineSelStart, mLineSelEnd,false,mEdit->font(),mEdit->fontForNonAscii(),false);
+ tokenWidth, 0, mLineSelStart, mLineSelEnd,
+ mEdit->font(),false);
setDrawingColors(false);
rcToken.setLeft(std::max(rcLine.left(), fixXValue(mLeft)));
rcToken.setRight(std::min(rcLine.right(), fixXValue(mLineSelStart)));
@@ -1052,7 +1028,8 @@ void QSynEditPainter::paintLines()
glyphStartPositionsList,
0,
glyphStartCharList.length(),
- tokenWidth, 0, mLeft, mLineSelStart,false,mEdit->font(),mEdit->fontForNonAscii(),false);
+ tokenWidth, 0, mLeft, mLineSelStart,
+ mEdit->font(), false);
rcToken.setLeft(std::max(rcLine.left(), fixXValue(mLineSelEnd)));
rcToken.setRight(std::min(rcLine.right(), fixXValue(mRight)));
paintToken(
@@ -1061,7 +1038,8 @@ void QSynEditPainter::paintLines()
glyphStartPositionsList,
0,
glyphStartCharList.length(),
- tokenWidth, 0, mLineSelEnd, mRight,true, mEdit->font(), mEdit->fontForNonAscii(),false);
+ tokenWidth, 0, mLineSelEnd, mRight,
+ mEdit->font(), false);
} else {
setDrawingColors(mIsLineSelected);
paintToken(
@@ -1070,7 +1048,8 @@ void QSynEditPainter::paintLines()
glyphStartPositionsList,
0,
glyphStartCharList.length(),
- tokenWidth, 0, mLeft, mRight, mIsLineSelected,mEdit->font(),mEdit->fontForNonAscii(),false);
+ tokenWidth, 0, mLeft, mRight,
+ mEdit->font(),false);
}
//Paint editingAreaBorders
if (mIsCurrentLine && mEdit->mInputPreeditString.length()>0) {
diff --git a/libs/qsynedit/qsynedit/painter.h b/libs/qsynedit/qsynedit/painter.h
index e7ceeb7c..ddf78319 100644
--- a/libs/qsynedit/qsynedit/painter.h
+++ b/libs/qsynedit/qsynedit/painter.h
@@ -38,7 +38,6 @@ class QSynEditPainter
QColor background;
FontStyles style;
QFont font;
- QFont nonAsciiFont;
bool showSpecialGlyphs;
};
@@ -65,7 +64,7 @@ private:
int startGlyph,
int endGlyph,
int tokenWidth, int tokenLeft,
- int first, int last, bool isSelection, const QFont& font,
+ int first, int last,
const QFont& fontForNonAscii, bool showGlyphs);
void paintEditAreas(const EditingAreaList& areaList);
void paintHighlightToken(const QString& lineText,
diff --git a/libs/qsynedit/qsynedit/qsynedit.cpp b/libs/qsynedit/qsynedit/qsynedit.cpp
index 15192e7a..bd57211d 100644
--- a/libs/qsynedit/qsynedit/qsynedit.cpp
+++ b/libs/qsynedit/qsynedit/qsynedit.cpp
@@ -160,7 +160,6 @@ QSynEdit::QSynEdit(QWidget *parent) : QAbstractScrollArea(parent),
setAcceptDrops(true);
setFont(mFontDummy);
- setFontForNonAscii(mFontDummy);
}
int QSynEdit::displayLineCount() const
@@ -3871,19 +3870,6 @@ void QSynEdit::setMouseSelectionScrollSpeed(int newMouseSelectionScrollSpeed)
mMouseSelectionScrollSpeed = newMouseSelectionScrollSpeed;
}
-const QFont &QSynEdit::fontForNonAscii() const
-{
- return mFontForNonAscii;
-}
-
-void QSynEdit::setFontForNonAscii(const QFont &newFontForNonAscii)
-{
- mFontForNonAscii = newFontForNonAscii;
- mFontForNonAscii.setStyleStrategy(QFont::PreferAntialias);
- if (mDocument)
- mDocument->setFontMetrics(font(),mFontForNonAscii);
-}
-
const QColor &QSynEdit::backgroundColor() const
{
return mBackgroundColor;
@@ -6148,7 +6134,7 @@ bool QSynEdit::event(QEvent *event)
case QEvent::FontChange:
synFontChanged();
if (mDocument)
- mDocument->setFontMetrics(font(),mFontForNonAscii);
+ mDocument->setFont(font());
break;
case QEvent::MouseMove: {
updateMouseCursor();
diff --git a/libs/qsynedit/qsynedit/qsynedit.h b/libs/qsynedit/qsynedit/qsynedit.h
index 8fa3c538..ee9d4176 100644
--- a/libs/qsynedit/qsynedit/qsynedit.h
+++ b/libs/qsynedit/qsynedit/qsynedit.h
@@ -808,10 +808,6 @@ protected:
public:
QVariant inputMethodQuery(Qt::InputMethodQuery property) const override;
- // QWidget interface
- const QFont &fontForNonAscii() const;
- void setFontForNonAscii(const QFont &newFontForNonAscii);
-
int mouseSelectionScrollSpeed() const;
void setMouseSelectionScrollSpeed(int newMouseSelectionScrollSpeed);
diff --git a/libs/qsynedit/qsynedit_zh_CN.ts b/libs/qsynedit/qsynedit_zh_CN.ts
index 8496a87c..2161a981 100644
--- a/libs/qsynedit/qsynedit_zh_CN.ts
+++ b/libs/qsynedit/qsynedit_zh_CN.ts
@@ -4288,29 +4288,29 @@
QSynedit::Document
-
+
无法读取文件"%1".
-
-
+
+
无法加载字符编码"%1"!
-
+
This is a binaray File!
'%1'是二进制文件!
-
+
无法保存文件"%1"!
-
+
数据未能正确写入文件"%1"。
@@ -4318,10 +4318,9 @@
QSynedit::QSynEdit
-
The highlighter seems to be in an infinite loop
- 代码分析器似乎死循环了。
+ 代码分析器似乎死循环了。