当前位置: 首页 > news >正文

kicad源代码研究:参照Candence实现工程管理

创建工程:

创建工程和打开工程触发事件:

KICAD_MANAGER_ACTIONS::newProject
KICAD_MANAGER_ACTIONS::openProject

newProject和OpenProject事件响应具体实现,在KICAD_MANAGER_CONTROL类中实现:

 Go( &KICAD_MANAGER_CONTROL::NewProject,         KICAD_MANAGER_ACTIONS::newProject.MakeEvent() );

KICAD_MANAGER_CONTROL::NewProject中的具体实现中调用了KICAD_MANAGER_FRAME的CreateNewProject和LoadProject。

KICAD_MANAGER_FRAME* m_frame;m_frame->CreateNewProject( pro );m_frame->LoadProject( pro );

ProjectTree页面创建

创建ProjectTree在kiaca/kicad_manager_frame.cpp中是实现,

m_leftWin = new PROJECT_TREE_PANE( this );

btdabs/PROJECT_TREE_PANEZ

void PROJECT_TREE_PANE::ReCreateTreePrj()

project treee右键事件

void PROJECT_TREE_PANE::onRight( wxTreeEvent& Event )

创建sch工程文件:

void BTDABS_MANAGER_FRAME::CreateSchFile(const wxFileName& aProjectFileName)
{wxFileName fn( aProjectFileName.GetFullPath() );fn.SetExt( BTDSchematicFileExtension );// If a <project>.btd_sch file does not exist, create a "stub" file ( minimal schematic// file ).if( !fn.FileExists() ){wxFFile file( fn.GetFullPath(), "wb" );if( file.IsOpened() )file.Write( wxString::Format( "(btd_sch (version %d) (generator eeschema)\n""  (paper \"A4\")\n  (lib_symbols)\n""  (symbol_instances)\n)\n",SEXPR_SCHEMATIC_FILE_VERSION ) );// wxFFile dtor will close the file}
}

int KICAD_MANAGER_CONTROL::CreateSch( const TOOL_EVENT& aEvent )
{auto fileName = Prj().GetProjectFullName();if(false == fileName.IsEmpty()){m_frame->CreateSchFile(fileName);}return 0;
}

FlowManager

/kicad/FLOW_MANAGER_MODEL类:

void FLOW_MANAGER_MODEL::RebuildFlow()
{
CreateFlowNode( wxID_ANY, _("Create"), "", false, parentNode, &KICAD_MANAGER_ACTIONS::createSch );
KICAD_MANAGER_ACTIONS::createSch 

createSch事件的响应函数:

 Go( &KICAD_MANAGER_CONTROL::CreateSch, KICAD_MANAGER_ACTIONS::createSch.MakeEvent() );

在指定路径创建文件夹

   wxString absWorkDir;wxFileName dirName( absWorkDir + wxFileName::GetPathSeparator());if( !dirName.DirExists() ){if( !dirName.Mkdir( wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL | wxPATH_RMDIR_RECURSIVE ) ){wxLogMessage( "Failed to create directory: %s", absWorkDir );return "";}}
http://www.lryc.cn/news/252783.html

相关文章:

  • Asp.net core WebApi 配置自定义swaggerUI和中文注释,Jwt Bearer配置
  • DNS 查询结果逐行解释
  • ArcGIS制作广场游客聚集状态及密度图
  • 同旺科技 USB TO SPI / I2C --- 调试W5500_TCP Client接收数据
  • MQ - KAFKA 高级篇
  • 如何快速查找最后(最右侧)隐藏列
  • 精密制造ERP系统包含哪些模块?精密制造ERP软件是做什么的
  • TypeScript 的高级技巧
  • TiDB 7.x 源码编译之 TiDB Server 篇,及新特性详解
  • Hadoop实验putty文件
  • 研发人员绩效考核难题及解决措施
  • Inference with C# BERT NLP Deep Learning and ONNX Runtime
  • 6、原型模式(Prototype Pattern,不常用)
  • 图像万物分割——Segment Anything算法解析与模型推理
  • Redis实战篇笔记(最终篇)
  • 游戏配置表的导入使用
  • ❀dialog命令运用于linux❀
  • 【算法】蓝桥杯2013国C 横向打印二叉树 题解
  • XunSearch 讯搜 error: storage size of ‘methods_bufferevent’ isn’t known
  • 基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(三)——serverless数据分析
  • 08、分析测试执行时间及获取pytest帮助
  • 视频集中存储/智能分析融合云平台EasyCVR平台接入rtsp,突然断流是什么原因?
  • JavaScript 复杂的<三元运算符和比较操作>的组合--案例(一)
  • uniapp搭建内网映射测试https域名
  • 国防科技大博士招生入学考试【50+论文主观题】
  • CUDA简介——编程模式
  • Linux 软件安装
  • flask之邮件发送
  • 【Filament】Filament环境搭建
  • 外包干了2个月,技术倒退2年。。。。。