CDK6182CHR / qETRC

使用Qt (C++) 重构的pyETRC项目。原始项目参见 https://github.com/CDK6182CHR/train_graph
GNU General Public License v3.0
62 stars 9 forks source link

qETRC

Electronic Train Running Chart implemented with Qt

To build this project from source code, see build

本项目是对此前的pyETRC项目的C++重构版本,工程名暂定为qETRC。本项目基于GPLv3协议开放源代码,在协议允许范围内,作者保留一切权利和最终解释权。

联系方式:mxy0268@qq.com

在线文档(尚未完成):https://qetrc.readthedocs.io/

环境

自2023年6月16日起,改为使用CMake构建,原基于qmake的构建流程作废。详见build

与pyETRC的关系

本项目定位为采用C++重构版本的pyETRC,并做一定的扩展。进行这个重构是因为Python的动态类型难于拿捏,在过去三年pyETRC的开发过程中,由于数据结构设计的草率等原因,代码难以维护。另外,使用Python开发时,对对象生命周期的控制较弱(由于赋值语义问题,多个对象共享同一个数据对象时容易出问题),对数据结构的控制不够精细(并不是说不能,但用Python写链表之类的东西总是怪怪的),这些限制了原有程序的重构。

qETRC重新设计了数据结构,新增线路区间RailInterval)的抽象,并采用类似双链表的形式组织数据,使得基于区间的数据(标尺、天窗)等有了实际的依托,理论上更加安全。此外,依托新的界面,对原有框架进行扩展,由仅支持一条线路、一个运行图窗口拓展到支持多条线路和多个运行图窗口同时打开。

qETRC远期计划完全替代pyETRC,实现绝大多数的pyETRC既有功能,除了一些不大常用或容易引起问题的小功能。目前比较明确将会丢弃的功能是手动运行线管理功能。

基本概念

本项目数据的最高级别抽象(i.e. 最大范围)为运行图(Diagram),每个程序实例在同一时刻仅处理一个运行图对象。每个运行图对象含有以下基础数据:

除此之外,每个运行图可以具有若干个视窗/页面DiagramPage),它与程序图形界面中的运行图窗口(DiagramWidget)是一一对应的。每个运行图页面可以包含一条或者多条基线。

在设计数据结构和算法时,原则上,考虑以下数据规模:

项目结构

以下为开发者提供一些初步的信息。关于具体的文件、类、函数的结构及其说明,可以采用Doxygen等工具生成文档浏览。以下给出基本的文件结构(至文件夹层次)及其划分逻辑:

致谢

本项目使用了以下的开源库:

衷心感谢以上项目相关开发者的工作及其提供的便利。

捐赠

qETRC目前免费开源。

如果本项目对你有帮助,或你喜欢本项目,可以捐赠开发者。

感谢支持!