docs: specify esc hide preview controls
This commit is contained in:
@@ -102,6 +102,33 @@ Scene 坐标是 `QGraphicsScene` 中的坐标。
|
||||
- 选中框和控制点仅用于交互,不参与最终导出。
|
||||
- 操作提示仅显示在 UI 中,不参与最终导出。
|
||||
|
||||
### 5.1 预览控制层显隐
|
||||
|
||||
预览区的印花选中框、缩放控制点、旋转连接线和旋转控制点属于交互控制层。该控制层只帮助用户识别和操作当前印花,不属于图片内容。
|
||||
|
||||
按键行为:
|
||||
|
||||
- 当预览区拥有键盘焦点时,按 `Esc` 应隐藏当前印花的交互控制层。
|
||||
- `Esc` 只隐藏印花选中框、缩放控制点、旋转连接线和旋转控制点,不隐藏印花图片本身。
|
||||
- `Esc` 不执行撤销,不回滚当前拖动、缩放或旋转结果,不修改 `TransformState`。
|
||||
- 如果焦点在参数输入框、文件列表或其他控件中,预览区可以不响应该次 `Esc`。
|
||||
|
||||
焦点规则:
|
||||
|
||||
- `QGraphicsView` 应允许获得键盘焦点。
|
||||
- 用户点击预览区时,预览区应获得焦点,以便后续 `Esc` 能被画布接收。
|
||||
|
||||
恢复规则:
|
||||
|
||||
- 控制层被隐藏后,用户再次点击预览区中的印花图片,应恢复控制层,并继续沿用原有拖动逻辑。
|
||||
- 控制层隐藏期间,隐藏的缩放控制点和旋转控制点不需要响应命中测试;恢复后原有缩放、旋转行为保持不变。
|
||||
- 重新加载印花图片或创建新的印花图层时,控制层默认显示。
|
||||
|
||||
一致性规则:
|
||||
|
||||
- 控制层显隐状态不参与模板保存、队列项保存、单张导出或批量导出。
|
||||
- 最终导出仍只读取 `TransformState` 和原始图片,不读取控制层显隐状态。
|
||||
|
||||
## 6. 状态模型
|
||||
|
||||
印花变换状态使用统一模型表示:
|
||||
@@ -567,6 +594,9 @@ RGB 颜色距离
|
||||
- 预览缩放到 50% 或 200% 后,拖动仍能得到正确原图坐标。
|
||||
- 参数面板输入后预览同步。
|
||||
- 预览拖动后参数面板同步。
|
||||
- 点击预览区后按 `Esc`,印花选中框、缩放控制点和旋转控制点隐藏,但印花仍可见。
|
||||
- 控制层隐藏后再次点击印花,控制层恢复,拖动、缩放、旋转仍按原有规则工作。
|
||||
- 控制层显隐不改变 `TransformState`,也不影响导出结果。
|
||||
- 白色衣服配浅色印花时能标记为低对比或不明显。
|
||||
- 深色衣服配深色印花时能标记为低对比或不明显。
|
||||
- 透明 PNG 的透明区域不参与印花主色判断。
|
||||
|
||||
@@ -1643,3 +1643,35 @@
|
||||
- [x] 成功/失败状态一眼可辨
|
||||
- [x] 不影响原有等待计时、写回进度和复位行为
|
||||
- [x] 验证:`python -m py_compile src/app/widgets/ai_outfit_panel.py tests/test_ai_outfit_panel.py`、`python tests/test_ai_outfit_panel.py`、离屏启动主窗口通过;全套 `python -m unittest discover -s tests` 仅失败于既有未提交 `packaging/default_config/ai_models.json` 含非空 `api_key`,与本任务无关
|
||||
|
||||
### 19.34 添加印花预览:Esc 隐藏选中框与控制点 — docs/08 §5.1
|
||||
|
||||
前置阅读:
|
||||
|
||||
- `docs/08-image-editor-design.md`(§5.1 预览控制层显隐)
|
||||
- `src/app/widgets/image_canvas.py`(`_CanvasView`、`_sel_rect`、`_corner_handles`、`_rot_line`、`_rot_handle`、`_hit_test`、`_on_press`)
|
||||
- `tests/` 中现有离屏 GUI 测试写法
|
||||
|
||||
背景:
|
||||
|
||||
「添加印花」模块中,选择衣服文件夹和印花文件夹后,中间预览区域会把印花叠加在衣服图片上,并显示蓝色选中框、缩放控制点和旋转控制点。用户希望按 `Esc` 时临时隐藏这些控制框和控制点,让预览更接近最终效果;之后再次点击预览区的印花时,仍能恢复并按原有方式拖动、缩放、旋转。
|
||||
|
||||
任务:
|
||||
|
||||
- [ ] `image_canvas.py`:让 `_CanvasView` 可以获得键盘焦点,并在点击预览区时获取焦点
|
||||
- [ ] `image_canvas.py`:新增控制层显隐状态,例如 `_controls_visible`
|
||||
- [ ] `image_canvas.py`:新增统一方法显示 / 隐藏 `_sel_rect`、`_corner_handles`、`_rot_line`、`_rot_handle`
|
||||
- [ ] `image_canvas.py`:按 `Esc` 时只隐藏交互控制层,不隐藏 `_print_item`
|
||||
- [ ] `image_canvas.py`:按 `Esc` 不修改 `TransformState`,不触发导出参数变化
|
||||
- [ ] `image_canvas.py`:控制层隐藏后,点击印花图片先恢复控制层,再沿用现有拖动逻辑
|
||||
- [ ] `image_canvas.py`:隐藏期间缩放控制点和旋转控制点不需要响应命中测试;恢复后原有缩放、旋转行为保持不变
|
||||
- [ ] `image_canvas.py`:重新加载印花图片或创建新的印花图层时,控制层默认显示
|
||||
- [ ] 测试或离屏验证:覆盖 `Esc` 隐藏、点击印花恢复、`TransformState` 不变
|
||||
|
||||
验收:
|
||||
|
||||
- [ ] 点击预览区后按 `Esc`,蓝色选中框、缩放控制点、旋转连接线和旋转控制点隐藏
|
||||
- [ ] 按 `Esc` 后印花图片仍然显示,预览不变为空白
|
||||
- [ ] 控制层隐藏后再次点击印花,控制层恢复,并可继续拖动、缩放、旋转
|
||||
- [ ] 控制层显隐不改变 X/Y、宽高、角度,也不影响单张导出和批量导出
|
||||
- [ ] 通过必要语法检查和离屏 GUI 验证
|
||||
|
||||
Reference in New Issue
Block a user