组件
- 设置框架
设置框架管理应用程序设置以及工程。 本文档解释了如何使用该框架以及它的一些内部工作原理。 源代码指南 相关代码大部分在 common/settings 和 common/project 中。 C++ 类 描述 SETTINGS_MANAGER 加载和卸载设置文件和工程 JSON_SETTINGS 所有设置对象的基类。表示单个 JSON 文件。 NESTED_SETTINGS 存储在另一个 (即没有自己的文件) 中的 JSON_SETTINGS 对象 PARAM 参数:用于在 JSON_SETTINGS 中存储数据的 helper 类 APP_SETTINGS_BASE 应用程序 (框架) 设置的基类 COLOR_SETTINGS 设计用于存储颜色主题的 JSON_SETTINGS 的子类 COMMON_SETTINGS 适用于 KiCad 每个组件的设置 PROJECT_FILE 表示工程 (.kicad_pro) 文件的 JSON_SETTINGS PROJECT_LOCAL_SETTINGS 表示工程本地状态 (.kicad_prl) 文件的 JSON_SETTINGS 存储设置的位置 设置可能存储在四个主要位置: 在 COMMON_SETTINGS 中:这是 KiCad 所有部分共享的设置。 在应用程序设置对象 (APP_SETTINGS_BASE 的子类) 中。 这些对象 (如 EESCHEMA_SETTINGS 和 PCBNEW_SETTINGS) 存储特定于 KiCad 一部分的设置。 具体地说,这些对象是在其各自应用程序的上下文中编译的,因此它们可以访问可能不属于 common 的数据类型。
- 工具框架
本文档简要概述了 GAL 画布中工具系统的结构。 介绍 GAL (图形抽象层) 框架提供了一种强大的方法,可以轻松地向 KiCad 添加工具。 与旧的 “遗留” 画布相比,GAL 工具更灵活、更强大,也更容易编写。 GAL “工具” 是提供一个或多个要执行的 “操作” 的类。 动作可以是简单的一次性动作(例如 “放大” 或 “翻转对象” ), 也可以是交互过程(例如 “手动编辑多边形点”)。 Pcbnew GAL 中的一些工具示例如下: 选择工具 - "normal" 工具。此工具进入一种状态, 在该状态下可以将项目添加到选定对象的列表中, 然后其他工具即可对其执行操作。 (pcbnew/tools/selection_tool.cpp, pcbnew/tools/selection_tool.h) 编辑工具 - 此工具在组件被 "picked up" 时处于活动状态, 并跟踪鼠标位置以允许用户移动组件。 编辑的各个方面 (例如翻转) 也可由热键或其他工具使用。 (pcbnew/tools/edit_tool.cpp,pcbnew/tools/edit_tool.h) 绘图工具 - 此工具控制绘制图形元素 (如线段和圆) 的过程。 (pcbnew/tools/drawing_tool.cpp,pcbnew/tools/drawing_tool.h) 缩放工具 - 允许用户放大和缩小。 工具的主要部件 工具有两个主要方面:操作和工具类。 工具操作 TOOL_ACTION 类充当 GAL 框架调用工具提供的操作的句柄。 一般来说,每个操作,不管是交互的还是非交互的,都有一个 TOOL_ACTION 实例。 这提供了: 名称,格式为 pcbnew.ToolName.actionName,内部用于分配操作
- Plugins Framework
The KiCad plugin system is a framework for extending the capabilities of KiCad using shared libraries. One of the main advantages of using a plugin is that it is not necessary to rebuild the KiCad suite while developing a plugin; in fact, plugins can be built with the aid of a very small set of headers from the KiCad source tree. Removing the requirement to build KiCad during plugin development greatly increases productivity by ensuring that the developer only compiles code directly related to the plugin which is being developed and thus reducing the time required for each build and test cycle.
- 测试框架
单元测试 KiCad 的单元测试数量有限, 可用于检查某些功能是否正常工作。 测试是使用 CMake 的 CTest,组件注册的。 CTest 收集并运行所有不同的测试程序。 大多数 C++ 单元测试都是使用 Boost 单元测试框架编写的, 但这不是向测试套件添加测试所必需的。 测试 CMake 目标一般以 qa_ 开头,CTest 内的测试名称相同, 但没有 qa_ 前缀。 运行测试 您可以使用 make test 或 ctest 进行构建后的所有测试。 后一选项允许许多 CTest 选项,这些选项可能非常有用,尤其是在自动化或 CI 环境中。 运行特定测试 如果要运行特定的测试可执行文件,可以直接使用 ctest 运行,也可以直接运行该可执行文件。 在处理特定测试并且您希望访问测试可执行文件的参数时,直接运行通常是最简单的方式。 例如: # 运行 libcommon 测试 cd /path/to/kicad/build qa/tests/common/qa_common [parameters] 对于 Boost 单元测试,可以使用 <test>--help 查看测试选项。 常见的有用模式: <test> -t "Utf8/*" 运行 Utf8 测试套件中的所有测试。 <test> -t "Utf8/UniIterNull" 仅在特定套件中运行单个测试。 <test> -l all 向输出添加更详细的调试。
- S-表达式
S-表达式 是与 XML 相同的文本流或字符串,由一系列元素组成。 每个元素要么是原子,要么是列表。 原子对应于字符串,而列表对应于 s-表达式。 下面的语法代表了我们对 s-表达式 的定义: sexpr ::= ( sx ) sx ::= atom sxtail | sexpr sxtail | NULL sxtail ::= sx | NULL atom :: quoted | value quoted :: "ws_string" value :: nws_string 原子可以是带引号的字符串 (由双引号括起来的包含空格的字符串),也可以是不需要用引号引起来的非空格字符串。 KiCad 中使用的 s-expression 语法使用两种引用/语法策略, 这两种策略是由 Specctra DSN 规范的需求和我们自己的非 specctra 需求提供的。 Specctra DSN 规范在引用方面不是很清楚,最重要的是 Freerouter 的解释, 由于希望与 Freerouter 兼容,它实际上无论如何都会取代 Specctra DSN 规范中的任何内容。 我们有自己的需求,超出了 Specctra DSN 规范的需求,因此我们支持引用原子的两种语法或引用协议: Specctra 引用协议 (specctraMode)