视觉复审在 M68 的判词是不能把「全宽单卡」当页面模板(1180 宽下正文单行 712px ≈ 118 字符)。 本 mission 把它落成一套**布局系统**,四个页面只是它的用例: - `pages/layout.rs`:官方 600 / 840 两个档位 → 三种版面(单列 / supporting-pane / list-detail), 阈值由列宽和算出(设置 240+24+320 → 720;实例 336+24+320 → 816 ≤ 840),行宽硬上限 14 × 0.5em × 72 = **504px**,全部是纯函数,`pages/layout/tests.rs` 用绝对值和边界表钉死。 - `pages/frame.rs`:页头(56 / 两行 84)+ 内容列(≤504)+ 两列骨架 + 空态位; `pages/frame/pieces.rs` 是占位控件(卡片 / 分隔线 / 文本按钮 / 图标),令牌驱动、无完整状态机, 待 M75 的 components 家族合入后替换。 - 四页:实例(list-detail,列表列 336 独立滚动,窄窗退化成整页切换)、 设置(supporting-pane,240 分组导航 + ≤504 表单列)、下载 / 日志(单列,两行页头)。 - `pages/harness.rs` + `examples/pages_demo.rs`:自带 `--screen/--width/--screenshot-theme`, 不碰 `cli.rs` / `app.rs`(M75 在改)。 偏离与说明: - 布局用「页边距 16/24」而非 16/24/32,官方 expanded 也是 24(少一条偏离登记); - 实例空详情态一屏会有 5 档字号(22/16/24/12 + 14 的操作按钮),未截图的状态,已知并登记; - `lib.rs` 只加一行 `pub mod pages;`。
38 lines
1.3 KiB
Rust
38 lines
1.3 KiB
Rust
//! 页面骨架截图入口(M84 `PAGEFRAME` 的验收通道)。
|
||
//!
|
||
//! ```text
|
||
//! cargo run -p unlucky-app-iced --example pages_demo -- \
|
||
//! --screen=instances --width=1180 --height=760 \
|
||
//! --screenshot=out.png --screenshot-theme=light --software-renderer
|
||
//! ```
|
||
//!
|
||
//! 参数解析与 iced 接线都在 `unlucky_app_iced::pages::harness` 里:**本 example 只是入口**,
|
||
//! 它也刻意不接 `cli.rs`(那边归 M75)。详细口径见 `pages::harness` 的模块文档。
|
||
|
||
use std::process::ExitCode;
|
||
|
||
use unlucky_app_iced::pages::harness::{self, Request};
|
||
|
||
fn main() -> ExitCode {
|
||
let request = match Request::parse(std::env::args().skip(1)) {
|
||
Ok(request) => request,
|
||
Err(message) => {
|
||
eprintln!("[cli] {message}");
|
||
eprintln!(
|
||
"用法:pages_demo [--screen=instances|download|settings|logs] [--width <px>] \
|
||
[--height <px>] [--theme=light|dark] [--screenshot-theme=light|dark] \
|
||
[--screenshot <png>] [--renderer=auto|gpu|cpu] [--software-renderer]"
|
||
);
|
||
return ExitCode::from(2);
|
||
}
|
||
};
|
||
|
||
match harness::run(request) {
|
||
Ok(()) => ExitCode::SUCCESS,
|
||
Err(message) => {
|
||
eprintln!("[run] {message}");
|
||
ExitCode::FAILURE
|
||
}
|
||
}
|
||
}
|