diff --git a/NEWS.md b/NEWS.md
index 08619459..70970dcb 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -9,6 +9,11 @@ Red Panda C++ Version 2.19
- enhancement: Open Containing folder will auto select the file in windows file explore.
- fix: Class constructor & destructor is not correctly handled.
- fix: Remove multiple files in the project panel is not correctly handled.
+ - fix: Reformat code when select contents in column mode will mess up the document.
+ - enhancement: Add "save as" icon to the toolbar.
+ - enhancement: Use key sequences as shortcut to actions in the options dialog's environment->shortcut page.
+ - change: Use ctrl+shift+S as the shortcut for "save as".
+ - change: Use ctrl+K,ctrl+S as the shortcut for "save all".
Red Panda C++ Version 2.18
diff --git a/RedPandaIDE/mainwindow.ui b/RedPandaIDE/mainwindow.ui
index 034ad9b0..fc51584b 100644
--- a/RedPandaIDE/mainwindow.ui
+++ b/RedPandaIDE/mainwindow.ui
@@ -379,6 +379,7 @@
+
@@ -2114,6 +2115,9 @@
Save As
+
+ Ctrl+Shift+S
+
@@ -2125,7 +2129,7 @@
Save All
- Ctrl+Shift+S
+ Ctrl+K, Ctrl+S
diff --git a/RedPandaIDE/toolsmanager.cpp b/RedPandaIDE/toolsmanager.cpp
index 14b2dd50..603a526b 100644
--- a/RedPandaIDE/toolsmanager.cpp
+++ b/RedPandaIDE/toolsmanager.cpp
@@ -46,6 +46,15 @@ void ToolsManager::load()
item->parameters = "";
item->pauseAfterExit = false;
mTools.append(item);
+//#ifdef Q_OS_WIN
+// item = std::make_shared();
+// item->title = tr("Open compiled in explorer");
+// item->program = "explorer.exe";
+// item->workingDirectory = "";
+// item->parameters = " /n, /select, ";
+// item->pauseAfterExit = false;
+// mTools.append(item);
+//#endif
return;
}
//read config file
diff --git a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
index f3d2122e..a7e35ac5 100644
--- a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts
@@ -5199,6 +5199,10 @@
It will be closed.
+
+ Ctrl+K, Ctrl+S
+
+
MemoryModel
@@ -7818,6 +7822,10 @@
Write to tools config file '%1' failed.
Falha ao gravar o arquivo de configurações '%1'.
+
+ Open compiled in explorer
+
+
WatchModel
diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
index d7ba211d..043a9083 100644
--- a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts
@@ -1532,14 +1532,14 @@ Are you really want to continue?
十进制: %1
-
+
Print Document
打印文档
-
-
-
+
+
+
Ctrl+click for more info
Ctrl+单击以获取更多信息
@@ -1548,27 +1548,27 @@ Are you really want to continue?
未找到符号'%1'!
-
+
astyle not found
找不到astyle程序
-
+
Can't find astyle in "%1".
找不到astyle程序"%1".
-
+
Break point condition
断点条件
-
+
Enter the condition of the breakpoint:
输入当前断点的生效条件:
-
+
Readonly
只读
@@ -4307,18 +4307,18 @@ Are you really want to continue?
MainWindow
-
+
Red Panda C++
小熊猫C++
-
-
-
-
-
-
-
+
+
+
+
+
+
+
Issues
编译器
@@ -4337,8 +4337,8 @@ Are you really want to continue?
工具
-
-
+
+
Run
运行
@@ -4349,26 +4349,26 @@ Are you really want to continue?
-
-
+
+
Project
项目
-
-
+
+
Watch
监视
-
-
+
+
Structure
结构
-
-
+
+
Files
文件
@@ -4377,69 +4377,69 @@ Are you really want to continue?
资源
-
-
-
-
-
+
+
+
+
+
Debug
调试
-
+
Evaluate:
求值
-
-
+
+
Debug Console
调试主控台
-
+
Call Stack
调用栈
-
+
Breakpoints
断点
-
+
Locals
局部变量
-
-
+
+
Search
查找
-
+
History:
历史:
-
+
Search Again
重新查找
-
+
Replace with:
替换为:
-
+
Replace
替换
-
+
Close
关闭
@@ -4450,7 +4450,7 @@ Are you really want to continue?
-
+
Code
代码
@@ -4468,76 +4468,76 @@ Are you really want to continue?
工具栏2
-
+
New
新建
-
+
Ctrl+N
Ctrl+N
-
+
Open...
打开...
-
+
Ctrl+O
Ctrl+O
-
+
Save
保存
-
+
Ctrl+S
Ctrl+S
-
+
Save As...
另存为...
-
+
Save As
另存为
-
+
Save All
全部保存
-
+
Ctrl+Shift+S
Ctrl+Shift+S
-
+
Options
选项
-
-
-
+
+
+
Compile
编译
-
-
+
+
Tools Output
工具输出
-
-
+
+
Choose Input File
选择输入文件
@@ -4561,7 +4561,7 @@ Are you really want to continue?
选择
-
+
F9
F9
@@ -4570,123 +4570,123 @@ Are you really want to continue?
F10
-
+
Undo
恢复
-
+
Ctrl+Z
Ctrl+Z
-
+
Redo
重做
-
+
Ctrl+Y
Ctrl+Y
-
+
Cut
剪切
-
+
Ctrl+X
Ctrl+X
-
-
-
-
+
+
+
+
Copy
复制
-
+
Ctrl+C
Ctrl+C
-
-
+
+
Paste
粘贴
-
+
Ctrl+V
Ctrl+V
-
-
-
+
+
+
Select All
选择全部
-
+
Ctrl+A
Ctrl+A
-
+
Indent
缩进
-
+
UnIndent
取消缩进
-
+
Toggle Comment
切换注释
-
+
Ctrl+/
Ctrl+/
-
+
Collapse All
全部收起
-
+
Uncollapse All
全部展开
-
+
Encode in ANSI
使用ANSI编码
-
+
Encode in UTF-8
使用UTF-8编码
-
+
Auto Detect
自动检测
-
+
Convert to ANSI
转换为ANSI编码
-
+
Convert to UTF-8
转换为UTF-8编码
@@ -4695,183 +4695,183 @@ Are you really want to continue?
编译运行
-
+
F11
F11
-
-
+
+
Rebuild All
全部重编译
-
+
F12
F12
-
+
Stop Execution
停止执行
-
+
F6
F6
-
+
F5
F5
-
+
Step Over
单步跨过
-
+
F7
F7
-
+
Step Into
单步进入
-
-
-
+
+
+
Problem Set
试题集
-
-
-
-
+
+
+
+
New Problem Set
新建试题集
-
-
-
+
+
+
Add Problem
添加试题
-
-
-
+
+
+
Remove Problem
删除试题
-
-
-
-
+
+
+
+
Save Problem Set
保存试题集
-
-
-
-
+
+
+
+
Load Problem Set
载入试题集
-
+
Memory
内存
-
+
Address Expression:
Address:
地址表达式:
-
+
Cancel
取消
-
-
+
+
TODO
TODO
-
-
+
+
Bookmark
书签
-
-
-
+
+
+
Problem
试题
-
-
+
+
Add Probem Case
添加试题案例
-
-
-
+
+
+
Remove Problem Case
Remove Problem Set
删除试题集
-
-
-
+
+
+
Open Anwser Source File
打开答案源代码文件
-
-
-
+
+
+
Run All Cases
Run Current Case
运行所有案例
-
-
+
+
Problem Cases Validation Options
测试案例验证选项
-
+
%v/%m
%v/%m
-
+
Output
输出
-
+
Input
输入
-
+
Expected
期望输出
@@ -4900,524 +4900,529 @@ Are you really want to continue?
主工具栏
-
+
Compiler Set
编译器配置集
-
+
Explorer
管理器
-
-
-
+
+
+
Import FPS Problem Set
导入FPS试题集
-
-
-
+
+
+
Export FPS Problem Set
导出FPS试题集
-
+
Messages
消息
-
+
Open file in editors
在编辑器中打开文件
-
+
Choose Expected Output File
选择期望输出文件
-
+
Ignore Spaces
忽略空格
-
+
New C/C++ File
新建C/C++文件
-
+
New Source File
新建源代码文件
-
+
+ Ctrl+K, Ctrl+S
+
+
+
+
Tab
Tab
-
+
Shift+Tab
Shift+Tab
-
+
F8
F8
-
+
Step Out
单步跳出
-
+
Ctrl+F8
Ctrl+F8
-
+
Run To Cursor
执行到光标处
-
+
Ctrl+F5
Ctrl+F5
-
+
Continue
继续执行
-
+
F4
F4
-
+
Add Watch...
添加监视
-
+
View CPU Window...
打开CPU信息窗口...
-
+
Exit
退出
-
+
Find...
查找...
-
+
Ctrl+F
Ctrl+F
-
+
Find in Files...
在文件中查找...
-
+
Ctrl+Shift+F
Ctrl+Shift+F
-
+
Replace...
替换
-
+
Ctrl+R
Ctrl+R
-
+
Find Next
查找下一个
-
+
F3
F3
-
+
Find Previous
查找前一个
-
+
Shift+F3
Shift+F3
-
+
Remove Watch
删除监视值
-
+
Remove All Watches
Remove All
删除全部监视值
-
+
Modify Watch...
修改监视值
-
+
Reformat Code
对代码重新排版
-
+
Ctrl+Shift+A
Ctrl+Shift+A
-
+
Go back
前一次编辑位置
-
+
Ctrl+Alt+Left
Ctrl+Alt+Left
-
+
Forward
后一次编辑位置
-
+
Ctrl+Alt+Right
Ctrl+Alt+Right
-
+
Ctrl+W
Ctrl+W
-
+
Close All
全部关闭
-
+
Ctrl+Shift+W
Ctrl+Shift+W
-
+
Maximize Editor
最大化编辑器
-
+
Ctrl+F11
Ctrl+F11
-
+
Next
下一窗口
-
+
Ctrl+Tab
Ctrl+Tab
-
+
Previous
前一窗口
-
+
Ctrl+Shift+Tab
Ctrl+Shift+Tab
-
+
Toggle breakpoint
切换断点
-
+
Ctrl+F4
Ctrl+F4
-
-
+
+
Clear all breakpoints
删除所有断点
-
+
Breakpoint property...
设置断点条件...
-
+
Goto Declaration
跳转到声明处
-
+
Ctrl+Shift+G
Ctrl+Shift+G
-
+
Goto Definition
跳转到定义处
-
+
Ctrl+G
Ctrl+G
-
+
Find references
查找符号的引用
-
+
Open containing folder
打开所在的文件夹
-
+
Ctrl+B
Ctrl+B
-
+
Open a terminal here
打开命令行窗口
-
+
File Properties...
文件属性...
-
+
Close Project
关闭项目
-
+
Project options
项目属性
-
+
New Project...
新建项目...
-
-
+
+
New Project File
新建项目文件
-
+
Ctrl+F12
Ctrl+F12
-
+
F1
F1
-
+
New GAS File
新建GNU汇编文件
-
+
GNU Assembler Manual
GNU汇编器手册
-
+
x86 Assembly Language Reference Manual
X86汇编语言参考手册
-
+
IA-32 Assembly Language Reference Manual
IA32汇编语言参考手册
-
+
Add Watchpoint...
添加变量断点...
-
+
Add a watchpoint that's triggered when it's modified.
添加一个变量断点。当该变量的值被改动时程序暂停。
-
+
New Text File
新建文本文件
-
+
Move Selection Up
向上移动选中的行
-
+
Ctrl+Shift+Up
Ctrl+Shift+Up
-
+
Move Selection Down
向下移动选中的行
-
+
Ctrl+Shift+Down
Ctrl+Shift+Down
-
+
Convert to UTF-8 BOM
转换为UTF-8 BOM编码
-
+
Encode in UTF-8 BOM
使用UTF-8 BOM编码
-
+
Compiler Options...
编译器选项...
-
+
Toggle Explorer Panel
切换管理器面板
-
+
Ctrl+F9
Ctrl+F9
-
+
Toggle Messages Panel
切换消息面板
-
+
Ctrl+F10
Ctrl+F10
-
+
Raylib Manual
Raylib教程
-
+
Select Word
选中当前单词
-
+
Go to Line...
跳转到行...
-
+
New Template...
新建模板...
-
+
New Template from Project
从项目创建模板
-
+
Goto block start
跳转到代码段开始
-
+
Ctrl+Alt+Up
Ctrl+Alt+Up
-
+
Goto block end
跳转到代码段结束
-
+
Ctrl+Alt+Down
Ctrl+Alt+Down
-
+
Switch header/source
切换头文件/源文件
-
+
Switch Header/Source
切换头文件/源文件
-
+
Generate Assembly
生成汇编
-
+
Trim trailing spaces
删除行尾空格
-
+
Toggle Readonly
切换只读模式
-
+
Submit Issues
反馈与建议
-
+
Document
使用说明
@@ -5426,199 +5431,199 @@ Are you really want to continue?
保存为模板...
-
+
New File
新建文件
-
+
Add to project...
添加到项目...
-
+
Remove from project
从项目删除
-
+
View Makefile
查看Makefile
-
+
Clean
清理构建文件
-
+
Open Folder in Explorer
在浏览器中打开
-
+
Open In Terminal
在终端中打开
-
+
About
关于
-
-
+
+
Rename Symbol
重命名符号
-
+
Shift+F6
Shift+F6
-
+
Print...
打印...
-
+
Ctrl+P
Ctrl+P
-
-
+
+
Export As RTF
导出为RTF
-
-
+
+
Export As HTML
导出为HTML
-
+
Move To Other View
移动到其他视图
-
+
Ctrl+M
Ctrl+M
-
-
+
+
C++ Reference
C++参考手册
-
+
C Reference
C参考手册
-
+
Show Tool Panels
显示全部工具面板
-
+
Create Git Repository
Create Repository
创建Git仓库
-
+
Commit
提交(Commit)
-
+
Revert
撤销(Revert)
-
+
Reset
回滚(Reset)
-
+
Add Files
添加文件
-
+
Restore
还原(Restore)
-
+
Website
官方网站
-
+
Branch/Switch
分支切换(Switch)
-
+
Merge
合并(Merge)
-
-
+
+
Show Log
Log
显示日志(Log)
-
+
Remotes...
远程仓库...
-
+
Fetch
取回(Fetch)
-
+
Pull
拉取(Pull)
-
+
Push
推送(Push)
-
+
Hide Non Support Files
隐藏不支持的文件
-
+
Toggle Block Comment
切换块注释
-
+
Alt+Shift+A
Alt+Shift+A
-
+
Match Bracket
匹配当前括号
-
+
Ctrl+]
Ctrl+]
@@ -5627,50 +5632,50 @@ Are you really want to continue?
工具窗口栏
-
+
Status Bar
状态栏
-
+
Ctrl+Backspace
Ctrl+Backspace
-
+
Interrupt
中断
-
-
+
+
Delete To Word Begin
删除到单词开头
-
+
Ctrl+Shift+B
Ctrl+Shift+B
-
+
Delete to Word End
删除到单词结尾
-
+
Ctrl+Shift+E
Ctrl+Shift+E
-
+
New Class...
Add Class...
新建类...
-
-
+
+
New Header...
New Header
新建头文件...
@@ -5680,47 +5685,47 @@ Are you really want to continue?
插入行
-
+
Delete Line
删除当前行
-
+
Ctrl+D
Ctrl+D
-
+
Duplicate Line
复制当前行
-
+
Ctrl+E
Ctrl+E
-
+
Delete Word
删除当前单词
-
+
Ctrl+Shift+D
Ctrl+Shift+D
-
+
Delete to EOL
删除到行尾
-
+
Ctrl+Del
Ctrl+Del
-
+
Delete to BOL
删除到行首
@@ -5729,27 +5734,27 @@ Are you really want to continue?
C/C++参考
-
+
EGE Manual
EGE图形库手册
-
+
Add Bookmark
添加书签
-
+
Remove Bookmark
删除书签
-
+
Modify Bookmark Description
修改书签说明
-
+
Locate in Files View
在文件视图中定位
@@ -5758,47 +5763,47 @@ Are you really want to continue?
打开文件夹
-
+
Running Parameters...
运行参数...
-
+
File Encoding
文件编码
-
+
Recent Files
文件历史
+
-
+
-
+
-
Debugging
正在调试
+
-
+
-
+
-
Running
正在运行
+
-
+
-
+
-
Compiling
正在编译
@@ -5812,17 +5817,17 @@ Are you really want to continue?
行: %1 列: %2 已选择 :%3 总行数: %4 总长度: %5
-
+
Read Only
只读
-
+
Insert
插入
-
+
Overwrite
覆写
@@ -5839,7 +5844,7 @@ Are you really want to continue?
确认
-
+
Source file is not compiled.
源文件尚未编译。
@@ -5856,44 +5861,44 @@ Are you really want to continue?
重新编译?
-
-
-
-
+
+
+
+
Wrong Compiler Settings
错误的编译器设置
-
-
-
-
+
+
+
+
Compiler is set not to generate executable.
编译器被设置为不生成可执行文件。
-
-
+
+
We need the executabe to run problem case.
我们需要可执行文件来运行试题案例。
-
+
No compiler set
无编译器设置
-
+
No compiler set is configured.
没有配置编译器设置。
-
+
Can't start debugging.
无法启动调试器
-
+
Enable debugging
启用调试参数
@@ -5910,33 +5915,33 @@ Are you really want to continue?
项目尚未构建。是否构建?
-
+
Host applcation missing
宿主程序不存在
-
+
DLL project needs a host application to run.
动态链接库(DLL)需要一个宿主程序来运行。
-
+
But it's missing.
但它不存在。
-
+
Host application not exists
宿主程序不存在
-
+
Host application file '%1' doesn't exist.
宿主程序'%1'不存在。
-
-
+
+
Please correct this before start debugging
请在调试前改正设置。
@@ -5945,8 +5950,8 @@ Are you really want to continue?
重新编译?
-
-
+
+
Save last open info error
保存上次打开信息失败
@@ -5955,86 +5960,86 @@ Are you really want to continue?
无法删除旧上次打开信息文件'%1'
-
+
Can't save last open info file '%1'
无法保存上次打开信息文件'%1'
-
-
+
+
Load last open info error
载入上次打开信息失败
-
-
+
+
Can't load last open info file '%1'
无法载入上次打开信息文件'%1'
-
+
Open Source File
打开源代码文件
-
-
+
+
Batch Set Cases
批量设置案例
-
+
Show detail debug logs
显示详细调试器日志
-
+
Copy all
全部复制
-
+
Go to Line
跳转到行
-
+
Line
行
-
+
Template Exists
模板已存在
-
+
Template %1 already exists. Do you want to overwrite?
模板%1已存在。是否覆盖?
-
-
-
-
-
-
+
+
+
+
+
+
Clear
清除
-
+
Export
导出
-
+
Insert Snippet
插入代码段
-
-
+
+
Problem Set %1
试题集%1
@@ -6063,56 +6068,56 @@ Are you really want to continue?
项目已经被修改过,是否需要重新构建?
-
+
Auto Save Error
自动保存出错
-
+
Auto save "%1" to "%2" failed:%3
自动保存"%1"到"%2"失败:%3
-
+
Properties...
试题属性...
-
+
Set Problem Set Name
设置试题集名称
-
+
Problem Set Name:
试题集名称:
-
+
Remove
删除
-
+
Remove All Bookmarks
删除全部书签
-
+
Modify Description
修改描述
-
-
-
+
+
+
Bookmark Description
书签描述
-
-
-
+
+
+
Description:
描述:
@@ -6121,65 +6126,65 @@ Are you really want to continue?
在调试主控台中显示调试器输出
-
+
Remove this search
清除这次搜索
-
+
Clear all searches
删除所有搜索
-
+
Breakpoint condition...
断点条件...
-
+
Break point condition
断点条件
-
+
Enter the condition of the breakpoint:
输入当前断点的生效条件:
-
+
Remove All Breakpoints
Remove all breakpoints
删除所有断点
-
+
Remove Breakpoint
删除当前断点
-
+
Rename File
重命名文件
-
-
+
+
Add Folder
添加文件夹
-
-
+
+
New folder
新文件夹
-
+
Folder name:
文件夹:
-
+
Rename Folder
重命名
@@ -6192,262 +6197,262 @@ Are you really want to continue?
要现在去修改设置吗?
-
+
Rename Problem Set
修改试题集名称
-
+
Can't open last open information file '%1' for write!
无法写入配置文件'%1'。
-
+
Rename Problem
修改试题名称
-
+
Line: %1 Col: %2 Lines: %3
行: %1 列: %2 总行数: %3
-
+
Correct compiler setting
改正编译器设置
-
-
+
+
You are using a Debug compiler set with wrong compile/link settings:
您使用的Debug编译器配置集中存在错误的“编译/链接”选项设置:
-
-
+
+
- "Generate debug info (-g3)" should be turned on
- 应勾选"生成调试信息(-g3)"选项
-
+
- "Strip executable (-s)" should be turned off
- 应取消"剥除附加信息(-s)"选项
-
-
+
+
Do you want to correct it now?
是否现在去改正?
-
+
Missing Project Files
项目文件缺失
-
+
The following files is missing, can't build the project:
下列项目文件缺失,无法构建项目:
-
-
+
+
Can't Debug
无法调试
-
-
+
+
Your compiler set's "Strip executable (-s)" options is turnned on
您的编译器配置集中的“剥除附加信息(-s)”选项被勾选了。
-
-
+
+
Please correct it, recompile and retry debug.
请取消该设置,重新编译然后重新启动调试。
-
+
Goto Url
跳转到试题网址
-
+
Add Problem Case
添加试题案例
-
+
Run Current Case
运行当前案例
-
+
Remove Folder
删除文件夹
-
+
Switch to normal view
切换为普通视图
-
+
Switch to custom view
切换为自定义视图
-
+
Sort By Type
按类型排序
-
+
Sort alphabetically
按名称排序
-
+
Show inherited members
显示继承的成员
-
+
Goto declaration
跳转到声明处
-
+
Goto definition
跳转到定义处
-
+
In current file
仅当前文件
-
+
In current project
整个项目
-
-
+
+
New Folder
新建文件夹
-
+
Rename
重命名
-
-
-
-
+
+
+
+
Delete
删除
-
+
Open in Editor
在编辑器中打开
-
+
Open in External Program
使用外部程序打开
-
+
Open in Terminal
在终端中打开
-
+
Open in Windows Explorer
在Windows浏览器中打开
-
+
Character sets
字符集
-
+
Convert to %1
转换为%1编码
-
+
Newline
换行符
-
+
%1 files autosaved
已自动保存%1个文件
-
+
Set answer to...
设置答案源代码...
-
+
select other file...
选择其他文件...
-
+
Select Answer Source File
选择答案源代码文件
-
+
Watchpoint hitted
变量断点被触发
-
+
Value of "%1" has changed:
"%1"的值发生了变化:
-
+
New value: %1
新值: %1
-
+
Project folder removed.
项目文件夹被删除
-
+
Folder for project '%1' was removed.
项目"%1"的文件夹已被外部程序删除.
-
+
It will be closed.
项目将被关闭.
-
+
Save settings failed!
保存设置失败
-
+
Watchpoint variable name
被监控的变量
-
+
Stop execution when the following variable is modified (it must be visible from the currect scope):
当下面的变量被修改时暂停执行(该变量必须可以从当前程序处访问):
@@ -6456,17 +6461,17 @@ Are you really want to continue?
中止
-
+
FPS Problem Set Files (*.fps;*.xml)
FPS试题集文件(*.fps;*.xml)
-
+
FPS Problem Set Files (*.fps)
FPS试题集文件(*.fps)
-
+
Export Error
导出时出错
@@ -6476,7 +6481,7 @@ Are you really want to continue?
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
New Folder %1
新建文件夹%1
@@ -6489,12 +6494,12 @@ Are you really want to continue?
无标题%1
-
+
Do you really want to delete %1?
你真的要删除%1吗?
-
+
Do you really want to delete %1 files?
你真的要删除%1个文件吗?
@@ -6507,7 +6512,7 @@ Are you really want to continue?
变量"%1"有改动:
-
+
Old value: %1
旧值: %1
@@ -6516,63 +6521,63 @@ Are you really want to continue?
新值: %1
-
+
Save project
保存项目
-
+
The project '%1' has modifications.
项目'%1'有改动。
-
-
+
+
Do you want to save it?
需要保存吗?
-
-
+
+
File Changed
文件已发生变化
-
-
-
+
+
+
New Project File?
新建项目文件?
-
-
-
+
+
+
Do you want to add the new file to the project?
您是否要将新建的文件加入项目?
-
+
+
-
-
-
+
+
Save Error
保存失败
-
+
Change Project Compiler Set
改变项目编译器配置集
-
+
Change the project's compiler set will lose all custom compiler set options.
改变项目的编译器配置集会导致所有的自定义编译器选项被重置。
-
-
+
+
Do you really want to do that?
你真的想要那么做吗?
@@ -6581,12 +6586,12 @@ Are you really want to continue?
批量设置案例
-
+
Choose input files
选择输入数据文件
-
+
Input data files (*.in)
输入数据文件 (*.in)
@@ -6595,78 +6600,78 @@ Are you really want to continue?
无标题%1
-
+
Modify Watch
修改监视表达式
-
+
Watch Expression
监视表达式
-
+
Do you really want to clear all breakpoints in this file?
您真的要清除该文件的所有断点吗?
-
+
New project
新建项目
-
+
Close %1 and start new project?
关闭'%1'以打开新项目?
-
+
Folder not exist
文件夹不存在
-
+
Folder '%1' doesn't exist. Create it now?
文件夹'%1'不存在。是否创建?
-
+
Can't create folder
无法创建文件夹
-
+
Failed to create folder '%1'.
创建文件夹'%1'失败。
-
+
Save new project as
-
+
Folder %1 is not empty.
文件夹%1不是空的。
-
+
Do you really want to delete it?
你真的要删除它吗?
-
+
Change working folder
改变工作文件夹
-
+
File '%1' is not in the current working folder.
File '%1' is not in the current working folder
文件'%1'不在当前工作文件夹中。
-
+
Do you want to change working folder to '%1'?
是否将工作文件夹改设为'%1'?
@@ -6675,28 +6680,28 @@ Are you really want to continue?
正在删除试题...
-
+
Can't Commit
无法提交
-
+
Git needs user info to commit.
Git需要用信息进行提交。
-
+
Choose Input Data File
选择输入数据文件
-
-
+
+
All files (*.*)
所有文件 (*.*)
-
+
Choose Expected Output Data File
Choose Expected Input Data File
选择期望输出文件
@@ -6706,61 +6711,61 @@ Are you really want to continue?
第%1行
-
-
-
+
+
+
Choose Working Folder
选择工作文件夹
-
-
+
+
Header Exists
头文件已存在
-
-
+
+
Header file "%1" already exists!
头文件"%1"已存在!
-
+
Source Exists
源文件已存在!
-
+
Source file "%1" already exists!
源文件"%1"已存在!
-
+
Can't commit!
无法提交!
-
+
The following files are in conflicting:
下列文件处于冲突状态,请解决后重新添加和提交:
-
+
Commit Message
提交信息
-
+
Commit Message:
提交信息:
-
+
Commit Failed
提交失败
-
+
Commit message shouldn't be empty!
提交信息不能为空!
@@ -6769,22 +6774,22 @@ Are you really want to continue?
小熊猫Dev-C++项目文件 (*.dev)
-
+
New project fail
新建项目失败
-
+
Can't assign project template
无法使用模板创建项目
-
+
Remove file
删除文件
-
+
Remove the file from disk?
同时从硬盘上删除文件?
@@ -6793,27 +6798,27 @@ Are you really want to continue?
无标题
-
+
New Project File Name
新的项目文件名
-
+
File Name:
文件名:
-
+
File Already Exists!
文件已存在!
-
+
File '%1' already exists!
文件'%1'已经存在!
-
+
Add to project
添加到项目
@@ -6830,27 +6835,27 @@ Are you really want to continue?
请在工具栏中选择Debug编译器配置集,或者在“编译器配置集”设置的“编译/链接选项”页中<b>启用</b>“生成调试信息(-g3)”、<b>禁用</b>“剥除附件信息(-3)”。
-
+
C/C++ Source Files (*.c *.cpp *.cc *.cxx)
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
This operation will remove all cases for the current problem.
本操作会删除此试题的所有案例。
-
+
Debug Failed
调试失败
-
+
The executable doesn't have symbol table, and can't be debugged.
可执行文件中没有符号表信息,无法调试。
-
+
Please turn off your compiler set's "Strip executable (-s)" option, recompile and retry debug.
请在选项对话框的编译器配置集页中取消“剥除附加信息(-s)”选项,重新编译后再调试。
@@ -6871,134 +6876,134 @@ Are you really want to continue?
您也可以删除所有断点,打开“CPU信息窗口”,然后调试汇编代码。
-
+
Failed to generate the executable.
未能生成可执行文件。
-
+
Please check detail info in "Tools Output" panel.
请查看“工具输出”面板中的详细信息。
-
+
Red Panda C++ project file (*.dev)
小熊猫C++项目文件(*.dev)
-
+
Rename Error
重命名出错
-
+
Symbol '%1' is defined in system header.
符号'%1'在系统头文件中定义,无法修改。
-
+
New Name
新名称
-
-
-
-
+
+
+
+
Replace Error
替换出错
-
+
Can't open file '%1' for replace!
无法打开文件'%1'进行替换!
-
+
Contents has changed since last search!
内容和上次查找时不一致。
-
+
Rich Text Format Files (*.rtf)
RTF格式文件 (*.rtf)
-
+
HTML Files (*.html)
HTML文件 (*.html)
-
+
The current problem set is not empty.
当前的试题集不是空的。
-
+
Problem %1
试题%1
-
-
+
+
Problem Set Files (*.pbs)
试题集文件 (*.pbs)
-
-
+
+
Load Error
载入失败
-
-
+
+
Problem Case %1
试题案例%1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Error
错误
-
+
Recent Projects
项目历史
-
+
Load Theme Error
载入主题失败
-
-
+
+
Clear History
清除历史
-
-
+
+
The generated executable doesn't have symbol table, and can't be debugged.
编译生成的可执行文件中没有符号表,无法被调试。
-
-
+
+
Version Control
版本控制
@@ -7007,80 +7012,80 @@ Are you really want to continue?
请在工具栏中选用Debug编译器配置集,或者在选项对话框的编辑器配置集页中勾选“生成调试信息(-g3)"选项。
-
+
File '%1' was changed.
磁盘文件'%1'已被修改。
-
+
Reload its content from disk?
是否重新读取它的内容?
-
+
File '%1' was removed.
磁盘文件'%1'已被删除。
-
+
Keep it open?
是否保持它在小熊猫C++中打开的编辑窗口?
-
+
Open
打开
-
-
+
+
Compile Failed
编译失败
-
+
Run Failed
运行失败
-
-
-
-
+
+
+
+
Confirm Convertion
确认转换
-
-
-
-
+
+
+
+
The editing file will be saved using %1 encoding. <br />This operation can't be reverted. <br />Are you sure to continue?
当前编辑器中的文件将会使用%1编码保存。<br />这项操作无法被撤回。<br />你确定要继续吗?
-
+
New Watch Expression
新监视表达式
-
+
Enter Watch Expression (it is recommended to use 'this->' for class members):
输入监视表达式
-
+
Parsing file %1 of %2: "%3"
(%1/%2)正在解析文件"%3"
-
-
+
+
Done parsing %1 files in %2 seconds
完成%1个文件的解析,用时%2秒
-
+
(%1 files per second)
(每秒%1个文件)
@@ -8421,13 +8426,13 @@ Are you really want to continue?
QObject
-
+
Save
保存
-
+
Save changes to %1?
将修改保存到"%1"?
@@ -8810,22 +8815,22 @@ Are you really want to continue?
下标"%1"越界
-
+
bytes
字节
-
+
KB
KB
-
+
MB
MB
-
+
GB
GB
@@ -10165,18 +10170,18 @@ Are you really want to continue?
性能
-
-
-
+
+
+
Compiler Set
编译器配置集
-
-
-
+
+
+
Compiler
@@ -10188,7 +10193,7 @@ Are you really want to continue?
自动链接
-
+
@@ -10264,15 +10269,15 @@ Are you really want to continue?
杂项
-
-
+
+
Program Runner
程序运行
-
+
Problem Set
试题集
@@ -10758,34 +10763,39 @@ Are you really want to continue?
删除编译文件
-
-
+
+ Open compiled in explorer
+
+
+
+
+
Read tools config failed
读取工具配置失败
-
+
Can't open tools config file '%1' for read.
无法读取工具配置文件'%1'
-
+
Read tools config file '%1' failed:%2
读取工具配置文件'%1'失败:%2
-
-
+
+
Save tools config failed
保存工具配置失败
-
+
Can't open tools config file '%1' for write.
无法写入工具配置文件'%1'。
-
+
Write to tools config file '%1' failed.
Write to tool config file '%1' failed.
写入工具配置文件'%1'失败。
diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
index 502b78f7..71b3995f 100644
--- a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
+++ b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts
@@ -4932,6 +4932,10 @@
It will be closed.
+
+ Ctrl+K, Ctrl+S
+
+
MemoryModel
@@ -7154,6 +7158,10 @@
Write to tools config file '%1' failed.
+
+ Open compiled in explorer
+
+
WatchModel
diff --git a/RedPandaIDE/widgets/shortcutinputedit.cpp b/RedPandaIDE/widgets/shortcutinputedit.cpp
index 6dd4d95f..5b4c5316 100644
--- a/RedPandaIDE/widgets/shortcutinputedit.cpp
+++ b/RedPandaIDE/widgets/shortcutinputedit.cpp
@@ -31,6 +31,7 @@ ShortcutInputEdit::ShortcutInputEdit(QWidget* parent):QLineEdit(parent)
void ShortcutInputEdit::keyPressEvent(QKeyEvent *event)
{
+ QString lastKeys=text();
if (event->key()==Qt::Key_Delete && event->modifiers()==Qt::NoModifier) {
setText("");
} else if (event->key()==Qt::Key_Backspace && event->modifiers()==Qt::NoModifier) {
@@ -66,11 +67,13 @@ void ShortcutInputEdit::keyPressEvent(QKeyEvent *event)
&& event->text().at(0).unicode()<127) {
s = s.mid(0,s.lastIndexOf('+')+1) + event->text().at(0);
}
+ if (!lastKeys.isEmpty())
+ s=lastKeys+","+s;
setText(s);
- if (key!=Qt::Key_Tab
- && key!=Qt::Key_Enter
- && key!=Qt::Key_Return)
- emit inputFinished(this);
+// if (key!=Qt::Key_Tab
+// && key!=Qt::Key_Enter
+// && key!=Qt::Key_Return)
+// emit inputFinished(this);
}
event->accept();
}
@@ -78,7 +81,10 @@ void ShortcutInputEdit::keyPressEvent(QKeyEvent *event)
bool ShortcutInputEdit::event(QEvent *event)
{
if (event->type()==QEvent::ShortcutOverride) {
- keyPressEvent((QKeyEvent*)event);
+ QKeyEvent* keyEvent = static_cast(event);
+ if (keyEvent->key()==Qt::Key_Tab)
+ keyPressEvent((QKeyEvent*)event);
+
event->accept();
return true;
} else if (event->type()==QEvent::KeyPress) {
diff --git a/RedPandaIDE/widgets/shortcutinputedit.h b/RedPandaIDE/widgets/shortcutinputedit.h
index 52eeca4e..bf8d6655 100644
--- a/RedPandaIDE/widgets/shortcutinputedit.h
+++ b/RedPandaIDE/widgets/shortcutinputedit.h
@@ -33,6 +33,7 @@ protected:
// QObject interface
public:
bool event(QEvent *event) override;
+
};
#endif // SHORTCUTINPUTEDIT_H
diff --git a/libs/qsynedit/qsynedit/qsynedit.cpp b/libs/qsynedit/qsynedit/qsynedit.cpp
index d2c4fe4b..1778adc0 100644
--- a/libs/qsynedit/qsynedit/qsynedit.cpp
+++ b/libs/qsynedit/qsynedit/qsynedit.cpp
@@ -1194,6 +1194,7 @@ void QSynEdit::setCaretAndSelection(const BufferCoord &ptCaret, const BufferCoor
{
incPaintLock();
internalSetCaretXY(ptCaret);
+ setActiveSelectionMode(SelectionMode::Normal);
setBlockBegin(ptSelBegin);
setBlockEnd(ptSelEnd);
decPaintLock();
@@ -2730,11 +2731,11 @@ void QSynEdit::doBlockUnindent()
endEditing();
}
-void QSynEdit::doAddChar(QChar AChar)
+void QSynEdit::doAddChar(const QChar& ch)
{
if (mReadOnly)
return;
- if (!AChar.isPrint() && AChar!='\t')
+ if (!ch.isPrint() && ch!='\t')
return;
//DoOnPaintTransient(ttBefore);
//mCaretX will change after setSelLength;
@@ -2759,12 +2760,31 @@ void QSynEdit::doAddChar(QChar AChar)
}
}
- if (isIdentChar(AChar)) {
- doSetSelText(AChar);
- } else if (AChar.isSpace()) {
+ QChar lastCh{0};
+ if (!selAvail()) {
+ PUndoItem undoItem = mUndoList->peekItem();
+ if (undoItem && undoItem->changeReason()==ChangeReason::Insert
+ && undoItem->changeEndPos().line == mCaretY
+ && undoItem->changeEndPos().ch == mCaretX
+ && undoItem->changeStartPos().line == mCaretY
+ && undoItem->changeStartPos().ch == mCaretX-1) {
+ QString s = mDocument->getLine(mCaretY-1);
+ int i=mCaretX-2;
+ if (i>=0 && iaddGroupBreak();
+ }
+ doSetSelText(ch);
+ } else if (ch.isSpace()) {
// break group undo chain
- mUndoList->addGroupBreak();
- doSetSelText(AChar);
+ if (!lastCh.isSpace()) {
+ mUndoList->addGroupBreak();
+ }
+ doSetSelText(ch);
// break group undo chain
// if (mActiveSelectionMode!=SynSelectionMode::smColumn)
// mUndoList->AddChange(SynChangeReason::crNothing,
@@ -2772,8 +2792,11 @@ void QSynEdit::doAddChar(QChar AChar)
// BufferCoord{0, 0},
// "", SynSelectionMode::smNormal);
} else {
+ if (lastCh.isSpace() || isIdentChar(lastCh)) {
+ mUndoList->addGroupBreak();
+ }
beginEditing();
- doSetSelText(AChar);
+ doSetSelText(ch);
int oldCaretX=mCaretX-1;
int oldCaretY=mCaretY;
// auto
@@ -2784,7 +2807,7 @@ void QSynEdit::doAddChar(QChar AChar)
&& (oldCaretY<=mDocument->count()) ) {
//unindent if ':' at end of the line
- if (AChar == ':') {
+ if (ch == ':') {
QString line = mDocument->getLine(oldCaretY-1);
if (line.length() <= oldCaretX) {
int indentSpaces = calcIndentSpaces(oldCaretY,line+":", true);
@@ -2810,7 +2833,7 @@ void QSynEdit::doAddChar(QChar AChar)
);
}
}
- } else if (AChar == '*') {
+ } else if (ch == '*') {
QString line = mDocument->getLine(oldCaretY-1);
if (line.length() <= oldCaretX) {
int indentSpaces = calcIndentSpaces(oldCaretY,line+"*", true);
@@ -2836,12 +2859,12 @@ void QSynEdit::doAddChar(QChar AChar)
);
}
}
- } else if (AChar == '{' || AChar == '}' || AChar == '#') {
+ } else if (ch == '{' || ch == '}' || ch == '#') {
//Reindent line when add '{' '}' and '#' at the beginning
QString left = mDocument->getLine(oldCaretY-1).mid(0,oldCaretX-1);
// and the first nonblank char is this new {
if (left.trimmed().isEmpty()) {
- int indentSpaces = calcIndentSpaces(oldCaretY,AChar, true);
+ int indentSpaces = calcIndentSpaces(oldCaretY,ch, true);
if (indentSpaces != leftSpaces(left)) {
QString right = mDocument->getLine(oldCaretY-1).mid(oldCaretX-1);
QString newLeft = GetLeftSpacing(indentSpaces,true);
@@ -6674,7 +6697,6 @@ void QSynEdit::clearSelection()
void QSynEdit::setBlockEnd(BufferCoord value)
{
- //setActiveSelectionMode(mSelectionMode);
value.line = minMax(value.line, 1, mDocument->count());
if (mActiveSelectionMode == SelectionMode::Normal) {
if (value.line >= 1 && value.line <= mDocument->count())
@@ -6782,7 +6804,6 @@ void QSynEdit::setBlockBegin(BufferCoord value)
{
int nInval1, nInval2;
bool SelChanged;
- //setActiveSelectionMode(mSelectionMode);
value.line = minMax(value.line, 1, mDocument->count());
if (mActiveSelectionMode == SelectionMode::Normal) {
if (value.line >= 1 && value.line <= mDocument->count())
diff --git a/libs/qsynedit/qsynedit/qsynedit.h b/libs/qsynedit/qsynedit/qsynedit.h
index a1627080..1fdb422c 100644
--- a/libs/qsynedit/qsynedit/qsynedit.h
+++ b/libs/qsynedit/qsynedit/qsynedit.h
@@ -600,7 +600,7 @@ private:
void doShiftTabKey();
void doBlockIndent();
void doBlockUnindent();
- void doAddChar(QChar AChar);
+ void doAddChar(const QChar& ch);
void doCutToClipboard();
void doCopyToClipboard();
void internalDoCopyToClipboard(const QString& s);