certflow.actions.registry module¶
统一 action 注册表(Phase 3,蓝图 §1.6)。
将分散在 query_view / correction_queue_view / main_window 的
action 派发收敛为单一信源:
action 名→视图方法名``(``ActionSpec.method);派发统一走
dispatch(view, action_name, item=None),经getattr(view, method)解析并调用,替换 query_view 的三套内联字典、correction_queue 的getattr反射、 main_window 的硬编码导航 lambda。
设计要点:
- 注册表为**纯 Python、无 Qt 依赖**,便于单元测试;
- query_view 的 lambda action(select_all / hide_selected / mark_inspected 等)
已提升为
_action_*命名方法并注册(任务 1.2);工具栏与右键菜单现已 100% 经dispatch派发,无内联 if/分支回退;set_status_*/set_supply_type_*等配置驱动 动态 action 经前缀通用 action(set_status/set_supply_type)承接。
main_window导航按钮(视图切换)已在 Phase 2.1 接入(nav.*action →_nav_*方法)。
- class certflow.actions.registry.ActionSpec(name, method, label='', icon='', tooltip='', danger=False, category='general')[源代码]¶
基类:
object单个 UI action 的规范描述。
- certflow.actions.registry.register(spec)[源代码]¶
注册单个 action。重复注册后者覆盖前者。
- 参数:
spec (ActionSpec)
- 返回类型:
None
- certflow.actions.registry.register_many(specs)[源代码]¶
批量注册。
- 参数:
specs (list[ActionSpec])
- 返回类型:
None
- certflow.actions.registry.get_spec(action_name)[源代码]¶
按名取 action 规范;不存在返回 None。
- 参数:
action_name (str)
- 返回类型:
ActionSpec | None
- certflow.actions.registry.dispatch(view, action_name, item=None)[源代码]¶
在
view上派发action_name。解析流程:
REGISTRY[action_name].method→getattr(view, method)→ 调用。 命中且方法存在返回 True;action 未注册或视图无该方法返回 False(调用方据此告警)。前缀通用处理:
set_status_待生产等动态 action 名未精确注册时,回落到通用set_status/set_supply_typeaction(仍走注册表,无视图内联分支)。 方法签名适配:声明item形参的方法在item非空时接收上下文项;声明action_name形参的方法始终接收 action 名(供set_status等从名解析取值)。