diff --git a/NEWS.md b/NEWS.md
index 7572ee94..4140fab4 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -12,6 +12,7 @@ Red Panda C++ Version 1.5
- enhancement: save project's bookmark in it's own bookmark file
- enhancement: project and non-project files use different bookmark view (auto switch when switch editors)
- enhancement: auto merge when save bookmarks.
+ - enhancement: add option "max undo memory usage" in the options / editor / misc page
Red Panda C++ Version 1.4
diff --git a/RedPandaIDE/editor.cpp b/RedPandaIDE/editor.cpp
index ec15e359..eaab8128 100644
--- a/RedPandaIDE/editor.cpp
+++ b/RedPandaIDE/editor.cpp
@@ -4554,6 +4554,7 @@ void Editor::applySettings()
}
this->setUndoLimit(pSettings->editor().undoLimit());
+ this->setUndoMemoryUsage(pSettings->editor().undoMemoryUsage());
setMouseWheelScrollSpeed(pSettings->editor().mouseWheelScrollSpeed());
setMouseSelectionScrollSpeed(pSettings->editor().mouseSelectionScrollSpeed());
diff --git a/RedPandaIDE/settings.cpp b/RedPandaIDE/settings.cpp
index ad7b32c1..e02fcef5 100644
--- a/RedPandaIDE/settings.cpp
+++ b/RedPandaIDE/settings.cpp
@@ -652,6 +652,16 @@ void Settings::Editor::setUndoLimit(int newUndoLimit)
mUndoLimit = newUndoLimit;
}
+int Settings::Editor::undoMemoryUsage() const
+{
+ return mUndoMemoryUsage;
+}
+
+void Settings::Editor::setUndoMemoryUsage(int newUndoMemoryUsage)
+{
+ mUndoMemoryUsage = newUndoMemoryUsage;
+}
+
bool Settings::Editor::highlightCurrentWord() const
{
return mHighlightCurrentWord;
@@ -1231,6 +1241,7 @@ void Settings::Editor::doSave()
saveValue("default_file_cpp",mDefaultFileCpp);
saveValue("auto_detect_file_encoding",mAutoDetectFileEncoding);
saveValue("undo_limit",mUndoLimit);
+ saveValue("undo_memory_usage", mUndoMemoryUsage);
//tooltips
saveValue("enable_tooltips",mEnableTooltips);
@@ -1371,7 +1382,8 @@ void Settings::Editor::doLoad()
else
mDefaultEncoding = value("default_encoding", ENCODING_UTF8).toByteArray();
mAutoDetectFileEncoding = boolValue("auto_detect_file_encoding",true);
- mUndoLimit = intValue("undo_limit",0);
+ mUndoLimit = intValue("undo_limit",5000);
+ mUndoMemoryUsage = intValue("undo_memory_usage", 50);
//tooltips
mEnableTooltips = boolValue("enable_tooltips",true);
diff --git a/RedPandaIDE/settings.h b/RedPandaIDE/settings.h
index 362db218..f3ceea34 100644
--- a/RedPandaIDE/settings.h
+++ b/RedPandaIDE/settings.h
@@ -367,6 +367,9 @@ public:
int undoLimit() const;
void setUndoLimit(int newUndoLimit);
+ int undoMemoryUsage() const;
+ void setUndoMemoryUsage(int newUndoMemoryUsage);
+
private:
//General
// indents
@@ -474,6 +477,7 @@ public:
bool mAutoLoadLastFiles;
bool mDefaultFileCpp;
int mUndoLimit;
+ int mUndoMemoryUsage;
//hints tooltip
diff --git a/RedPandaIDE/settingsdialog/editormiscwidget.cpp b/RedPandaIDE/settingsdialog/editormiscwidget.cpp
index 5f75284a..5efa26cd 100644
--- a/RedPandaIDE/settingsdialog/editormiscwidget.cpp
+++ b/RedPandaIDE/settingsdialog/editormiscwidget.cpp
@@ -65,6 +65,7 @@ void EditorMiscWidget::doLoad()
ui->cbEncodingDetail->setCurrentText(defaultEncoding);
}
ui->spinMaxUndo->setValue(pSettings->editor().undoLimit());
+ ui->spinMaxUndoMemory->setValue(pSettings->editor().undoMemoryUsage());
}
void EditorMiscWidget::doSave()
@@ -80,6 +81,7 @@ void EditorMiscWidget::doSave()
pSettings->editor().setDefaultEncoding(ui->cbEncoding->currentData().toByteArray());
}
pSettings->editor().setUndoLimit(ui->spinMaxUndo->value());
+ pSettings->editor().setUndoMemoryUsage(ui->spinMaxUndoMemory->value());
pSettings->editor().save();
pMainWindow->updateEditorSettings();
}
diff --git a/RedPandaIDE/settingsdialog/editormiscwidget.ui b/RedPandaIDE/settingsdialog/editormiscwidget.ui
index c63dd2db..3c8b2b35 100644
--- a/RedPandaIDE/settingsdialog/editormiscwidget.ui
+++ b/RedPandaIDE/settingsdialog/editormiscwidget.ui
@@ -7,7 +7,7 @@
0
0
515
- 300
+ 315
@@ -89,6 +89,57 @@
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Max Undo Memory Usage
+
+
+
+ -
+
+
+ MB
+
+
+ 100
+
+
+ 50
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
-
diff --git a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
index e852f6b5..7faaf51f 100644
--- a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
@@ -206,67 +206,67 @@
CharsetInfoManager
- Árabe
+ Árabe
- Grego
+ Grego
- Báltico
+ Báltico
- Europa Ocidental
+ Europa Ocidental
- Europa Central
+ Europa Central
- Cirílico
+ Cirílico
- Turco
+ Turco
- Europa setentrional
+ Europa setentrional
- Hebraico
+ Hebraico
- Tailandês
+ Tailandês
- Japonês
+ Japonês
- Chinês
+ Chinês
- Coreano
+ Coreano
- Vietnamês
+ Vietnamês
- Europa Oriental
+ Europa Oriental
- Celta
+ Celta
@@ -1371,6 +1371,14 @@
UTF-8 BOM
+
+
+
+
+
+
+ MB
+
EditorSnippetWidget
@@ -5698,15 +5706,15 @@
- Impossível gravar no arquivo '%1'!
+ Impossível gravar no arquivo '%1'!
- Falha ao gravar dados.
+ Falha ao gravar dados.
- Sem nome
+ Sem nome
@@ -5934,7 +5942,7 @@
- Índice %1 fora dos limites
+ Índice %1 fora dos limites
@@ -6474,18 +6482,18 @@
SynDocument
- Impossível ler o arquivo '%1'!
+ Impossível ler o arquivo '%1'!
- Impossível gravar no arquivo '%1'!
+ Impossível gravar no arquivo '%1'!
SynEdit
- A colocação de destaques parece estar em repetição infinita
+ A colocação de destaques parece estar em repetição infinita
diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
index 9f0e7880..f2ee00bb 100644
--- a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
@@ -160,27 +160,27 @@ p, li { white-space: pre-wrap; }
AutolinkModel
-
+
头文件
-
+
UTF-8
-
+
链接参数
-
+
头文件已存在
-
+
头文件已存在。
@@ -188,17 +188,17 @@ p, li { white-space: pre-wrap; }
BacktraceModel
-
+
函数
-
+
文件名
-
+
行
@@ -206,37 +206,37 @@ p, li { white-space: pre-wrap; }
BookmarkModel
-
+
保存文件'%1'失败。
-
+
无法写入文件'%1'.
-
+
JSON文件'%1':%2中存在错误:%3
-
+
无法读取文件'%1'.
-
+
描述
-
+
行
-
+
文件名
@@ -244,37 +244,37 @@ p, li { white-space: pre-wrap; }
BreakpointModel
-
+
文件名
-
+
行
-
+
条件
-
+
保存文件'%1'失败。
-
+
无法写入文件'%1'.
-
+
JSON文件'%1':%2中存在错误:%3
-
+
无法读取文件'%1'.
@@ -322,115 +322,68 @@ p, li { white-space: pre-wrap; }
CharsetInfoManager
-
-
-
- 阿拉伯语系
+ 阿拉伯语系
-
-
-
-
- 希腊语系
+ 希腊语系
-
-
-
-
- 巴尔干语系
+ 巴尔干语系
-
-
-
-
-
-
-
- 西欧语言
+ 西欧语言
-
-
- 中欧语言
+ 中欧语言
-
-
-
-
-
-
-
- 西里尔语系
+ 西里尔语系
-
-
-
-
- 土耳其语系
+ 土耳其语系
-
-
- 北欧语系
+ 北欧语系
-
-
-
- 希伯来语
+ 希伯来语
-
- 泰语
+ 泰语
-
-
- 日语
+ 日语
-
-
-
- 中文
+ 中文
-
-
- 韩语
+ 韩语
-
- 越南语
+ 越南语
-
- 东欧语系
+ 东欧语系
-
- 凯尔特语系
+ 凯尔特语系
@@ -579,57 +532,57 @@ p, li { white-space: pre-wrap; }
Compiler
-
+
重编译前的清理准备工作失败!
-
+
编译结果:
-
+
- 错误数: %1
-
+
- 警告数: %1
-
+
- 输出文件名: %1
-
+
- 输出文件大小: %1
-
+
- 编译时间: %1 秒
-
+
[错误]
-
+
[警告]
-
+
[信息]
-
+
[说明]
@@ -701,7 +654,7 @@ p, li { white-space: pre-wrap; }
...
-
+
保存失败。
@@ -710,28 +663,28 @@ p, li { white-space: pre-wrap; }
CompilerManager
-
-
-
-
+
+
+
+
无编译器设置
-
-
-
-
+
+
+
+
没有配置编译器设置。
-
-
-
-
+
+
+
+
无法启动调试器
@@ -748,12 +701,12 @@ p, li { white-space: pre-wrap; }
程序中的文字内容可能无法被正确处理和显示。
-
+
找不到Console Pauser程序
-
+
找不到Console Pauser程序"%1"!
@@ -788,7 +741,7 @@ p, li { white-space: pre-wrap; }
删除非法文件夹
-
+
选择文件夹
@@ -1196,17 +1149,17 @@ Are you really want to continue?
Debugger
-
+
无编译器设置
-
+
没有配置编译器设置。
-
+
无法启动调试器
@@ -1219,42 +1172,42 @@ Are you really want to continue?
调试器路径"%1"中包含非ASCII字符(如,中文字符)
-
+
这会导致调试器无法启动。
-
+
找不到调试器
-
+
找不到调试器程序"%1"
-
+
gdb server路径错误
-
+
gdb server的路径"%1"包含中文或者全角字符
-
+
找不到gdb server
-
+
无法在"%1"找到gdb server
-
+
执行以求值
@@ -1263,22 +1216,22 @@ Are you really want to continue?
不在当前语境中
-
+
编译
-
+
源文件比程序文件新。
-
+
重新编译?
-
+
收到信号"%1":
@@ -1286,7 +1239,7 @@ Are you really want to continue?
Editor
-
+
无标题
@@ -1299,13 +1252,13 @@ Are you really want to continue?
失败
-
-
-
-
-
-
-
+
+
+
+
+
+
+
错误
@@ -1314,44 +1267,44 @@ Are you really want to continue?
无法写入文件"%1"
-
+
另存为
-
+
文件%1已经被打开!
-
+
要复制的内容超过了行数限制!
-
+
要复制的内容超过了字符数限制!
-
+
要剪切的内容超过了行数限制!
-
+
要剪切的内容超过了字符数限制!
-
+
打印文档
-
-
-
+
+
+
Ctrl+单击以获取更多信息
@@ -1360,27 +1313,27 @@ Are you really want to continue?
未找到符号'%1'!
-
+
找不到astyle程序
-
+
找不到astyle程序"%1".
-
+
断点条件
-
+
输入当前断点的生效条件:
-
+
只读
@@ -1715,55 +1668,55 @@ Are you really want to continue?
背景色
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
错误
-
+
打开
-
-
+
+
配色方案文件 (*.scheme)
-
+
'%1'不是合法的配色方案文件名。
-
+
新方案名
-
+
'%1'不是合法的配色方案名!
-
+
保存
-
+
确认删除方案
-
+
配色方案'%1'将会被删除!<br />您确认要继续吗?
@@ -1906,37 +1859,47 @@ Are you really want to continue?
最大可撤销编辑操作数量
-
+
+
+ 最大可撤销编辑操作占用内存
+
+
+
+
+ MB
+
+
+
缺省文件编码
-
+
缺省文件类型
-
+
C++语言文件
-
+
C语言文件
-
+
ANSI
-
+
UTF-8
-
+
UTF-8 BOM
@@ -2311,27 +2274,27 @@ Are you really want to continue?
EnvironmentShortcutModel
-
+
动作
-
+
错误
-
+
快捷键“%1”已经被“%2”使用了。
-
+
功能
-
+
快捷键
@@ -2508,18 +2471,18 @@ Are you really want to continue?
FileAssociationModel
-
+
注册文件类型关联失败
-
-
+
+
没有权限进行文件类型注册!
-
+
注册文件类型失败
@@ -3393,22 +3356,22 @@ Are you really want to continue?
标签(Tag)
-
+
将"%1"回滚(Reset)到这里...
-
+
将"%1"撤销(Revert)到这里...
-
+
在此版本创建分支(Branch)...
-
+
在此版本创建标签(Tag)...
@@ -3416,17 +3379,17 @@ Are you really want to continue?
GitLogModel
-
+
日期
-
+
作者
-
+
title
标题
@@ -3725,22 +3688,22 @@ Are you really want to continue?
IssuesModel
-
+
文件名
-
+
行
-
+
列
-
+
描述
@@ -3748,22 +3711,22 @@ Are you really want to continue?
IssuesTable
-
+
文件名
-
+
行
-
+
列
-
+
描述
@@ -3865,18 +3828,18 @@ Are you really want to continue?
MainWindow
-
+
小熊猫C++
-
-
-
-
-
-
-
+
+
+
+
+
+
+
编译器
@@ -3895,8 +3858,8 @@ Are you really want to continue?
工具
-
-
+
+
运行
@@ -3907,26 +3870,26 @@ Are you really want to continue?
-
-
+
+
项目
-
-
+
+
监视
-
-
+
+
结构
-
-
+
+
文件
@@ -3936,68 +3899,68 @@ Are you really want to continue?
-
-
-
-
+
+
+
+
调试
-
+
求值
-
-
+
+
调试主控台
-
+
调用栈
-
+
断点
-
+
局部变量
-
-
+
+
查找
-
+
历史:
-
+
重新查找
-
+
替换为:
-
+
替换
-
+
关闭
@@ -4026,83 +3989,83 @@ Are you really want to continue?
工具栏2
-
+
新建
-
+
Ctrl+N
-
+
打开...
-
+
Ctrl+O
-
+
保存
-
+
Ctrl+S
-
+
另存为...
-
+
另存为
-
+
全部保存
-
+
Ctrl+Shift+S
-
+
选项
-
-
-
-
+
+
+
+
编译
-
-
+
+
工具输出
-
-
+
+
选择输入文件
-
+
...
@@ -4122,312 +4085,312 @@ Are you really want to continue?
选择
-
+
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
-
+
输出
-
+
输入
-
+
期望输出
@@ -4466,391 +4429,391 @@ 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编码
-
+
编译器选项...
-
+
切换管理器面板
-
+
Ctrl+F9
-
+
切换消息面板
-
+
Ctrl+F10
-
+
Raylib教程
-
+
选中当前单词
-
+
跳转到行...
-
+
新建模板...
-
+
从项目创建模板
@@ -4859,199 +4822,199 @@ Are you really want to continue?
保存为模板...
-
+
新建文件
-
+
添加到项目...
-
+
从项目删除
-
+
查看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+]
@@ -5060,50 +5023,50 @@ Are you really want to continue?
工具窗口栏
-
+
状态栏
-
+
Ctrl+Backspace
-
+
中断
-
-
+
+
删除到单词开头
-
+
Ctrl+Shift+B
-
+
删除到单词结尾
-
+
Ctrl+Shift+E
-
+
Add Class...
新建类...
-
-
+
+
New Header
新建头文件...
@@ -5113,47 +5076,47 @@ Are you really want to continue?
插入行
-
+
删除当前行
-
+
Ctrl+D
-
+
复制当前行
-
+
Ctrl+E
-
+
删除当前单词
-
+
Ctrl+Shift+D
-
+
删除到行尾
-
+
Ctrl+Del
-
+
删除到行首
@@ -5162,27 +5125,27 @@ Are you really want to continue?
C/C++参考
-
+
EGE图形库手册
-
+
添加书签
-
+
删除书签
-
+
修改书签说明
-
+
在文件视图中定位
@@ -5191,47 +5154,47 @@ Are you really want to continue?
打开文件夹
-
+
运行参数...
-
+
文件编码
-
+
文件历史
-
-
-
-
-
-
+
+
+
+
+
+
正在调试
-
-
-
-
-
-
+
+
+
+
+
+
正在运行
-
-
-
-
-
-
+
+
+
+
+
+
正在编译
@@ -5240,223 +5203,223 @@ 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已存在。是否覆盖?
-
-
-
-
-
-
+
+
+
+
+
+
清除
-
+
导出
-
+
插入代码段
-
-
+
+
试题集%1
@@ -5477,68 +5440,68 @@ Are you really want to continue?
或者选择使用其他的网络端口。
-
-
+
+
重新构建项目
-
-
+
+
项目已经被修改过,是否需要重新构建?
-
+
自动保存出错
-
+
自动保存"%1"到"%2"失败:%3
-
+
试题属性...
-
+
设置试题集名称
-
+
试题集名称:
-
+
删除
-
+
删除全部书签
-
+
修改描述
-
-
-
+
+
+
书签描述
-
-
-
+
+
+
描述:
@@ -5547,178 +5510,179 @@ Are you really want to continue?
在调试主控台中显示调试器输出
-
+
清除这次搜索
-
+
删除所有搜索
-
+
断点条件...
-
+
断点条件
-
+
输入当前断点的生效条件:
-
+
Remove all breakpoints
删除所有断点
-
+
删除当前断点
-
+
重命名文件
-
-
+
+
添加文件夹
-
+
+
新文件夹
-
+
文件夹:
-
+
重命名
-
+
运行当前案例
-
+
删除文件夹
-
+
切换为普通视图
-
+
切换为自定义视图
-
+
按类型排序
-
+
按名称排序
-
+
显示继承的成员
-
+
跳转到声明处
-
+
跳转到定义处
-
-
+
+
新建文件夹
-
+
重命名
-
-
-
-
+
+
+
+
删除
-
+
在编辑器中打开
-
+
使用外部程序打开
-
+
在终端中打开
-
+
在Windows浏览器中打开
-
+
字符集
-
+
转换为%1编码
-
+
已自动保存%1个文件
-
+
设置答案源代码...
-
+
选择其他文件...
-
+
选择答案源代码文件
@@ -5728,7 +5692,7 @@ Are you really want to continue?
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
新建文件夹%1
@@ -5741,68 +5705,68 @@ Are you really want to continue?
无标题%1
-
+
你真的要删除%1吗?
-
+
你真的要删除%1个文件吗?
-
+
保存项目
-
+
项目'%1'有改动。
-
-
+
+
需要保存吗?
-
-
+
+
文件已发生变化
-
+
新建项目文件?
-
+
您是否要将新建的文件加入项目?
-
-
-
-
+
+
+
+
保存失败
-
+
改变项目编译器配置集
-
+
改变项目的编译器配置集会导致所有的自定义编译器选项被重置。
-
-
+
+
你真的想要那么做吗?
@@ -5811,119 +5775,119 @@ Are you really want to continue?
批量设置案例
-
+
选择输入数据文件
-
+
输入数据文件 (*.in)
-
+
无标题%1
-
+
修改监视表达式
-
+
监视表达式
-
+
您真的要清除该文件的所有断点吗?
-
+
新建项目
-
+
关闭'%1'以打开新项目?
-
+
文件夹不存在
-
+
文件夹'%1'不存在。是否创建?
-
+
无法创建文件夹
-
+
创建文件夹'%1'失败。
-
+
-
+
文件夹%1不是空的。
-
+
你真的要删除它吗?
-
+
改变工作文件夹
-
+
File '%1' is not in the current working folder
文件'%1'不在当前工作文件夹中。
-
+
是否将工作文件夹改设为'%1'?
-
+
无法提交
-
+
Git需要用信息进行提交。
-
+
选择输入数据文件
-
-
+
+
所有文件 (*.*)
-
+
Choose Expected Input Data File
选择期望输出文件
@@ -5933,61 +5897,61 @@ Are you really want to continue?
第%1行
-
-
-
+
+
+
选择工作文件夹
-
-
+
+
头文件已存在
-
-
+
+
头文件"%1"已存在!
-
+
源文件已存在!
-
+
源文件"%1"已存在!
-
+
无法提交!
-
+
下列文件处于冲突状态,请解决后重新添加和提交:
-
+
提交信息
-
+
提交信息:
-
+
提交失败
-
+
提交信息不能为空!
@@ -5996,255 +5960,256 @@ 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个文件)
@@ -6344,7 +6309,7 @@ Are you really want to continue?
取消
-
+
路径
@@ -6528,12 +6493,12 @@ Are you really want to continue?
OJProblemModel
-
+
名称
-
+
Time(sec)
时间(毫秒)
@@ -6583,120 +6548,120 @@ Are you really want to continue?
找不到项目文件'%1'!
-
+
无标题
-
+
无法保存文件
-
+
无法保存文件'%1'.
-
+
载入文件错误
-
-
+
+
错误
-
+
无法创建文件夹%1
-
+
警告
-
-
+
+
无法保存文件%1
-
+
文件已存在
-
+
文件'%1'已在项目中
-
+
项目已升级
-
+
已成功将项目升级到新的格式
-
+
旧项目文件备份在'%1'。
-
+
头文件
-
+
源文件
-
+
其他文件
-
+
设置需要更新
-
+
The compiler settings format of Dev-C++ has changed.
小熊猫C++的编译器设置格式已发生改变。
-
+
请在项目 >> 项目属性 >> 编译器设置中修改您的设置并保存您的项目
-
+
未找到编译器
-
+
您为该项目设置的编译器不存在。
-
+
它将会被全局编译器设置代替。
-
+
Developed using the Red Panda Dev-C++ IDE
使用小熊猫C++编辑器开发
@@ -6765,37 +6730,37 @@ Are you really want to continue?
无法写入文件'%1'!
-
+
- 资源文件: %1
-
+
正在编译项目修改...
-
+
- 项目文件名: %1
-
+
- 编译器配置: %1
-
+
正在处理makefile...
-
+
- makefile处理器: %1
-
+
- 命令: %1 %2
@@ -6955,12 +6920,12 @@ Are you really want to continue?
自定义构建命令
-
+
自动检测
-
+
ANSI
@@ -6969,7 +6934,7 @@ Are you really want to continue?
ANSI
-
+
@@ -7133,32 +7098,32 @@ Are you really want to continue?
ProjectModel
-
+
文件已存在
-
+
文件'%1'已存在。是否删除?
-
+
删除失败
-
+
无法删除文件'%1'
-
+
改名失败
-
+
无法将文件'%1'改名为'%2'
@@ -7390,7 +7355,7 @@ Are you really want to continue?
QApplication
-
+
错误
@@ -7398,12 +7363,12 @@ Are you really want to continue?
QObject
-
+
保存
-
+
将修改保存到"%1"?
@@ -7444,81 +7409,81 @@ Are you really want to continue?
-
-
+
+
错误
-
+
无法创建配置文件夹"%1"
-
+
无法写入配置文件夹"%1"
-
+
无法载入自动链接设置
-
-
+
+
下列%1文件夹不存在:
-
-
+
+
二进制
-
+
未指定%1文件夹
-
+
C包含
-
+
C++包含
-
-
-
-
+
+
+
+
无法找到%1程序"%2"
-
+
C编译器
-
+
C++编译器
-
+
构建程序(Make)
-
+
调试器
@@ -7587,7 +7552,7 @@ Are you really want to continue?
生成调试信息(-g3)
-
+
您同意小熊猫C++在PATH路径中寻找gcc编译器吗?
@@ -7696,23 +7661,23 @@ Are you really want to continue?
只生成汇编代码(-S)
-
-
+
+
确认
-
+
在验证编译器设置"%1"时遇到了下列问题:
-
+
在配置中保留这些文件夹可能会导致编译出错。
-
+
是否让小熊猫C++删除这些配置,并尝试重新建立配置?
@@ -7721,13 +7686,13 @@ Are you really want to continue?
如果仍然保留这些设置,可能会导致编译错误。<br /><br />请选择“是”,除非您清楚的知道选择“否”的后果,
-
-
+
+
未配置编译器设置。
-
+
您需要小熊猫C++在下列位置搜索编译器吗:<br />%1<br />%2
@@ -7760,32 +7725,31 @@ Are you really want to continue?
是
-
+
无标题
-
- 下标"%1"越界
+ 下标"%1"越界
-
+
字节
-
+
KB
-
+
MB
-
+
GB
@@ -8059,27 +8023,24 @@ Are you really want to continue?
缺省
-
- 无法写入文件'%1'!
+ 无法写入文件'%1'!
-
- 写入数据失败。
+ 写入数据失败。
-
- 无标题
+ 无标题
-
+
构造函数
-
+
析构函数
@@ -8087,8 +8048,8 @@ Are you really want to continue?
-
-
+
+
无法读取文件'%1'.
@@ -8096,11 +8057,12 @@ Are you really want to continue?
+
无法写入文件'%1'.
-
+
无法解析试题集文件"%1":%2
@@ -8114,12 +8076,12 @@ Are you really want to continue?
RegisterModel
-
+
寄存器
-
+
值
@@ -8481,7 +8443,7 @@ Are you really want to continue?
SettingsDialog
-
+
选项
@@ -8507,247 +8469,247 @@ Are you really want to continue?
取消
-
+
外观
-
-
-
-
-
-
+
+
+
+
+
+
环境
-
+
文件关联
-
+
快捷键
-
+
文件夹
-
+
终端程序
-
+
性能
-
-
-
+
+
+
编译器配置集
-
-
-
+
+
+
编译器
-
+
自动链接
-
-
-
-
-
-
-
+
+
+
+
+
+
+
通用
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
编辑器
-
+
字体
-
+
复制/导出
-
+
配色
-
+
代码补全
-
+
符号补全
-
+
代码模板
-
+
自动语法检查
-
+
信息提示
-
+
自动保存
-
+
杂项
-
-
-
-
+
+
+
+
程序运行
-
-
+
+
试题集
-
+
调试器
-
-
+
+
代码排版
-
+
程序
-
-
+
+
工具
-
+
Git
-
+
项目选项
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
项目
-
+
文件
-
+
自定义编译选项
-
+
文件夹
-
+
预编译头文件
-
+
Makefile
-
+
输出
-
+
DLL宿主
-
+
版本信息
-
+
保存修改
-
+
本页中有尚未保存的设置修改,是否保存后再切换到其他页?
@@ -8899,23 +8861,19 @@ Are you really want to continue?
SynDocument
-
- 无法读取文件'%1'!
+ 无法读取文件'%1'!
-
- 无法写入文件'%2'!
+ 无法写入文件'%2'!
SynEdit
-
-
- 高亮处理进入了死循环
+ 高亮处理进入了死循环
@@ -9016,27 +8974,27 @@ Are you really want to continue?
插入宏指令
-
+
保存修改?
-
+
您需要保存对当前工具的修改吗?
-
+
选择文件夹
-
+
选择程序
-
+
可执行文件 (*.exe)
@@ -9132,49 +9090,49 @@ Are you really want to continue?
WatchModel
-
+
保存文件'%1'失败。
-
+
无法写入文件'%1'.
-
+
JSON文件'%1':%2中存在错误:%3
-
-
+
+
执行以求值
-
-
+
+
在当前作用域中无效
-
+
无法读取文件'%1'.
-
+
表达式
-
+
类型
-
+
值
diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
index 951a4bb1..64dca603 100644
--- a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
@@ -198,73 +198,6 @@
-
- CharsetInfoManager
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ChooseThemeDialog
@@ -1363,6 +1296,14 @@
+
+
+
+
+
+
+
+
EditorSnippetWidget
@@ -5648,18 +5589,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -5884,10 +5813,6 @@
-
-
-
-
@@ -6406,24 +6331,6 @@
-
- SynDocument
-
-
-
-
-
-
-
-
-
-
- SynEdit
-
-
-
-
-
TodoModel
diff --git a/libs/qsynedit/qsynedit/SynEdit.cpp b/libs/qsynedit/qsynedit/SynEdit.cpp
index a207e9f8..21c9669f 100644
--- a/libs/qsynedit/qsynedit/SynEdit.cpp
+++ b/libs/qsynedit/qsynedit/SynEdit.cpp
@@ -6585,6 +6585,11 @@ void SynEdit::setUndoLimit(int size)
mUndoList->setMaxUndoActions(size);
}
+void SynEdit::setUndoMemoryUsage(int size)
+{
+ mUndoList->setMaxMemoryUsage(size*1024*1024);
+}
+
int SynEdit::charsInWindow() const
{
return mCharsInWindow;
diff --git a/libs/qsynedit/qsynedit/SynEdit.h b/libs/qsynedit/qsynedit/SynEdit.h
index c463c0e2..e411063e 100644
--- a/libs/qsynedit/qsynedit/SynEdit.h
+++ b/libs/qsynedit/qsynedit/SynEdit.h
@@ -334,6 +334,7 @@ public:
int charWidth() const;
void setUndoLimit(int size);
+ void setUndoMemoryUsage(int size);
int gutterWidth() const;
void setGutterWidth(int value);
diff --git a/libs/qsynedit/qsynedit/TextBuffer.cpp b/libs/qsynedit/qsynedit/TextBuffer.cpp
index bcc48070..01cb127a 100644
--- a/libs/qsynedit/qsynedit/TextBuffer.cpp
+++ b/libs/qsynedit/qsynedit/TextBuffer.cpp
@@ -825,6 +825,7 @@ SynDocumentLine::SynDocumentLine():
SynEditUndoList::SynEditUndoList():QObject()
{
mMaxUndoActions = 1024;
+ mMaxMemoryUsage = 50 * 1024 * 1024;
mNextChangeNumber = 1;
mInsideRedo = false;
@@ -832,6 +833,7 @@ SynEditUndoList::SynEditUndoList():QObject()
mBlockLock=0;
mFullUndoImposible=false;
mBlockCount=0;
+ mMemoryUsage=0;
mLastPoppedItemChangeNumber=0;
mInitialChangeNumber = 0;
mLastRestoredItemChangeNumber=0;
@@ -853,7 +855,9 @@ void SynEditUndoList::addChange(SynChangeReason reason, const BufferCoord &start
changeNumber);
// qDebug()<<"add change"<changeNumber();
mItems.append(item);
+ addMemoryUsage(item);
ensureMaxEntries();
if (changeNumber>mNextChangeNumber)
mNextChangeNumber=changeNumber;
@@ -912,6 +917,7 @@ void SynEditUndoList::clear()
mLastRestoredItemChangeNumber=0;
mBlockCount=0;
mBlockLock=0;
+ mMemoryUsage=0;
}
void SynEditUndoList::endBlock()
@@ -941,6 +947,38 @@ unsigned int SynEditUndoList::getNextChangeNumber()
return mNextChangeNumber++;
}
+void SynEditUndoList::addMemoryUsage(PSynEditUndoItem item)
+{
+ if (!item)
+ return;
+ int length=0;
+ foreach (const QString& s, item->changeText()) {
+ length+=s.length()+2;
+ }
+ mMemoryUsage += length * sizeof(QChar) ;
+}
+
+void SynEditUndoList::reduceMemoryUsage(PSynEditUndoItem item)
+{
+ if (!item)
+ return;
+ int length=0;
+ foreach (const QString& s, item->changeText()) {
+ length+=s.length()+2;
+ }
+ mMemoryUsage -= length * sizeof(QChar) ;
+}
+
+int SynEditUndoList::maxMemoryUsage() const
+{
+ return mMaxMemoryUsage;
+}
+
+void SynEditUndoList::setMaxMemoryUsage(int newMaxMemoryUsage)
+{
+ mMaxMemoryUsage = newMaxMemoryUsage;
+}
+
SynChangeReason SynEditUndoList::lastChangeReason()
{
if (mItems.count() == 0)
@@ -978,6 +1016,7 @@ PSynEditUndoItem SynEditUndoList::popItem()
}
}
mLastPoppedItemChangeNumber = item->changeNumber();
+ reduceMemoryUsage(item);
mItems.removeLast();
return item;
}
@@ -1040,14 +1079,20 @@ bool SynEditUndoList::fullUndoImposible() const
void SynEditUndoList::ensureMaxEntries()
{
- if (mMaxUndoActions>0 && mBlockCount > mMaxUndoActions){
+ if (mMaxUndoActions>0 && (mBlockCount > mMaxUndoActions || mMemoryUsage>mMaxMemoryUsage)){
mFullUndoImposible = true;
- while (mBlockCount > mMaxUndoActions && !mItems.isEmpty()) {
+ while ((mBlockCount > mMaxUndoActions || mMemoryUsage>mMaxMemoryUsage)
+ && !mItems.isEmpty()) {
//remove all undo item in block
PSynEditUndoItem item = mItems.front();
size_t changeNumber = item->changeNumber();
- while (mItems.count()>0 && mItems.front()->changeNumber() == changeNumber)
+ while (mItems.count()>0) {
+ item = mItems.front();
+ if (item->changeNumber()!=changeNumber)
+ break;
+ reduceMemoryUsage(item);
mItems.removeFirst();
+ }
if (item->changeReason()!=SynChangeReason::GroupBreak)
mBlockCount--;
}
diff --git a/libs/qsynedit/qsynedit/TextBuffer.h b/libs/qsynedit/qsynedit/TextBuffer.h
index 054eca3d..a23c2818 100644
--- a/libs/qsynedit/qsynedit/TextBuffer.h
+++ b/libs/qsynedit/qsynedit/TextBuffer.h
@@ -233,21 +233,28 @@ public:
bool fullUndoImposible() const;
+ int maxMemoryUsage() const;
+ void setMaxMemoryUsage(int newMaxMemoryUsage);
+
signals:
void addedUndo();
protected:
void ensureMaxEntries();
bool inBlock();
unsigned int getNextChangeNumber();
+ void addMemoryUsage(PSynEditUndoItem item);
+ void reduceMemoryUsage(PSynEditUndoItem item);
protected:
size_t mBlockChangeNumber;
int mBlockLock;
int mBlockCount; // count of action blocks;
+ int mMemoryUsage;
size_t mLastPoppedItemChangeNumber;
size_t mLastRestoredItemChangeNumber;
bool mFullUndoImposible;
QVector mItems;
int mMaxUndoActions;
+ int mMaxMemoryUsage;
size_t mNextChangeNumber;
size_t mInitialChangeNumber;
bool mInsideRedo;