From e5c6ea1a432260c119afe40cd7d9c97b6a55c596 Mon Sep 17 00:00:00 2001 From: Roy Qu Date: Wed, 22 Feb 2023 22:18:21 +0800 Subject: [PATCH] - Enhancement: New file templates for C / C++ / GAS files --- NEWS.md | 1 + RedPandaIDE/codesnippetsmanager.cpp | 53 +- RedPandaIDE/codesnippetsmanager.h | 19 +- RedPandaIDE/editor.cpp | 16 +- .../settingsdialog/editorsnippetwidget.cpp | 16 +- .../settingsdialog/editorsnippetwidget.ui | 38 +- RedPandaIDE/systemconsts.h | 2 + RedPandaIDE/translations/RedPandaIDE_pt_BR.ts | 74 +- RedPandaIDE/translations/RedPandaIDE_zh_CN.ts | 994 +++++++++--------- RedPandaIDE/translations/RedPandaIDE_zh_TW.ts | 89 +- RedPandaIDE/utils.cpp | 3 + libs/qsynedit/qsynedit.pro | 2 - libs/qsynedit/qsynedit/syntaxer/glsl.cpp | 10 - libs/qsynedit/qsynedit/syntaxer/glsl.h | 4 - 14 files changed, 643 insertions(+), 678 deletions(-) diff --git a/NEWS.md b/NEWS.md index 18996b03..2cc02871 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,6 +8,7 @@ Red Panda C++ Version 2.14 - change: Remove nasm support - change: Don't stop debug when breakpoint can't be set - fix: "Generate assembly" menu item is wrongly enabled for new GNU assembly files + - Enhancement: New file templates for C / C++ / GAS files Red Panda C++ Version 2.13 diff --git a/RedPandaIDE/codesnippetsmanager.cpp b/RedPandaIDE/codesnippetsmanager.cpp index a3a5d630..55e46117 100644 --- a/RedPandaIDE/codesnippetsmanager.cpp +++ b/RedPandaIDE/codesnippetsmanager.cpp @@ -32,13 +32,17 @@ CodeSnippetsManager::CodeSnippetsManager(QObject *parent) : QObject(parent) void CodeSnippetsManager::load() { loadSnippets(); - loadNewFileTemplate(); + mNewCppFileTemplate = loadNewFileTemplate(DEV_NEWFILETEMPLATES_FILE); + mNewCFileTemplate = loadNewFileTemplate(DEV_NEWCFILETEMPLATES_FILE); + mNewGASFileTemplate = loadNewFileTemplate(DEV_NEWGASFILETEMPLATES_FILE); } void CodeSnippetsManager::save() { saveSnippets(); - saveNewFileTemplate(); + saveNewFileTemplate(DEV_NEWFILETEMPLATES_FILE, mNewCppFileTemplate); + saveNewFileTemplate(DEV_NEWCFILETEMPLATES_FILE, mNewCFileTemplate); + saveNewFileTemplate(DEV_NEWGASFILETEMPLATES_FILE, mNewGASFileTemplate); } void CodeSnippetsManager::loadSnippets() @@ -135,27 +139,26 @@ void CodeSnippetsManager::saveSnippets() } } -void CodeSnippetsManager::loadNewFileTemplate() +QString CodeSnippetsManager::loadNewFileTemplate(const QString &fn) { - QString filename = includeTrailingPathDelimiter(pSettings->dirs().config()) + DEV_NEWFILETEMPLATES_FILE; + QString filename = includeTrailingPathDelimiter(pSettings->dirs().config()) + fn; QFile file(filename); if (!file.exists()) { - mNewFileTemplate = ""; - return; + return ""; } if (!file.open(QFile::ReadOnly)) { QMessageBox::critical(nullptr, tr("Load new file template failed"), tr("Can't open new file template file '%1' for read.") .arg(filename)); - return; + return ""; } - mNewFileTemplate=QString::fromUtf8(file.readAll()); + return QString::fromUtf8(file.readAll()); } -void CodeSnippetsManager::saveNewFileTemplate() +void CodeSnippetsManager::saveNewFileTemplate(const QString &fn, const QString &templateContent) { - QString filename = includeTrailingPathDelimiter(pSettings->dirs().config()) + DEV_NEWFILETEMPLATES_FILE; + QString filename = includeTrailingPathDelimiter(pSettings->dirs().config()) + fn; QFile file(filename); if (!file.open(QFile::WriteOnly | QFile::Truncate)) { QMessageBox::critical(nullptr, @@ -164,7 +167,27 @@ void CodeSnippetsManager::saveNewFileTemplate() .arg(filename)); return; } - file.write(mNewFileTemplate.toUtf8()); + file.write(templateContent.toUtf8()); +} + +QString CodeSnippetsManager::newGASFileTemplate() const +{ + return mNewGASFileTemplate; +} + +void CodeSnippetsManager::setNewGASFileTemplate(const QString &newContent) +{ + mNewGASFileTemplate = newContent; +} + +QString CodeSnippetsManager::newCFileTemplate() const +{ + return mNewCFileTemplate; +} + +void CodeSnippetsManager::setNewCFileTemplate(const QString &newContent) +{ + mNewCFileTemplate = newContent; } const QList &CodeSnippetsManager::snippets() const @@ -177,14 +200,14 @@ void CodeSnippetsManager::setSnippets(const QList &newSnippets) mSnippets = newSnippets; } -const QString &CodeSnippetsManager::newFileTemplate() const +const QString &CodeSnippetsManager::newCppFileTemplate() const { - return mNewFileTemplate; + return mNewCppFileTemplate; } -void CodeSnippetsManager::setNewFileTemplate(const QString &newNewFileTemplate) +void CodeSnippetsManager::setNewCppFileTemplate(const QString &content) { - mNewFileTemplate = newNewFileTemplate; + mNewCppFileTemplate = content; } void CodeSnippetsModel::addSnippet(const QString &caption, const QString &prefix, const QString &code, const QString &description, int menuSection) diff --git a/RedPandaIDE/codesnippetsmanager.h b/RedPandaIDE/codesnippetsmanager.h index a68e2887..e79f1bb7 100644 --- a/RedPandaIDE/codesnippetsmanager.h +++ b/RedPandaIDE/codesnippetsmanager.h @@ -62,18 +62,27 @@ public: void setSnippets(const QList &newSnippets); - const QString &newFileTemplate() const; - void setNewFileTemplate(const QString &newNewFileTemplate); + const QString &newCppFileTemplate() const; + void setNewCppFileTemplate(const QString &newContent); + + QString newCFileTemplate() const; + void setNewCFileTemplate(const QString &newContent); + + QString newGASFileTemplate() const; + void setNewGASFileTemplate(const QString &newContent); private: void loadSnippets(); void saveSnippets(); - void loadNewFileTemplate(); - void saveNewFileTemplate(); + QString loadNewFileTemplate(const QString &filename); + + void saveNewFileTemplate(const QString &filename, const QString &templateContent); private: QList mSnippets; - QString mNewFileTemplate; + QString mNewCppFileTemplate; //C++ file template + QString mNewCFileTemplate; + QString mNewGASFileTemplate; }; using PCodeSnippetManager = std::shared_ptr; diff --git a/RedPandaIDE/editor.cpp b/RedPandaIDE/editor.cpp index 2cbd110b..ab41d217 100644 --- a/RedPandaIDE/editor.cpp +++ b/RedPandaIDE/editor.cpp @@ -164,7 +164,21 @@ Editor::Editor(QWidget *parent, const QString& filename, mCanAutoSave = false; if (isNew && parentPageControl!=nullptr ) { - QString fileTemplate = pMainWindow->codeSnippetManager()->newFileTemplate(); + FileType fileType = getFileType(filename); + QString fileTemplate; + switch (fileType) { + case FileType::CSource: + fileTemplate = pMainWindow->codeSnippetManager()->newCFileTemplate(); + break; + case FileType::CppSource: + fileTemplate = pMainWindow->codeSnippetManager()->newCppFileTemplate(); + break; + case FileType::GAS: + fileTemplate = pMainWindow->codeSnippetManager()->newGASFileTemplate(); + break; + default: + break; + } if (!fileTemplate.isEmpty()) { insertCodeSnippet(fileTemplate); setCaretPosition(1,1); diff --git a/RedPandaIDE/settingsdialog/editorsnippetwidget.cpp b/RedPandaIDE/settingsdialog/editorsnippetwidget.cpp index dff3d3d3..bc8bdf9a 100644 --- a/RedPandaIDE/settingsdialog/editorsnippetwidget.cpp +++ b/RedPandaIDE/settingsdialog/editorsnippetwidget.cpp @@ -19,6 +19,7 @@ #include "../mainwindow.h" #include "../codesnippetsmanager.h" #include "../iconsmanager.h" +#include "../syntaxermanager.h" #include @@ -57,8 +58,13 @@ EditorSnippetWidget::EditorSnippetWidget(const QString& name, const QString& gro mUpdatingCode = false; } }); - connect(ui->editFileTemplate,&Editor::changed, + connect(ui->editCppFileTemplate,&Editor::changed, this, &SettingsWidget::setSettingsChanged); + connect(ui->editCFileTemplate,&Editor::changed, + this, &SettingsWidget::setSettingsChanged); + connect(ui->editGASFileTemplate,&Editor::changed, + this, &SettingsWidget::setSettingsChanged); + ui->editGASFileTemplate->setSyntaxer(syntaxerManager.getSyntaxer(QSynedit::ProgrammingLanguage::ATTAssembly)); } EditorSnippetWidget::~EditorSnippetWidget() @@ -69,13 +75,17 @@ EditorSnippetWidget::~EditorSnippetWidget() void EditorSnippetWidget::doLoad() { mModel.updateSnippets(pMainWindow->codeSnippetManager()->snippets()); - ui->editFileTemplate->document()->setText(pMainWindow->codeSnippetManager()->newFileTemplate()); + ui->editCppFileTemplate->document()->setText(pMainWindow->codeSnippetManager()->newCppFileTemplate()); + ui->editCFileTemplate->document()->setText(pMainWindow->codeSnippetManager()->newCFileTemplate()); + ui->editGASFileTemplate->document()->setText(pMainWindow->codeSnippetManager()->newGASFileTemplate()); } void EditorSnippetWidget::doSave() { pMainWindow->codeSnippetManager()->setSnippets(mModel.snippets()); - pMainWindow->codeSnippetManager()->setNewFileTemplate(ui->editFileTemplate->text()); + pMainWindow->codeSnippetManager()->setNewCppFileTemplate(ui->editCppFileTemplate->text()); + pMainWindow->codeSnippetManager()->setNewCFileTemplate(ui->editCFileTemplate->text()); + pMainWindow->codeSnippetManager()->setNewGASFileTemplate(ui->editGASFileTemplate->text()); pMainWindow->codeSnippetManager()->save(); } diff --git a/RedPandaIDE/settingsdialog/editorsnippetwidget.ui b/RedPandaIDE/settingsdialog/editorsnippetwidget.ui index ab970058..eebf03a5 100644 --- a/RedPandaIDE/settingsdialog/editorsnippetwidget.ui +++ b/RedPandaIDE/settingsdialog/editorsnippetwidget.ui @@ -129,13 +129,47 @@ + + + New C File Template + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + - New File Template + New C++ File Template - + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + New GAS File Template + + + + QFrame::StyledPanel diff --git a/RedPandaIDE/systemconsts.h b/RedPandaIDE/systemconsts.h index 0a6de1ca..240ed162 100644 --- a/RedPandaIDE/systemconsts.h +++ b/RedPandaIDE/systemconsts.h @@ -93,6 +93,8 @@ #define DEV_SYMBOLUSAGE_FILE "symbolusage.json" #define DEV_CODESNIPPET_FILE "codesnippets.json" #define DEV_NEWFILETEMPLATES_FILE "newfiletemplate.txt" +#define DEV_NEWCFILETEMPLATES_FILE "newcfiletemplate.txt" +#define DEV_NEWGASFILETEMPLATES_FILE "newgasfiletemplate.txt" #define DEV_AUTOLINK_FILE "autolink.json" #define DEV_SHORTCUT_FILE "shortcuts.json" #define DEV_TOOLS_FILE "tools.json" diff --git a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts index 57930bec..2a744d5a 100644 --- a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts +++ b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts @@ -753,11 +753,7 @@ Assembler - Assembler - - - Locate nasm - + Assembler @@ -1580,7 +1576,19 @@ New File Template - Novo arquivo de modelo + Novo arquivo de modelo + + + New C File Template + + + + New C++ File Template + + + + New GAS File Template + @@ -5032,22 +5040,6 @@ Please turn off your compiler set's "Strip executable (-s)" option, recompile and retry debug. - - The executable doesn't have enough debug info to set breakpoint. - - - - Then recompile and retry debug. - - - - Or you can remove all breakpoints, open cpu info dialog, and try debug machine codes. - - - - Please choose a Debug compiler set in the toolbar, or turn on your compiler set's "Generate debug info (-g3)" option in the options dialog. - - NewClassDialog @@ -5503,7 +5495,7 @@ Assembler - Assembler + Assembler @@ -6579,10 +6571,6 @@ GAS files - - ASM files - - Lua files @@ -7530,49 +7518,29 @@ XMakeCompiler - - Building xmake.lua file... - - - - - Filename: %1 - - Can't open '%1' for write! - Impossível abrir '%1' para gravar! + Impossível abrir '%1' para gravar! Compiling project changes... - Compilando alterações em projeto ... + Compilando alterações em projeto ... - Project Filename: %1 - - Nome de arquivo de projeto: %1 - - - - Compiler Set Name: %1 - - - - Make program '%1' doesn't exists! - - - - Please check the "program" page of compiler settings. - + - Nome de arquivo de projeto: %1 Processing makefile: - Processando makefile: + Processando makefile: - makefile processer: %1 - - Processador do makefile: %1 + - Processador do makefile: %1 - Command: %1 %2 - - Comando: %1 %2 + - Comando: %1 %2 diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts index eb58b1e6..ec6e1d8a 100644 --- a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts +++ b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts @@ -193,17 +193,17 @@ p, li { white-space: pre-wrap; } BacktraceModel - + Function 函数 - + Filename 文件名 - + Line @@ -249,17 +249,17 @@ p, li { white-space: pre-wrap; } BreakpointModel - + Filename 文件名 - + Line - + Condition 条件 @@ -429,66 +429,66 @@ p, li { white-space: pre-wrap; } CodeSnippetsManager - - + + Load default code snippets failed 载入缺省代码模板失败 - - + + Can't copy default code snippets '%1' to '%2'. 无法将缺省代码模板'%1'复制到'%2'。 - - + + Read code snippets failed 读取代码模板失败 - + Can't open code snippet file '%1' for read. 无法读入代码模板文件'%1' - + Read code snippet file '%1' failed:%2 读取代码模板文件'%1'失败:%2 - - + + Save code snippets failed 保存代码模板失败 - + Can't open code snippet file '%1' for write. - + Write to code snippet file '%1' failed. 写入代码片段文件'%1'失败。 - + Load new file template failed 载入新文件模板失败 - + Can't open new file template file '%1' for read. 无法读取新文件模板文件'%1'。 - + Save new file template failed 保存新文件模板失败 - + Can't open new file template file '%1' for write. 无法写入新文件模板文件'%1'。 @@ -496,22 +496,22 @@ p, li { white-space: pre-wrap; } CodeSnippetsModel - + Caption 名称 - + Completion Prefix 代码补全前缀 - + Description 描述 - + Menu Section 菜单节 @@ -760,13 +760,12 @@ p, li { white-space: pre-wrap; } 编译器配置方案 - - - - - - - + + + + + + ... ... @@ -846,27 +845,26 @@ p, li { white-space: pre-wrap; } 程序 - Assembler - 汇编器(NASM) + 汇编器(NASM) - + Output 输出 - + Compilation Stages 编译阶段 - + Stop after the preprocessing stage 在完成预处理后停止编译 - + Stop after the compilation proper stage 在完成编译仪式(compilation proper)后停止。 @@ -875,12 +873,12 @@ p, li { white-space: pre-wrap; } 在完成汇编后停止。 - + Link and generate the executable 链接得到可执行文件。 - + Preprocessing output suffix 预处理输出后缀 @@ -889,12 +887,12 @@ p, li { white-space: pre-wrap; } 编译输出后缀 - + Compiling output suffix 编译仪式(Compilation proper)输出后缀 - + Executable suffix 可执行文件后缀 @@ -903,37 +901,37 @@ p, li { white-space: pre-wrap; } 选项 - + gdb gdb - + gdb server gdb server - + Resource Compiler(windres) 资源编辑器(winres) - + C++ Compiler(g++) C++编译器(g++) - + Choose C++ Compiler 选择C++编译器 - + Choose C Compiler 选择C编译器 - + C Compiler(gcc) C编译器(gcc) @@ -946,22 +944,22 @@ p, li { white-space: pre-wrap; } 性能分析器(gprof) - + make - + Choose make 选择make - + Choose Debugger 选择调试器 - + Choose Resource Compiler 选择资源编译器 @@ -970,12 +968,12 @@ p, li { white-space: pre-wrap; } 选择性能分析器 - + Confirm 确认 - + Red Panda C++ will clear current compiler list and search for compilers in the following locations:<br /> '%1'<br /> '%2'<br />Are you really want to continue? Red Panda C++ will clear current compiler list and search for compilers in the following locations: '%1' @@ -994,81 +992,80 @@ Are you really want to continue? UTF-8 - + Red Panda C++ will clear current compiler list and search for compilers in the the PATH. <br />Are you really want to continue? 小熊猫C++ 将会清除现有的编译器配置列表,然后在PATH路径中搜索gcc编译器.<br />你确定要继续吗? - - + + Failed 失败 - - + + Can't find any compiler. 找不到编译器 - - + + Compiler Set Name 编译器配置名称 - + Name 名称 - + Compiler Set Folder 编译器所在文件夹 - + New name 新名称 - + Locate C Compiler 定位C编译器 - - - - - - - + + + + + + Executable files (*.exe) 可执行文件 (*.exe) - + Locate C++ Compiler 定位C++编译器 - + Locate Make 定位make程序 - + Locate GDB 定位gdb程序 - + Locate GDB Server 定位gdb server程序 - + Locate windres 定位windres程序 @@ -1077,9 +1074,8 @@ Are you really want to continue? 定位gprof程序 - Locate nasm - 定位nasm程序 + 定位nasm程序 @@ -1348,27 +1344,27 @@ Are you really want to continue? 无法在"%1"找到gdb server - + Execute to evaluate 执行以求值 - + Save file '%1' failed. 保存文件'%1'失败。 - + Can't open file '%1' for write. 无法写入文件'%1'. - + Error in json file '%1':%2 : %3 JSON文件'%1':%2中存在错误:%3 - + Can't open file '%1' for read. 无法读取文件'%1'. @@ -1377,22 +1373,22 @@ Are you really want to continue? 不在当前语境中 - + Compile 编译 - + Source file is more recent than executable. 源文件比程序文件新。 - + Recompile? 重新编译? - + Signal "%1" Received: 收到信号"%1": @@ -1412,13 +1408,13 @@ Are you really want to continue? 失败 - - - - - - - + + + + + + + Error 错误 @@ -1428,7 +1424,7 @@ Are you really want to continue? - + Error Load File 载入文件错误 @@ -1457,44 +1453,44 @@ Are you really want to continue? 继续保存? - + Save As 另存为 - + File %1 already openned! 文件%1已经被打开! - + The text to be copied exceeds count limit! 要复制的内容超过了行数限制! - + The text to be copied exceeds character limit! 要复制的内容超过了字符数限制! - + The text to be cut exceeds count limit! 要剪切的内容超过了行数限制! - + The text to be cut exceeds character limit! 要剪切的内容超过了字符数限制! - + Print Document 打印文档 - - - + + + Ctrl+click for more info Ctrl+单击以获取更多信息 @@ -1503,27 +1499,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 只读 @@ -2216,8 +2212,22 @@ Are you really want to continue? + New C File Template + C文件模板 + + + + New C++ File Template + C++文件模板 + + + + New GAS File Template + GNU汇编文件模板 + + New File Template - 新文件模板 + 新文件模板 @@ -4197,11 +4207,11 @@ Are you really want to continue? - - - - - + + + + + Issues 编译器 @@ -4485,9 +4495,9 @@ Are you really want to continue? - - - + + + Copy 复制 @@ -4498,7 +4508,7 @@ Are you really want to continue? - + Paste 粘贴 @@ -4509,8 +4519,8 @@ Are you really want to continue? - - + + Select All 选择全部 @@ -4633,38 +4643,38 @@ Are you really want to continue? - - + + New Problem Set 新建试题集 - + Add Problem 添加试题 - + Remove Problem 删除试题 - - + + Save Problem Set 保存试题集 - - + + Load Problem Set 载入试题集 @@ -4712,7 +4722,7 @@ Are you really want to continue? - + Remove Problem Case Remove Problem Set 删除试题集 @@ -4720,21 +4730,21 @@ Are you really want to continue? - + Open Anwser Source File 打开答案源代码文件 - + Run All Cases Run Current Case 运行所有案例 - + Problem Cases Validation Options 测试案例验证选项 @@ -4794,15 +4804,15 @@ Are you really want to continue? - - + + Import FPS Problem Set 导入FPS试题集 - - + + Export FPS Problem Set 导出FPS试题集 @@ -5049,7 +5059,7 @@ Are you really want to continue? - + Clear all breakpoints 删除所有断点 @@ -5279,7 +5289,7 @@ Are you really want to continue? 保存为模板... - + New File 新建文件 @@ -5320,7 +5330,7 @@ Are you really want to continue? - + Rename Symbol 重命名符号 @@ -5341,13 +5351,13 @@ Are you really want to continue? - + Export As RTF 导出为RTF - + Export As HTML 导出为HTML @@ -5616,7 +5626,7 @@ Are you really want to continue? 运行参数... - + File Encoding 文件编码 @@ -5710,23 +5720,23 @@ Are you really want to continue? - - - + + + Wrong Compiler Settings 错误的编译器设置 - - - + + + Compiler is set not to generate executable. 编译器被设置为不生成可执行文件。 - + We need the executabe to run problem case. 我们需要可执行文件来运行试题案例。 @@ -5746,7 +5756,7 @@ Are you really want to continue? 无法启动调试器 - + Enable debugging 启用调试参数 @@ -5763,33 +5773,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 请在调试前改正设置。 @@ -5798,8 +5808,8 @@ Are you really want to continue? 重新编译? - - + + Save last open info error 保存上次打开信息失败 @@ -5808,60 +5818,60 @@ 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已存在。是否覆盖? @@ -5869,9 +5879,9 @@ Are you really want to continue? - - - + + + Clear 清除 @@ -5887,7 +5897,7 @@ Are you really want to continue? - + Problem Set %1 试题集%1 @@ -5916,56 +5926,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: 描述: @@ -5974,65 +5984,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 重命名 @@ -6045,17 +6055,17 @@ Are you really want to continue? 要现在去修改设置吗? - + Rename Problem Set 修改试题集名称 - + Can't open last open information file '%1' for write! 无法写入配置文件'%1'。 - + Rename Problem 修改试题名称 @@ -6065,187 +6075,187 @@ Are you really want to continue? 行: %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? 是否现在去改正? - - + + 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 选择答案源代码文件 @@ -6254,17 +6264,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 导出时出错 @@ -6274,7 +6284,7 @@ Are you really want to continue? C/C++源代码文件 (*.c *.cpp *.cc *.cxx) - + New Folder %1 新建文件夹%1 @@ -6287,70 +6297,70 @@ Are you really want to continue? 无标题%1 - + Do you really want to delete %1? 你真的要删除%1吗? - + Do you really want to delete %1 files? 你真的要删除%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? 你真的想要那么做吗? @@ -6359,12 +6369,12 @@ Are you really want to continue? 批量设置案例 - + Choose input files 选择输入数据文件 - + Input data files (*.in) 输入数据文件 (*.in) @@ -6373,78 +6383,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'? @@ -6453,28 +6463,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 选择期望输出文件 @@ -6486,59 +6496,59 @@ Are you really want to continue? - + 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! 提交信息不能为空! @@ -6547,22 +6557,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? 同时从硬盘上删除文件? @@ -6571,27 +6581,27 @@ Are you really want to continue? 无标题 - + New Project File Name 新的项目文件名 - + File Name: 文件名: - + File Already Exists! 文件已存在! - + File '%1' already exists! 文件'%1'已经存在! - + Add to project 添加到项目 @@ -6608,133 +6618,129 @@ 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)”选项,重新编译后再调试。 - The executable doesn't have enough debug info to set breakpoint. - 可执行文件中缺少必要的调试信息来设置断点。 + 可执行文件中缺少必要的调试信息来设置断点。 Please choose a Debug compiler set in the toolbar, or turn on your compiler set's "Generate debug info (-g)" option in the options dialog. 请在工具栏中选用Debug编译器配置集,或者在选项对话框的编辑器配置集页中勾选“生成调试信息(-g3)选项。 - Then recompile and retry debug. - 重新编译后再调试。 + 重新编译后再调试。 - Or you can remove all breakpoints, open cpu info dialog, and try debug machine codes. - 您也可以删除所有断点,打开“CPU信息窗口”,然后调试汇编代码。 + 您也可以删除所有断点,打开“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 @@ -6746,13 +6752,13 @@ Are you really want to continue? - - - - - - - + + + + + + + Error 错误 @@ -6773,97 +6779,96 @@ Are you really want to continue? 清除历史 - - + + The generated executable doesn't have symbol table, and can't be debugged. 编译生成的可执行文件中没有符号表,无法被调试。 - - + + Version Control 版本控制 - Please choose a Debug compiler set in the toolbar, or turn on your compiler set's "Generate debug info (-g3)" option in the options dialog. - 请在工具栏中选用Debug编译器配置集,或者在选项对话框的编辑器配置集页中勾选“生成调试信息(-g3)"选项。 + 请在工具栏中选用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个文件) @@ -7266,105 +7271,105 @@ Are you really want to continue? 无法保存文件'%1'. - + Error Load File 载入文件错误 - - + + Error 错误 - + Can't create folder %1 无法创建文件夹%1 - + Warning 警告 - - + + Can't save file %1 无法保存文件%1 - + File Exists 文件已存在 - + File '%1' is already in the project 文件'%1'已在项目中 - + Project Updated 项目已升级 - + Your project was succesfully updated to a newer file format! 已成功将项目升级到新的格式 - + If something has gone wrong, we kept a backup-file: '%1'... 旧项目文件备份在'%1'。 - + Headers 头文件 - + Sources 源文件 - + Others 其他文件 - + Settings need update 设置需要更新 - + The compiler settings format of Red Panda C++ has changed. The compiler settings format of Dev-C++ has changed. 小熊猫C++的编译器设置格式已发生改变。 - + Please update your settings at Project >> Project Options >> Compiler and save your project. 请在项目 >> 项目属性 >> 编译器设置中修改您的设置并保存您的项目 - + Compiler not found 未找到编译器 - + The compiler set you have selected for this project, no longer exists. 您为该项目设置的编译器不存在。 - + It will be substituted by the global compiler set. 它将会被全局编译器设置代替。 - + Developed using the Red Panda C++ IDE Developed using the Red Panda Dev-C++ IDE 使用小熊猫C++编辑器开发 @@ -7445,7 +7450,7 @@ Are you really want to continue? - + Add Library Files 添加库文件 @@ -7455,13 +7460,12 @@ Are you really want to continue? 资源 - Assembler - 汇编器 + 汇编器 + - Library Files 库文件 @@ -7469,17 +7473,17 @@ Are you really want to continue? ProjectCompiler - + Building makefile... 正在构建makefile... - + - Filename: %1 - 文件名: %1 - + Can't open '%1' for write! 无法写入文件'%1'! @@ -7489,42 +7493,42 @@ Are you really want to continue? - 资源文件: %1 - + Compiling project changes... 正在编译项目修改... - + - Project Filename: %1 - 项目文件名: %1 - + - Compiler Set Name: %1 - 编译器配置: %1 - + Make program '%1' doesn't exists! Make程序“%1”不存在! - + Please check the "program" page of compiler settings. 请检查编译器配置中的“程序”页。 - + Processing makefile: 正在处理makefile... - + - makefile processer: %1 - makefile处理器: %1 - + - Command: %1 %2 - 命令: %1 %2 @@ -7866,32 +7870,32 @@ Are you really want to continue? ProjectModel - + File exists 文件已存在 - + File '%1' already exists. Delete it now? 文件'%1'已存在。是否删除? - + Remove failed 删除失败 - + Failed to remove file '%1' 无法删除文件'%1' - + Rename failed 改名失败 - + Failed to rename file '%1' to '%2' 无法将文件'%1'改名为'%2' @@ -8006,22 +8010,22 @@ Are you really want to continue? ProjectTemplate - + Read failed. 读取失败. - + Can't read template file '%1'. 无法读取模板文件'%1'. - + Can't Open Template 无法打开模板 - + Can't open template file '%1' for read. 无法读取模板文件"%1" @@ -8034,12 +8038,12 @@ Are you really want to continue? 模板文件'%1'不存在. - + Old version template 旧版本模板 - + Template file '%1' has version '%2', which is unsupported. 已不再支持模板文件'%1'的版本(%2)。 @@ -8149,13 +8153,13 @@ Are you really want to continue? QObject - + Save 保存 - + Save changes to %1? 将修改保存到"%1"? @@ -8189,17 +8193,16 @@ Are you really want to continue? GAS文件 - ASM files - ASM文件 + ASM文件 - + Lua files Lua文件 - + Icon files 图标文件 @@ -8334,7 +8337,7 @@ Are you really want to continue? 生成调试信息(-g3) - + Would you like Red Panda C++ to search for compilers in PATH? 您同意小熊猫C++在PATH路径中寻找gcc编译器吗? @@ -8447,7 +8450,7 @@ Are you really want to continue? 只生成汇编代码(-S) - + Confirm 确认 @@ -8468,13 +8471,13 @@ Are you really want to continue? 如果仍然保留这些设置,可能会导致编译错误。<br /><br />请选择“是”,除非您清楚的知道选择“否”的后果, - - + + Compiler set not configuared. 未配置编译器设置。 - + Would you like Red Panda C++ to search for compilers in the following locations: <BR />'%1'<BR />'%2'? 您需要小熊猫C++在下列位置搜索编译器吗:<br />%1<br />%2 @@ -8499,12 +8502,12 @@ Are you really want to continue? C++包含文件 - + Remove 删除 - + Do you really want to remove "%1"? 您确定要删除"%1"吗? @@ -8832,12 +8835,12 @@ Are you really want to continue? 无标题 - + constructor 构造函数 - + destructor 析构函数 @@ -8893,12 +8896,12 @@ Are you really want to continue? RegisterModel - + Register 寄存器 - + Value @@ -9573,18 +9576,18 @@ Are you really want to continue? 性能 - - - + + + Compiler Set 编译器配置集 - - - + + + Compiler @@ -9596,7 +9599,7 @@ Are you really want to continue? 自动链接 - + @@ -9673,15 +9676,15 @@ Are you really want to continue? 杂项 - - + + Program Runner 程序运行 - + Problem Set 试题集 @@ -10199,14 +10202,14 @@ Are you really want to continue? JSON文件'%1':%2中存在错误:%3 - - + + Execute to evaluate 执行以求值 - - + + Not Valid 在当前作用域中无效 @@ -10215,17 +10218,17 @@ Are you really want to continue? 无法读取文件'%1'. - + Expression 表达式 - + Type 类型 - + Value @@ -10233,59 +10236,44 @@ Are you really want to continue? XMakeCompiler - Building xmake.lua file... - 正在构建xmake.lua文件... + 正在构建xmake.lua文件... - - Filename: %1 - - 文件名: %1 + - 文件名: %1 - Can't open '%1' for write! - 无法写入文件'%1'! + 无法写入文件'%1'! - Compiling project changes... - 正在编译项目修改... + 正在编译项目修改... - - Project Filename: %1 - - 项目文件名: %1 + - 项目文件名: %1 - - Compiler Set Name: %1 - - 编译器配置: %1 + - 编译器配置: %1 - Make program '%1' doesn't exists! - Make程序“%1”不存在! + Make程序“%1”不存在! - - Please check the "program" page of compiler settings. - - - - Processing makefile: - 正在处理makefile... + 正在处理makefile... - - makefile processer: %1 - - makefile处理器: %1 + - makefile处理器: %1 - - Command: %1 %2 - - 命令: %1 %2 + - 命令: %1 %2 diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts index bb621f9d..0e1d7f84 100644 --- a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts +++ b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts @@ -652,14 +652,6 @@ Locate windres - - Assembler - - - - Locate nasm - - CppRefacter @@ -1448,7 +1440,15 @@ - New File Template + New C File Template + + + + New C++ File Template + + + + New GAS File Template @@ -4793,22 +4793,6 @@ Please turn off your compiler set's "Strip executable (-s)" option, recompile and retry debug. - - The executable doesn't have enough debug info to set breakpoint. - - - - Then recompile and retry debug. - - - - Or you can remove all breakpoints, open cpu info dialog, and try debug machine codes. - - - - Please choose a Debug compiler set in the toolbar, or turn on your compiler set's "Generate debug info (-g3)" option in the options dialog. - - NewClassDialog @@ -5226,10 +5210,6 @@ Resource - - Assembler - - ProjectCompiler @@ -6172,10 +6152,6 @@ GAS files - - ASM files - - Lua files @@ -6983,53 +6959,6 @@ - - XMakeCompiler - - Building xmake.lua file... - - - - - Filename: %1 - - - - Can't open '%1' for write! - - - - Compiling project changes... - - - - - Project Filename: %1 - - - - - Compiler Set Name: %1 - - - - Make program '%1' doesn't exists! - - - - Please check the "program" page of compiler settings. - - - - Processing makefile: - - - - - makefile processer: %1 - - - - - Command: %1 %2 - - - editorcustomctypekeywords diff --git a/RedPandaIDE/utils.cpp b/RedPandaIDE/utils.cpp index a23c2020..ac6bc102 100644 --- a/RedPandaIDE/utils.cpp +++ b/RedPandaIDE/utils.cpp @@ -86,6 +86,9 @@ FileType getFileType(const QString &filename) if (filename.endsWith(".s",PATH_SENSITIVITY)) { return FileType::GAS; } + if (filename.endsWith(".S",PATH_SENSITIVITY)) { + return FileType::GAS; + } if (filename.endsWith(".dev",PATH_SENSITIVITY)) { return FileType::Project; } diff --git a/libs/qsynedit/qsynedit.pro b/libs/qsynedit/qsynedit.pro index 068b6774..5af6d855 100644 --- a/libs/qsynedit/qsynedit.pro +++ b/libs/qsynedit/qsynedit.pro @@ -36,7 +36,6 @@ SOURCES += qsynedit/codefolding.cpp \ qsynedit/searcher/regexsearcher.cpp \ qsynedit/syntaxer/asm.cpp \ qsynedit/syntaxer/cpp.cpp \ - qsynedit/syntaxer/customhighlighterv1.cpp \ qsynedit/syntaxer/glsl.cpp \ qsynedit/syntaxer/lua.cpp \ qsynedit/types.cpp \ @@ -62,7 +61,6 @@ HEADERS += \ qsynedit/searcher/regexsearcher.h \ qsynedit/syntaxer/asm.h \ qsynedit/syntaxer/cpp.h \ - qsynedit/syntaxer/customhighlighterv1.h \ qsynedit/syntaxer/glsl.h \ qsynedit/syntaxer/lua.h \ qsynedit/syntaxer/makefile.h \ diff --git a/libs/qsynedit/qsynedit/syntaxer/glsl.cpp b/libs/qsynedit/qsynedit/syntaxer/glsl.cpp index a3a505b8..947c407f 100644 --- a/libs/qsynedit/qsynedit/syntaxer/glsl.cpp +++ b/libs/qsynedit/qsynedit/syntaxer/glsl.cpp @@ -83,9 +83,6 @@ const QSet GLSLSyntaxer::Keywords { GLSLSyntaxer::GLSLSyntaxer(): Syntaxer() { - mAsmAttribute = std::make_shared(SYNS_AttrAssembler, - TokenType::Embeded); - addAttribute(mAsmAttribute); mCharAttribute = std::make_shared(SYNS_AttrCharacter, TokenType::Character); addAttribute(mCharAttribute); @@ -131,11 +128,6 @@ GLSLSyntaxer::GLSLSyntaxer(): Syntaxer() resetState(); } -const PTokenAttribute &GLSLSyntaxer::asmAttribute() const -{ - return mAsmAttribute; -} - const PTokenAttribute &GLSLSyntaxer::preprocessorAttribute() const { return mPreprocessorAttribute; @@ -1279,8 +1271,6 @@ QString GLSLSyntaxer::getToken() const const PTokenAttribute &GLSLSyntaxer::getTokenAttribute() const { switch (mTokenId) { - case TokenId::Asm: - return mAsmAttribute; case TokenId::Comment: return mCommentAttribute; case TokenId::Directive: diff --git a/libs/qsynedit/qsynedit/syntaxer/glsl.h b/libs/qsynedit/qsynedit/syntaxer/glsl.h index f0778802..940fd636 100644 --- a/libs/qsynedit/qsynedit/syntaxer/glsl.h +++ b/libs/qsynedit/qsynedit/syntaxer/glsl.h @@ -24,7 +24,6 @@ namespace QSynedit { class GLSLSyntaxer: public Syntaxer { enum class TokenId { - Asm, Comment, Directive, Identifier, @@ -57,8 +56,6 @@ public: GLSLSyntaxer(const GLSLSyntaxer&)=delete; GLSLSyntaxer& operator=(const GLSLSyntaxer&)=delete; - const PTokenAttribute &asmAttribute() const; - const PTokenAttribute &preprocessorAttribute() const; const PTokenAttribute &invalidAttribute() const; @@ -148,7 +145,6 @@ private: int mLeftBraces; int mRightBraces; - PTokenAttribute mAsmAttribute; PTokenAttribute mPreprocessorAttribute; PTokenAttribute mInvalidAttribute; PTokenAttribute mNumberAttribute;