Skip to main content

Module mount

Module mount 

Source
Expand description

mount —— 模块挂载表(0.9.34「插件界面 = 一模块一菜单」波)。

规则(用户裁定,2026-11-01):

  • 一个模块(ek_core::Plugin::kind)一个菜单项、一扇窗;菜单项数只随模块数变, 不随实例数变(ctp_278153 / ctp_220380 共用一个「交易网关」项)。
  • 窗内怎么分(表格 / tab / 分栏)由模块自己决定 —— CTP 用一张账户表,dm/oms/tq 用各自 的 ui_face。框架只负责“取到实例、把宿主交进去“。
  • 关窗不销毁实例(= Python self.widgets 字典),再点直接复用编辑中的内容。
  • 装配名单驱动:没装的不出现;always = true 的模块(交易网关 / 宿主自有窗)恒在。

与已退役的 faces.rs(0.9.10 连根铲)的关系:那条线是“一实例一面“,本模块换成 “一模块一窗”,并把派发收成 Body 枚举 + match(不引 trait、不建新 crate)。

Structs§

CfgBridge
CfgHost 的 ek-ui 实现:写档走 cfg.save 总线,cfg 缺席 = 直写托底 (与 plugin.rs::cfg_bus_save 同口径,不另造一条写路)。
GroupInfo
一个模块的扫描结果(锁外采集,Registry::sync_groups 只消费它)。
ModDesc
模块描述(静态元数据)。
ModuleWin
一扇模块窗。
Registry
挂载表。

Enums§

Body
一扇模块窗的体。新增一个插件面 = 加一个变体 + 一个 match 分支 (scripts/check_plugin_faces.ps1 会比对“有面必有体“)。
Shape
窗内形状(A8)。本期只实现 Shape::Single;PerInstance 是留给 “确实需要按实例拆二级菜单“的模块的逃生门(字段就位、行为不实现)。

Constants§

MODULES
已知模块表。顺序无关(渲染按 order)。

Functions§

engine_of
便利:引擎句柄(窗口体里取插件实例用)。
scan_groups
扫引擎里在册插件 → 按 kind 归组(不碰挂载表锁;见 sync_groups 注释)。