diff --git a/NEWS.md b/NEWS.md
index 38e1f8fa..6bf15963 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -3,6 +3,9 @@ Red Panda C++ Version 0.14.4
- fix: error in templates
- enhancement: git - reset
- fix: header completion error when header name contains '+'
+ - enhancement: clear history in file -> recent menu
+ - enhancement: close project in project view's context menu
+ - enhancement: auto find compiler sets when run for the first time
Red Panda C++ Version 0.14.3
- fix: wrong code completion font size, when screen dpi changed
diff --git a/RedPandaIDE/RedPandaIDE_zh_CN.ts b/RedPandaIDE/RedPandaIDE_zh_CN.ts
index c8968fc8..d3cb8435 100644
--- a/RedPandaIDE/RedPandaIDE_zh_CN.ts
+++ b/RedPandaIDE/RedPandaIDE_zh_CN.ts
@@ -1157,12 +1157,12 @@ Are you really want to continue?
- 调试路径错误
+ 调试路径器错误
- 调试路径"%1"中包含非ASCII字符(如,中文字符)
+ 调试器路径"%1"中包含非ASCII字符(如,中文字符)
@@ -3236,22 +3236,22 @@ Are you really want to continue?
标签(Tag)
-
+
将"%1"回滚(Reset)到这里...
-
+
将"%1"撤销(Revert)到这里...
-
+
在此版本创建分支(Branch)...
-
+
在此版本创建标签(Tag)...
@@ -3259,17 +3259,17 @@ Are you really want to continue?
GitLogModel
-
+
日期
-
+
作者
-
+
title
标题
@@ -3341,6 +3341,80 @@ Are you really want to continue?
取消
+
+ GitResetDialog
+
+
+
+ 回滚(Reset)
+
+
+
+
+
+ 将当前分支"%1"回滚到
+
+
+
+
+ 分支(Branch)
+
+
+
+
+ 标签(Tag)
+
+
+
+
+ 提交(Commit)
+
+
+
+
+ 回滚操作类型
+
+
+
+
+ <html><head/><body><p>保持当前工作区内容和索引不变</p></body></html>
+
+
+
+
+ <html><head/><body><p>回滚工作区内容和索引(丢弃所有本地修改)</p></body></html>
+
+
+
+
+ Soft
+
+
+
+
+ Hard
+
+
+
+
+ 保持工作区内容不变,回滚索引
+
+
+
+
+ Mixed
+
+
+
+
+ 确定
+
+
+
+
+ 取消
+
+
InfoMessageBox
@@ -3530,11 +3604,11 @@ Are you really want to continue?
-
-
-
-
+
+
+
+
编译器
@@ -3608,7 +3682,7 @@ Are you really want to continue?
-
+
调试主控台
@@ -3742,8 +3816,8 @@ Are you really want to continue?
-
-
+
+
编译
@@ -3805,9 +3879,9 @@ Are you really want to continue?
-
-
-
+
+
+
复制
@@ -3818,7 +3892,7 @@ Are you really want to continue?
-
+
粘贴
@@ -3829,8 +3903,8 @@ Are you really want to continue?
-
-
+
+
选择全部
@@ -3957,7 +4031,7 @@ Are you really want to continue?
-
+
新建试题集
@@ -3976,14 +4050,14 @@ Are you really want to continue?
-
+
保存试题集
-
+
载入试题集
@@ -4322,7 +4396,7 @@ Are you really want to continue?
-
+
删除所有断点
@@ -4423,7 +4497,7 @@ Are you really want to continue?
-
+
重命名符号
@@ -4444,13 +4518,13 @@ Are you really want to continue?
-
+
导出为RTF
-
+
导出为HTML
@@ -4666,7 +4740,7 @@ Are you really want to continue?
-
+
打开文件夹
@@ -4676,7 +4750,7 @@ Are you really want to continue?
运行参数...
-
+
文件编码
@@ -4720,178 +4794,178 @@ 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'
-
+
打开源代码文件
-
+
显示详细调试器日志
-
+
全部复制
-
-
-
+
+
+
清除
@@ -4907,7 +4981,7 @@ Are you really want to continue?
-
+
试题集%1
@@ -4928,68 +5002,68 @@ Are you really want to continue?
或者选择使用其他的网络端口。
-
-
+
+
重新构建项目
-
-
+
+
项目已经被修改过,是否需要重新构建?
-
+
自动保存出错
-
+
自动保存"%1"到"%2"失败:%3
-
+
试题属性...
-
+
设置试题集名称
-
+
试题集名称:
-
+
删除
-
+
删除全部书签
-
+
修改描述
-
-
-
+
+
+
书签描述
-
-
-
+
+
+
描述:
@@ -4998,337 +5072,337 @@ Are you really want to continue?
在调试主控台中显示调试器输出
-
+
清除这次搜索
-
+
删除所有搜索
-
+
断点条件...
-
+
断点条件
-
+
输入当前断点的生效条件:
-
+
Remove all breakpoints
删除所有断点
-
+
删除当前断点
-
+
重命名文件
-
-
+
+
添加文件夹
-
+
新文件夹
-
+
文件夹:
-
+
重命名
-
+
删除文件夹
-
+
切换为普通视图
-
+
切换为自定义视图
-
+
按类型排序
-
+
按名称排序
-
+
显示继承的成员
-
+
跳转到声明处
-
+
跳转到定义处
-
-
-
+
+
+
新建文件夹
-
-
-
-
+
+
+
+
删除
-
+
在编辑器中打开
-
+
使用外部程序打开
-
+
在终端中打开
-
+
在Windows浏览器中打开
-
+
字符集
-
+
已自动保存%1个文件
-
+
设置答案源代码...
-
+
选择其他文件...
-
+
选择答案源代码文件
-
+
C/C++Source Files (*.c *.cpp *.cc *.cxx
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
你真的要删除%1吗?
-
+
你真的要删除%1个文件吗?
-
+
保存项目
-
+
项目'%1'有改动。
-
-
+
+
需要保存吗?
-
-
+
+
文件已发生变化
-
+
新建项目文件?
-
+
您是否要将新建的文件加入项目?
-
-
-
+
+
+
保存失败
-
+
改变项目编译器配置集
-
+
改变项目的编译器配置集会导致所有的自定义编译器选项被重置。
-
+
你真的想要做那些吗?
-
+
您真的要清除该文件的所有断点吗?
-
+
新建项目
-
+
关闭'%1'以打开新项目?
-
+
文件夹不存在
-
+
文件夹'%1'不存在。是否创建?
-
+
无法创建文件夹
-
+
创建文件夹'%1'失败。
-
+
-
+
文件夹%1不是空的。
-
+
你真的要删除它吗?
-
-
+
+
头文件已存在
-
-
+
+
头文件"%1"已存在!
-
+
源文件已存在!
-
+
源文件"%1"已存在!
-
+
无法提交!
-
+
下列文件处于冲突状态,请解决后重新添加和提交:
-
+
提交信息
-
+
提交信息:
-
+
提交失败
-
+
提交信息不能为空!
@@ -5337,125 +5411,125 @@ Are you really want to continue?
小熊猫Dev-C++项目文件 (*.dev)
-
+
新建项目失败
-
+
无法使用模板创建项目
-
+
删除文件
-
+
同时从硬盘上删除文件?
-
+
无标题
-
+
新的项目文件名
-
+
文件名:
-
+
文件已存在!
-
+
文件'%1'已经存在!
-
+
添加到项目
-
+
小熊猫C++项目文件(*.dev)
-
+
重命名出错
-
+
符号'%1'在系统头文件中定义,无法修改。
-
+
新名称
-
+
替换出错
-
+
无法打开文件'%1'进行替换!
-
+
内容和上次查找时不一致。
-
+
RTF格式文件 (*.rtf)
-
+
HTML文件 (*.html)
-
+
当前的试题集不是空的。
-
+
试题%1
-
-
+
+
试题集文件 (*.pbs)
-
+
载入失败
-
-
+
+
试题案例%1
@@ -5466,15 +5540,15 @@ Are you really want to continue?
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
错误
@@ -5489,81 +5563,87 @@ Are you really want to continue?
载入主题失败
-
-
+
+
+
+ 清除历史
+
+
+
+
版本控制
-
+
磁盘文件'%1'已被修改。
-
+
是否重新读取它的内容?
-
+
磁盘文件'%1'已被删除。
-
+
是否保持它在小熊猫C++中打开的编辑窗口?
-
+
打开
-
+
编译失败
-
+
运行失败
-
-
+
+
确认转换
-
-
+
+
当前编辑器中的文件将会使用%1编码保存。<br />这项操作无法被撤回。<br />你确定要继续吗?
-
+
新监视表达式
-
+
输入监视表达式
-
+
(%1/%2)正在解析文件"%3"
-
-
+
+
完成%1个文件的解析,用时%2秒
-
+
(每秒%1个文件)
@@ -7698,7 +7778,7 @@ Are you really want to continue?
自动链接
-
+
@@ -7774,15 +7854,15 @@ Are you really want to continue?
杂项
-
-
+
+
程序运行
-
+
试题集
diff --git a/RedPandaIDE/main.cpp b/RedPandaIDE/main.cpp
index c2b84d3d..ed90e17c 100644
--- a/RedPandaIDE/main.cpp
+++ b/RedPandaIDE/main.cpp
@@ -75,7 +75,7 @@ bool WindowLogoutEventFilter::nativeEventFilter(const QByteArray & /*eventType*/
}
#endif
-QString getSettingFilename(const QString& filepath = QString()) {
+QString getSettingFilename(const QString& filepath, bool& firstRun) {
QString filename;
if (filepath.isEmpty()) {
if (isGreenEdition()) {
@@ -90,6 +90,7 @@ QString getSettingFilename(const QString& filepath = QString()) {
}
QFileInfo fileInfo(filename);
+ firstRun = !fileInfo.exists();
QDir dir(fileInfo.absoluteDir());
if (!dir.exists()) {
if (!dir.mkpath(dir.absolutePath())) {
@@ -115,12 +116,14 @@ int main(int argc, char *argv[])
//Translation must be loaded first
QTranslator trans,transQt;
- QString settingFilename = getSettingFilename();
+ bool firstRun;
+ QString settingFilename = getSettingFilename(QString(), firstRun);
if (!isGreenEdition()) {
QDir::setCurrent(QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation)[0]);
}
if (settingFilename.isEmpty())
return -1;
+
{
QSettings languageSetting(settingFilename,QSettings::IniFormat);
languageSetting.beginGroup(SETTING_ENVIRONMENT);
@@ -149,6 +152,11 @@ int main(int argc, char *argv[])
auto charsetInfoManager = std::unique_ptr(pCharsetInfoManager);
//load settings
pSettings = new Settings(settingFilename);
+ if (firstRun) {
+ pSettings->compilerSets().findSets();
+ pSettings->compilerSets().saveSets();
+ }
+ pSettings->load();
auto settings = std::unique_ptr(pSettings);
//Color scheme settings must be loaded after translation
diff --git a/RedPandaIDE/mainwindow.cpp b/RedPandaIDE/mainwindow.cpp
index 499c01e4..2ed26857 100644
--- a/RedPandaIDE/mainwindow.cpp
+++ b/RedPandaIDE/mainwindow.cpp
@@ -905,30 +905,42 @@ void MainWindow::rebuildOpenedFileHisotryMenu()
{
mMenuRecentFiles->clear();
mMenuRecentProjects->clear();
- if (pSettings->history().openedFiles().size()==0) {
+ if (pSettings->history().opennedFiles().size()==0) {
mMenuRecentFiles->setEnabled(false);
} else {
mMenuRecentFiles->setEnabled(true);
- for (const QString& filename: pSettings->history().openedFiles()) {
+ for (const QString& filename: pSettings->history().opennedFiles()) {
QAction* action = new QAction(filename,mMenuRecentFiles);
connect(action, &QAction::triggered, [&filename,this](bool){
openFile(filename);
});
mMenuRecentFiles->addAction(action);
}
+ mMenuRecentFiles->addSeparator();
+ QAction *action = new QAction(tr("Clear History"),mMenuRecentFiles);
+ connect(action, &QAction::triggered, [](bool){
+ pSettings->history().clearOpennedFiles();
+ });
+ mMenuRecentFiles->addAction(action);
}
- if (pSettings->history().openedProjects().size()==0) {
+ if (pSettings->history().opennedProjects().size()==0) {
mMenuRecentProjects->setEnabled(false);
} else {
mMenuRecentProjects->setEnabled(true);
- for (const QString& filename: pSettings->history().openedProjects()) {
+ for (const QString& filename: pSettings->history().opennedProjects()) {
QAction* action = new QAction(filename,mMenuRecentProjects);
connect(action, &QAction::triggered, [&filename,this](bool){
this->openProject(filename);
});
mMenuRecentProjects->addAction(action);
}
+ mMenuRecentProjects->addSeparator();
+ QAction *action = new QAction(tr("Clear History"),mMenuRecentProjects);
+ connect(action, &QAction::triggered, [](bool){
+ pSettings->history().clearOpennedProjects();
+ });
+ mMenuRecentProjects->addAction(action);
}
}
@@ -3061,6 +3073,8 @@ void MainWindow::onProjectViewContextMenu(const QPoint &pos)
menu.addAction(mProject_SwitchCustomViewMode);
}
menu.addAction(ui->actionProject_options);
+ menu.addSeparator();
+ menu.addAction(ui->actionClose_Project);
if (pSettings->vcs().gitOk() && hasRepository) {
mProject->model()->iconProvider()->update();
diff --git a/RedPandaIDE/settings.cpp b/RedPandaIDE/settings.cpp
index fc85ea6a..78c593a2 100644
--- a/RedPandaIDE/settings.cpp
+++ b/RedPandaIDE/settings.cpp
@@ -49,7 +49,7 @@ Settings::Settings(const QString &filename):
mUI(this),
mVCS(this)
{
- load();
+ //load();
}
Settings::~Settings()
@@ -3451,16 +3451,26 @@ Settings::History::History(Settings *settings):_Base(settings, SETTING_HISTORY)
}
-const QStringList &Settings::History::openedFiles() const
+const QStringList &Settings::History::opennedFiles() const
{
return mOpenedFiles;
}
-const QStringList &Settings::History::openedProjects() const
+const QStringList &Settings::History::opennedProjects() const
{
return mOpenedProjects;
}
+void Settings::History::clearOpennedFiles()
+{
+ mOpenedFiles.clear();
+}
+
+void Settings::History::clearOpennedProjects()
+{
+ mOpenedProjects.clear();
+}
+
bool Settings::History::addToOpenedFiles(const QString &filename)
{
if (!QFile(filename).exists())
diff --git a/RedPandaIDE/settings.h b/RedPandaIDE/settings.h
index 1b198018..5ad71a1a 100644
--- a/RedPandaIDE/settings.h
+++ b/RedPandaIDE/settings.h
@@ -803,8 +803,10 @@ public:
public:
explicit History(Settings *settings);
- const QStringList& openedFiles() const;
- const QStringList& openedProjects() const;
+ const QStringList& opennedFiles() const;
+ const QStringList& opennedProjects() const;
+ void clearOpennedFiles();
+ void clearOpennedProjects();
bool addToOpenedFiles(const QString& filename);
void removeFile(const QString& filename);
bool addToOpenedProjects(const QString& filename);