diff --git a/NEWS.md b/NEWS.md
index afff6768..3a824b22 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -5,6 +5,7 @@ Red Panda C++ Version 1.0.7
- enhancement: hide add charset option in project options dialog's compiler set page, when project compiler set is clang
- fix: When generating project's makefile for clang, don't add -fexec-charset / -finput-charset command line options
- fix: index of the longest line not correctly updated when inputting with auto completion open
+ - enhancement: support UTF-8 BOM files
Red Panda C++ Version 1.0.6
- fix: gcc compiler set name is not correct in Linux
diff --git a/RedPandaIDE/RedPandaIDE_pt.ts b/RedPandaIDE/RedPandaIDE_pt.ts
index 0be2138a..ad005d0a 100644
--- a/RedPandaIDE/RedPandaIDE_pt.ts
+++ b/RedPandaIDE/RedPandaIDE_pt.ts
@@ -469,18 +469,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1343,6 +1331,10 @@
+
+
+
+
EditorSnippetWidget
@@ -4444,6 +4436,14 @@
+
+
+
+
+
+
+
+
NewClassDialog
@@ -6252,14 +6252,7 @@
- SynEdit
-
-
-
-
-
-
- SynEditStringList
+ SynDocument
@@ -6269,6 +6262,13 @@
+
+ SynEdit
+
+
+
+
+
TodoModel
diff --git a/RedPandaIDE/RedPandaIDE_zh_CN.ts b/RedPandaIDE/RedPandaIDE_zh_CN.ts
index 899e25f6..3d18bc8c 100644
--- a/RedPandaIDE/RedPandaIDE_zh_CN.ts
+++ b/RedPandaIDE/RedPandaIDE_zh_CN.ts
@@ -594,27 +594,27 @@ p, li { white-space: pre-wrap; }
- 编译时间: %1 秒
-
+
[错误]
-
+
[警告]
-
+
[信息]
-
+
[说明]
-
+
无法启动编译器进程'%1'。
@@ -623,27 +623,27 @@ p, li { white-space: pre-wrap; }
无法启动编译进程。
-
+
编译进程启动后崩溃。
-
+
waitFor()函数等待超时。
-
+
在向编译进程输入内容时出错。
-
+
在从编译进程读取内容时出错。
-
+
发生了未知错误。
@@ -690,53 +690,50 @@ p, li { white-space: pre-wrap; }
CompilerManager
-
-
-
-
+
+
+
+
无编译器设置
-
-
-
-
+
+
+
+
没有配置编译器设置。
-
-
-
-
+
+
+
+
无法启动调试器
-
- 不支持字符编码
+ 不支持字符编码
-
- Clang只支持UTF-8编码
+ Clang只支持UTF-8编码
-
- 程序中的文字内容可能无法被正确处理和显示。
+ 程序中的文字内容可能无法被正确处理和显示。
-
+
找不到Console Pauser程序
-
+
找不到Console Pauser程序"%1"!
@@ -949,12 +946,12 @@ p, li { white-space: pre-wrap; }
选择性能分析器
-
+
确认
-
+
Red Panda C++ will clear current compiler list and search for compilers in the following locations:
'%1'
@@ -973,40 +970,40 @@ Are you really want to continue?
UTF-8
-
+
小熊猫C++ 将会清除现有的编译器配置列表,然后在PATH路径中搜索gcc编译器.<br />你确定要继续吗?
-
-
+
+
失败
-
-
+
+
找不到编译器
-
-
+
+
编译器配置名称
-
+
名称
-
+
编译器所在文件夹
-
+
新名称
@@ -1270,10 +1267,10 @@ Are you really want to continue?
-
-
-
-
+
+
+
+
错误
@@ -1292,34 +1289,34 @@ Are you really want to continue?
文件%1已经被打开!
-
+
要复制的内容超过了行数限制!
-
+
要复制的内容超过了字符数限制!
-
+
要剪切的内容超过了行数限制!
-
+
要剪切的内容超过了字符数限制!
-
+
打印文档
-
-
-
+
+
+
Ctrl+单击以获取更多信息
@@ -1328,27 +1325,27 @@ Are you really want to continue?
未找到符号'%1'!
-
+
找不到astyle程序
-
+
找不到astyle程序"%1".
-
+
断点条件
-
+
输入当前断点的生效条件:
-
+
只读
@@ -1894,15 +1891,20 @@ Are you really want to continue?
C语言文件
-
+
ANSI
-
+
UTF-8
+
+
+
+ UTF-8 BOM
+
EditorSnippetWidget
@@ -3814,18 +3816,18 @@ Are you really want to continue?
MainWindow
-
+
小熊猫C++
-
-
-
-
-
-
-
+
+
+
+
+
+
+
编译器
@@ -3834,48 +3836,48 @@ Are you really want to continue?
编译日志
-
+
文件
-
+
工具
-
+
运行
-
+
编辑
-
-
+
+
项目
-
+
监视
-
-
+
+
结构
-
+
文件
@@ -3884,85 +3886,85 @@ Are you really want to continue?
资源
-
-
-
+
+
-
+
+
调试
-
+
求值
-
-
+
+
调试主控台
-
+
调用栈
-
+
断点
-
+
局部变量
-
-
-
+
+
+
查找
-
+
历史:
-
+
重新查找
-
+
替换为:
-
+
替换
-
+
关闭
-
+
运行
-
-
+
+
代码
-
+
窗口
@@ -3975,418 +3977,418 @@ Are you really want to continue?
工具栏2
-
+
新建
-
+
Ctrl+N
-
+
打开...
-
+
Ctrl+O
-
+
保存
-
+
Ctrl+S
-
+
另存为...
-
+
另存为
-
+
全部保存
-
+
Ctrl+Shift+S
-
+
选项
-
-
+
-
-
+
+
+
编译
-
-
+
+
工具输出
-
+
选择输入文件
-
+
...
-
+
工具面板
-
+
Git
-
+
F9
-
+
F10
-
+
恢复
-
+
Ctrl+Z
-
+
重做
-
+
Ctrl+Y
-
+
剪切
-
+
Ctrl+X
-
-
-
-
+
+
+
+
复制
-
+
Ctrl+C
-
-
+
+
粘贴
-
+
Ctrl+V
-
-
-
+
+
+
选择全部
-
+
Ctrl+A
-
+
缩进
-
+
取消缩进
-
+
切换注释
-
+
Ctrl+/
-
+
全部收起
-
+
全部展开
-
+
使用ANSI编码
-
+
使用UTF-8编码
-
+
自动检测
-
+
转换为ANSI编码
-
+
转换为UTF-8编码
-
+
编译运行
-
+
F11
-
+
全部重编译
-
+
F12
-
+
停止执行
-
+
F6
-
+
F5
-
+
单步跳过
-
+
F7
-
+
单步进入
-
-
-
+
+
+
试题集
-
-
+
+
新建试题集
-
+
添加试题
-
+
删除试题
-
-
+
+
保存试题集
-
-
+
+
载入试题集
-
+
内存
-
+
Address:
地址表达式:
-
+
取消
-
-
+
+
TODO
-
-
+
+
书签
-
-
-
+
+
+
试题
-
+
添加试题案例
-
+
Remove Problem Set
删除试题集
-
+
打开答案源代码文件
-
-
+
+
Run Current Case
运行所有案例
-
+
测试案例验证选项
-
+
%v/%m
-
+
输出
-
+
输入
-
+
期望输出
-
+
帮助
-
+
重构
-
+
视图
@@ -4395,528 +4397,538 @@ Are you really want to continue?
工具窗口
-
+
主工具栏
-
+
编译器配置集
-
+
新建源代码文件
-
+
Tab
-
+
Shift+Tab
-
+
F8
-
+
单步跳出
-
+
Ctrl+F8
-
+
执行到光标处
-
+
Ctrl+F5
-
+
继续执行
-
+
F4
-
+
添加监视
-
+
打开CPU信息窗口...
-
+
退出
-
+
查找...
-
+
Ctrl+F
-
+
在文件中查找...
-
+
Ctrl+Shift+F
-
+
替换
-
+
Ctrl+R
-
+
查找下一个
-
+
F3
-
+
查找前一个
-
+
Shift+F3
-
+
删除监视值
-
+
Remove All
删除全部监视值
-
+
修改监视值
-
+
对代码重新排版
-
+
Ctrl+Shift+A
-
+
前一次编辑位置
-
+
Ctrl+Alt+Left
-
+
后一次编辑位置
-
+
Ctrl+Alt+Right
-
+
Ctrl+W
-
+
全部关闭
-
+
Ctrl+Shift+W
-
+
最大化编辑器
-
+
Ctrl+F11
-
+
下一窗口
-
+
Ctrl+Tab
-
+
前一窗口
-
+
Ctrl+Shift+Tab
-
+
切换断点
-
+
Ctrl+F4
-
-
+
+
删除所有断点
-
+
设置断点条件...
-
+
跳转到声明处
-
+
Ctrl+Shift+G
-
+
跳转到定义处
-
+
Ctrl+G
-
+
查找符号的引用
-
+
打开所在的文件夹
-
+
Ctrl+B
-
+
打开命令行窗口
-
+
文件属性...
-
+
关闭项目
-
+
项目属性
-
+
新建项目...
-
+
新建项目文件
-
+
F1
-
+
向上移动选中的行
-
+
Ctrl+Shift+Up
-
+
向下移动选中的行
-
+
Ctrl+Shift+Down
-
+
+
+ 转换为UTF-8 BOM编码
+
+
+
+
+ 使用UTF-8 BOM编码
+
+
+
新建文件
-
+
添加到项目...
-
+
从项目删除
-
+
查看Makefile
-
+
清理构建文件
-
+
在浏览器中打开
-
+
在终端中打开
-
+
关于
-
-
+
+
重命名符号
-
+
Shift+F6
-
+
打印...
-
+
Ctrl+P
-
-
+
+
导出为RTF
-
-
+
+
导出为HTML
-
+
移动到其他视图
-
+
Ctrl+M
-
+
C++参考手册
-
+
C参考手册
-
+
显示全部工具面板
-
+
Create Repository
创建Git仓库
-
+
提交(Commit)
-
+
撤销(Revert)
-
+
回滚(Reset)
-
+
添加文件
-
+
还原(Restore)
-
+
官方网站
-
+
分支切换(Switch)
-
+
合并(Merge)
-
+
Log
显示日志(Log)
-
+
远程仓库...
-
+
取回(Fetch)
-
+
拉取(Pull)
-
+
推送(Push)
-
+
隐藏不支持的文件
-
+
切换块注释
-
+
Alt+Shift+A
-
+
匹配当前括号
-
+
Ctrl+]
@@ -4925,50 +4937,50 @@ Are you really want to continue?
工具窗口栏
-
+
状态栏
-
+
Ctrl+Backspace
-
+
中断
-
+
删除到单词开头
-
+
Ctrl+Shift+B
-
+
删除到单词结尾
-
+
Ctrl+Shift+E
-
+
Add Class...
新建类...
-
+
New Header
新建头文件...
@@ -4978,47 +4990,47 @@ Are you really want to continue?
插入行
-
+
删除当前行
-
+
Ctrl+D
-
+
复制当前行
-
+
Ctrl+E
-
+
删除当前单词
-
+
Ctrl+Shift+D
-
+
删除到行尾
-
+
Ctrl+Del
-
+
删除到行首
@@ -5027,27 +5039,27 @@ Are you really want to continue?
C/C++参考
-
+
EGE图形库手册
-
+
添加书签
-
+
删除书签
-
+
修改书签说明
-
+
在文件视图中定位
@@ -5056,47 +5068,47 @@ Are you really want to continue?
打开文件夹
-
+
运行参数...
-
+
文件编码
-
+
文件历史
-
-
-
-
-
-
+
+
+
+
+
+
正在调试
-
-
-
-
-
-
+
+
+
+
+
+
正在运行
-
-
-
-
-
-
+
+
+
+
+
+
正在编译
@@ -5105,203 +5117,203 @@ Are you really want to continue?
行:%1 列:%2 已选择:%3 总行数:%4 总长度:%5
-
+
Line: %1 Col: %2 Selected: %3 Lines: %4 Length: %5
行: %1 列: %2 已选择 :%3 总行数: %4 总长度: %5
-
+
只读
-
+
插入
-
+
覆写
-
+
关闭项目
-
+
你确定要关闭'%1'吗?
-
-
+
+
确认
-
-
-
+
+
+
源文件尚未编译。
-
-
+
+
现在编译?
-
-
+
+
源文件比可执行程序新。
-
+
重新编译?
-
+
无编译器设置
-
+
没有配置编译器设置。
-
+
无法启动调试器
-
-
+
+
启用调试参数
-
-
+
+
当前编译设置中未启用调试选项(-g3),或启用了信息剥除选项(-s)<br /><br/>是否纠正这一问题?
-
+
项目尚未构建
-
+
项目尚未构建。是否构建?
-
+
宿主程序不存在
-
+
动态链接库(DLL)需要一个宿主程序来运行。
-
+
但它不存在。
-
+
宿主程序不存在
-
+
宿主程序'%1'不存在。
-
+
重新编译?
-
-
+
+
保存上次打开信息失败
-
+
无法删除旧上次打开信息文件'%1'
-
+
无法保存上次打开信息文件'%1'
-
+
载入上次打开信息失败
-
+
无法载入上次打开信息文件'%1'
-
+
打开源代码文件
-
-
+
+
批量设置案例
-
+
显示详细调试器日志
-
+
全部复制
-
-
+
-
-
-
+
+
+
+
清除
-
+
导出
-
+
插入代码段
-
-
+
+
试题集%1
@@ -5322,68 +5334,68 @@ Are you really want to continue?
或者选择使用其他的网络端口。
-
-
+
+
重新构建项目
-
-
+
+
项目已经被修改过,是否需要重新构建?
-
+
自动保存出错
-
+
自动保存"%1"到"%2"失败:%3
-
+
试题属性...
-
+
设置试题集名称
-
+
试题集名称:
-
+
删除
-
+
删除全部书签
-
+
修改描述
-
-
-
+
+
+
书签描述
-
-
-
+
+
+
描述:
@@ -5392,173 +5404,173 @@ Are you really want to continue?
在调试主控台中显示调试器输出
-
+
清除这次搜索
-
+
删除所有搜索
-
+
断点条件...
-
+
断点条件
-
+
输入当前断点的生效条件:
-
+
Remove all breakpoints
删除所有断点
-
+
删除当前断点
-
+
重命名文件
-
-
+
+
添加文件夹
-
+
新文件夹
-
+
文件夹:
-
+
重命名
-
+
运行当前案例
-
+
删除文件夹
-
+
切换为普通视图
-
+
切换为自定义视图
-
+
按类型排序
-
+
按名称排序
-
+
显示继承的成员
-
+
跳转到声明处
-
+
跳转到定义处
-
-
+
+
新建文件夹
-
-
-
-
+
+
+
+
删除
-
+
在编辑器中打开
-
+
使用外部程序打开
-
+
在终端中打开
-
+
在Windows浏览器中打开
-
+
字符集
-
+
转换为%1编码
-
+
已自动保存%1个文件
-
+
设置答案源代码...
-
+
选择其他文件...
-
+
选择答案源代码文件
@@ -5568,83 +5580,83 @@ Are you really want to continue?
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
新建文件夹%1
-
+
无标题
-
+
无标题%1
-
+
你真的要删除%1吗?
-
+
你真的要删除%1个文件吗?
-
+
保存项目
-
+
项目'%1'有改动。
-
-
+
+
需要保存吗?
-
-
+
+
文件已发生变化
-
+
新建项目文件?
-
+
您是否要将新建的文件加入项目?
-
-
-
-
+
+
+
+
保存失败
-
+
改变项目编译器配置集
-
+
改变项目的编译器配置集会导致所有的自定义编译器选项被重置。
-
-
+
+
你真的想要那么做吗?
@@ -5653,171 +5665,171 @@ Are you really want to continue?
批量设置案例
-
+
选择输入数据文件
-
+
输入数据文件 (*.in)
-
+
您真的要清除该文件的所有断点吗?
-
+
新建项目
-
+
关闭'%1'以打开新项目?
-
+
文件夹不存在
-
+
文件夹'%1'不存在。是否创建?
-
+
无法创建文件夹
-
+
创建文件夹'%1'失败。
-
+
-
+
文件夹%1不是空的。
-
+
你真的要删除它吗?
-
+
改变工作文件夹
-
+
File '%1' is not in the current working folder
文件'%1'不在当前工作文件夹中。
-
+
是否将工作文件夹改设为'%1'?
-
+
无法提交
-
+
Git需要用信息进行提交。
-
+
选择输入数据文件
-
-
+
+
所有文件 (*.*)
-
+
Choose Expected Input Data File
选择期望输出文件
-
-
-
+
+
+
第%1行
-
-
+
+
选择工作文件夹
-
-
+
+
头文件已存在
-
-
+
+
头文件"%1"已存在!
-
+
源文件已存在!
-
+
源文件"%1"已存在!
-
+
无法提交!
-
+
下列文件处于冲突状态,请解决后重新添加和提交:
-
+
提交信息
-
+
提交信息:
-
+
提交失败
-
+
提交信息不能为空!
@@ -5826,251 +5838,254 @@ Are you really want to continue?
小熊猫Dev-C++项目文件 (*.dev)
-
+
新建项目失败
-
+
无法使用模板创建项目
-
+
删除文件
-
+
同时从硬盘上删除文件?
-
+
无标题
-
+
新的项目文件名
-
+
文件名:
-
+
文件已存在!
-
+
文件'%1'已经存在!
-
+
添加到项目
-
+
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
本操作会删除此试题的所有案例。
-
+
小熊猫C++项目文件(*.dev)
-
+
重命名出错
-
+
符号'%1'在系统头文件中定义,无法修改。
-
+
新名称
-
-
+
+
替换出错
-
+
无法打开文件'%1'进行替换!
-
+
内容和上次查找时不一致。
-
+
RTF格式文件 (*.rtf)
-
+
HTML文件 (*.html)
-
+
当前的试题集不是空的。
-
+
试题%1
-
-
+
+
试题集文件 (*.pbs)
-
+
载入失败
-
-
+
+
试题案例%1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
错误
-
+
项目历史
-
+
载入主题失败
-
-
+
+
清除历史
-
-
+
+
版本控制
-
+
磁盘文件'%1'已被修改。
-
+
是否重新读取它的内容?
-
+
磁盘文件'%1'已被删除。
-
+
是否保持它在小熊猫C++中打开的编辑窗口?
-
+
打开
-
+
编译失败
-
+
运行失败
-
-
-
+
+
+
+
确认转换
-
-
-
+
+
+
+
当前编辑器中的文件将会使用%1编码保存。<br />这项操作无法被撤回。<br />你确定要继续吗?
-
+
新监视表达式
-
+
输入监视表达式
-
+
(%1/%2)正在解析文件"%3"
-
-
+
+
完成%1个文件的解析,用时%2秒
-
+
(每秒%1个文件)
@@ -6233,7 +6248,7 @@ Are you really want to continue?
缺省
-
+
选择文件夹
@@ -6289,27 +6304,27 @@ Are you really want to continue?
OJProblemCasesRunner
-
+
案例运行超时
-
+
无法启动程序运行进程'%1'。
-
+
waitFor()函数等待超时。
-
+
在向程序运行进程写入内容时出错。
-
+
在从程序运行进程读取内容时出错。
@@ -6376,93 +6391,93 @@ Are you really want to continue?
无标题
-
+
无法保存文件
-
+
无法保存文件'%1'.
-
+
载入文件错误
-
+
文件已存在
-
+
文件'%1'已在项目中
-
+
项目已升级
-
+
已成功将项目升级到新的格式
-
+
旧项目文件备份在'%1'。
-
+
头文件
-
+
源文件
-
+
其他文件
-
+
设置需要更新
-
+
The compiler settings format of Dev-C++ has changed.
小熊猫C++的编译器设置格式已发生改变。
-
+
请在项目 >> 项目属性 >> 编译器设置中修改您的设置并保存您的项目
-
+
未找到编译器
-
+
您为该项目设置的编译器不存在。
-
+
它将会被全局编译器设置代替。
-
+
Developed using the Red Panda Dev-C++ IDE
使用小熊猫C++编辑器开发
@@ -6881,32 +6896,32 @@ Are you really want to continue?
ProjectModel
-
+
文件已存在
-
+
文件'%1'已存在。是否删除?
-
+
删除失败
-
+
无法删除文件'%1'
-
+
改名失败
-
+
无法将文件'%1'改名为'%2'
@@ -7271,142 +7286,142 @@ Are you really want to continue?
调试器
-
+
C语言选项
-
+
支持所有ANSI标准C程序(-ansi)
-
+
不支持将asm、inline和typeof作为关键字(-fno-asm)
-
+
模仿传统C预处理器行为(-traditional-cpp)
-
+
代码生成
-
+
生成特定机器的专用指令(-march)
-
+
完整兼容特定机器,较少优化(-tune)
-
+
启用特定指令集(-mx)
-
+
优化级别(-Ox)
-
+
使用下列指针大小编译(-mx)
-
+
语言标准(-std)
-
+
性能分析
-
+
生成调试信息(-g3)
-
+
您同意小熊猫C++在PATH路径中寻找gcc编译器吗?
-
+
生成性能分析信息(-pg)
-
+
代码警告
-
+
忽略所有警告信息(-w)
-
+
启用常见问题警告(-Wall)
-
+
启用更多问题警告(-Wextra)
-
+
检查ISO C/C++/C++0x语法一致性(-pedantic)
-
+
只进行语法检查(不编译)(-fsyntax-only)
-
+
将警告作为错误处理(-Werror)
-
+
遇到第一个错误后立即中止编译(-Wfatal-errors)
-
+
链接器
-
+
链接Objective-C程序 (-lobjc)
-
+
不使用标准库和系统启动文件(-nostdlib)
-
+
不产生控制台窗口(-mwindows)
-
+
剥除附加信息(-s)
@@ -7415,54 +7430,54 @@ Are you really want to continue?
链接Ojbective C程序(-lobjc)
-
+
输出
-
+
在生成的汇编代码中加入注释(-fverbose-asm)
-
+
编译时使用管道而不是临时文件(-pipe)
-
+
只生成汇编代码(-S)
-
-
+
+
确认
-
+
在验证编译器设置"%1"时遇到了下列问题:
-
+
是否让小熊猫C++删除这些配置,并尝试重新建立配置?
-
+
如果仍然保留这些设置,可能会导致编译错误。<br /><br />请选择“是”,除非您清楚的知道选择“否”的后果,
-
-
+
+
未配置编译器设置。
-
+
您需要小熊猫C++在下列位置搜索编译器吗:<br />%1<br />%2
@@ -7488,13 +7503,13 @@ Are you really want to continue?
-
+
否
-
+
是
@@ -7813,12 +7828,12 @@ Are you really want to continue?
无标题
-
+
构造函数
-
+
析构函数
@@ -8301,7 +8316,7 @@ Are you really want to continue?
自动链接
-
+
@@ -8377,15 +8392,15 @@ Are you really want to continue?
杂项
-
-
+
+
程序运行
-
+
试题集
@@ -8631,6 +8646,19 @@ Are you really want to continue?
写入符号使用数据文件"%1"。
+
+ SynDocument
+
+
+
+ 无法读取文件'%1'!
+
+
+
+
+ 无法写入文件'%2'!
+
+
SynEdit
@@ -8643,14 +8671,12 @@ Are you really want to continue?
SynEditStringList
-
- 无法读取文件'%1'!
+ 无法读取文件'%1'!
-
- 无法写入文件'%2'!
+ 无法写入文件'%2'!
diff --git a/RedPandaIDE/RedPandaIDE_zh_TW.ts b/RedPandaIDE/RedPandaIDE_zh_TW.ts
index 75cca408..2c255fa3 100644
--- a/RedPandaIDE/RedPandaIDE_zh_TW.ts
+++ b/RedPandaIDE/RedPandaIDE_zh_TW.ts
@@ -469,18 +469,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1343,6 +1331,10 @@
+
+
+
+
EditorSnippetWidget
@@ -4444,6 +4436,14 @@
+
+
+
+
+
+
+
+
NewClassDialog
@@ -6252,14 +6252,7 @@
- SynEdit
-
-
-
-
-
-
- SynEditStringList
+ SynDocument
@@ -6269,6 +6262,13 @@
+
+ SynEdit
+
+
+
+
+
TodoModel
diff --git a/RedPandaIDE/mainwindow.cpp b/RedPandaIDE/mainwindow.cpp
index 72e805ff..4d8a5f7a 100644
--- a/RedPandaIDE/mainwindow.cpp
+++ b/RedPandaIDE/mainwindow.cpp
@@ -388,11 +388,13 @@ void MainWindow::updateForEncodingInfo(bool clear) {
ui->actionAuto_Detect->setChecked(editor->encodingOption() == ENCODING_AUTO_DETECT);
ui->actionEncode_in_ANSI->setChecked(editor->encodingOption() == ENCODING_SYSTEM_DEFAULT);
ui->actionEncode_in_UTF_8->setChecked(editor->encodingOption() == ENCODING_UTF8);
+ ui->actionEncode_in_UTF_8->setChecked(editor->encodingOption() == ENCODING_UTF8_BOM);
} else {
mFileEncodingStatus->setText("");
ui->actionAuto_Detect->setChecked(false);
ui->actionEncode_in_ANSI->setChecked(false);
ui->actionEncode_in_UTF_8->setChecked(false);
+ ui->actionEncode_in_UTF_8_BOM->setChecked(false);
}
}
@@ -409,9 +411,11 @@ void MainWindow::updateEditorActions()
ui->actionAuto_Detect->setEnabled(false);
ui->actionEncode_in_ANSI->setEnabled(false);
ui->actionEncode_in_UTF_8->setEnabled(false);
+ ui->actionEncode_in_UTF_8_BOM->setEnabled(false);
mMenuEncoding->setEnabled(false);
ui->actionConvert_to_ANSI->setEnabled(false);
ui->actionConvert_to_UTF_8->setEnabled(false);
+ ui->actionConvert_to_UTF_8_BOM->setEnabled(false);
ui->actionCopy->setEnabled(false);
ui->actionCut->setEnabled(false);
ui->actionFoldAll->setEnabled(false);
@@ -454,10 +458,12 @@ void MainWindow::updateEditorActions()
ui->actionAuto_Detect->setEnabled(true);
ui->actionEncode_in_ANSI->setEnabled(true);
ui->actionEncode_in_UTF_8->setEnabled(true);
+ ui->actionEncode_in_UTF_8_BOM->setEnabled(true);
mMenuEncoding->setEnabled(true);
ui->actionConvert_to_ANSI->setEnabled(e->encodingOption()!=ENCODING_SYSTEM_DEFAULT
&& e->fileEncoding()!=ENCODING_SYSTEM_DEFAULT);
ui->actionConvert_to_UTF_8->setEnabled(e->encodingOption()!=ENCODING_UTF8 && e->fileEncoding()!=ENCODING_UTF8);
+ ui->actionConvert_to_UTF_8_BOM->setEnabled(e->encodingOption()!=ENCODING_UTF8_BOM && e->fileEncoding()!=ENCODING_UTF8_BOM);
ui->actionCopy->setEnabled(e->selAvail());
ui->actionCut->setEnabled(e->selAvail());
@@ -2671,11 +2677,13 @@ void MainWindow::buildEncodingMenu()
mMenuEncoding->addAction(ui->actionAuto_Detect);
mMenuEncoding->addAction(ui->actionEncode_in_ANSI);
mMenuEncoding->addAction(ui->actionEncode_in_UTF_8);
+ mMenuEncoding->addAction(ui->actionEncode_in_UTF_8_BOM);
mMenuEncoding->addMenu(menuCharsets);
mMenuEncoding->addSeparator();
mMenuEncoding->addAction(ui->actionConvert_to_ANSI);
mMenuEncoding->addAction(ui->actionConvert_to_UTF_8);
+ mMenuEncoding->addAction(ui->actionConvert_to_UTF_8_BOM);
QList charsetsForLocale = pCharsetInfoManager->findCharsetByLocale(pCharsetInfoManager->localeName());
@@ -2702,6 +2710,7 @@ void MainWindow::buildEncodingMenu()
ui->actionAuto_Detect->setCheckable(true);
ui->actionEncode_in_ANSI->setCheckable(true);
ui->actionEncode_in_UTF_8->setCheckable(true);
+ ui->actionEncode_in_UTF_8_BOM->setCheckable(true);
}
void MainWindow::maximizeEditor()
@@ -7656,3 +7665,30 @@ void MainWindow::on_actionMove_Selection_Down_triggered()
editor->moveSelDown();
}
}
+
+void MainWindow::on_actionConvert_to_UTF_8_BOM_triggered()
+{
+ Editor * editor = mEditorList->getEditor();
+ if (editor == nullptr)
+ return;
+ if (QMessageBox::warning(this,tr("Confirm Convertion"),
+ tr("The editing file will be saved using %1 encoding.
This operation can't be reverted.
Are you sure to continue?")
+ .arg(ENCODING_UTF8_BOM),
+ QMessageBox::Yes, QMessageBox::No)!=QMessageBox::Yes)
+ return;
+ editor->convertToEncoding(ENCODING_UTF8_BOM);
+}
+
+
+void MainWindow::on_actionEncode_in_UTF_8_BOM_triggered()
+{
+ Editor * editor = mEditorList->getEditor();
+ if (editor == nullptr)
+ return;
+ try {
+ editor->setEncodingOption(ENCODING_UTF8_BOM);
+ } catch(FileError e) {
+ QMessageBox::critical(this,tr("Error"),e.reason());
+ }
+}
+
diff --git a/RedPandaIDE/mainwindow.h b/RedPandaIDE/mainwindow.h
index 4d804e86..1e975b35 100644
--- a/RedPandaIDE/mainwindow.h
+++ b/RedPandaIDE/mainwindow.h
@@ -668,6 +668,10 @@ private slots:
void on_actionMove_Selection_Down_triggered();
+ void on_actionConvert_to_UTF_8_BOM_triggered();
+
+ void on_actionEncode_in_UTF_8_BOM_triggered();
+
private:
Ui::MainWindow *ui;
EditorList *mEditorList;
diff --git a/RedPandaIDE/mainwindow.ui b/RedPandaIDE/mainwindow.ui
index c8f6981b..8805ad1e 100644
--- a/RedPandaIDE/mainwindow.ui
+++ b/RedPandaIDE/mainwindow.ui
@@ -545,7 +545,7 @@
QTabWidget::South
- 3
+ 4
@@ -3042,6 +3042,16 @@
Ctrl+Shift+Down
+
+
+ Convert to UTF-8 BOM
+
+
+
+
+ Encode in UTF-8 BOM
+
+
diff --git a/RedPandaIDE/settingsdialog/editormiscwidget.cpp b/RedPandaIDE/settingsdialog/editormiscwidget.cpp
index 58fc28d1..a4ac663a 100644
--- a/RedPandaIDE/settingsdialog/editormiscwidget.cpp
+++ b/RedPandaIDE/settingsdialog/editormiscwidget.cpp
@@ -47,7 +47,8 @@ void EditorMiscWidget::doLoad()
QByteArray defaultEncoding = pSettings->editor().defaultEncoding();
if (defaultEncoding == ENCODING_AUTO_DETECT
|| defaultEncoding == ENCODING_SYSTEM_DEFAULT
- || defaultEncoding == ENCODING_UTF8) {
+ || defaultEncoding == ENCODING_UTF8
+ || defaultEncoding == ENCODING_UTF8_BOM) {
int index =ui->cbEncoding->findData(defaultEncoding);
ui->cbEncoding->setCurrentIndex(index);
ui->cbEncodingDetail->clear();
@@ -89,6 +90,7 @@ void EditorMiscWidget::init()
ui->cbEncoding->clear();
ui->cbEncoding->addItem(tr("ANSI"),ENCODING_SYSTEM_DEFAULT);
ui->cbEncoding->addItem(tr("UTF-8"),ENCODING_UTF8);
+ ui->cbEncoding->addItem(tr("UTF-8 BOM"),ENCODING_UTF8_BOM);
foreach (const QString& langName, pCharsetInfoManager->languageNames()) {
ui->cbEncoding->addItem(langName,langName);
}
@@ -100,7 +102,8 @@ void EditorMiscWidget::on_cbEncoding_currentTextChanged(const QString &/*arg1*/)
QString userData = ui->cbEncoding->currentData().toString();
if (userData == ENCODING_AUTO_DETECT
|| userData == ENCODING_SYSTEM_DEFAULT
- || userData == ENCODING_UTF8) {
+ || userData == ENCODING_UTF8
+ || userData == ENCODING_UTF8_BOM) {
ui->cbEncodingDetail->setVisible(false);
ui->cbEncodingDetail->clear();
} else {
diff --git a/RedPandaIDE/systemconsts.cpp b/RedPandaIDE/systemconsts.cpp
index 2322aaa8..1d686612 100644
--- a/RedPandaIDE/systemconsts.cpp
+++ b/RedPandaIDE/systemconsts.cpp
@@ -37,6 +37,7 @@ SystemConsts::SystemConsts(): mDefaultFileFilters()
mCodecNames.append(ENCODING_AUTO_DETECT);
mCodecNames.append(ENCODING_SYSTEM_DEFAULT);
mCodecNames.append(ENCODING_UTF8);
+ mCodecNames.append(ENCODING_UTF8_BOM);
QStringList codecNames;
QSet codecAlias;
codecAlias.insert("system");