Printing failures say printing failed, in every app (T-13)

This commit is contained in:
ZacharyZhang-NY committed 2026-10-09 19:49:08 -04:00
1 parent 18158a8282
commit 843657a6b3
9 files changed
+18 -20

No files matched your search

+2 -4
View File
@@ -81,10 +81,8 @@ impl Docs {
let path = source.work.join("print.pdf");
let printing = path.clone();
return self.write_pdf(tab, path, pdf, cx, move |docs, written, cx| match written {
Ok(()) => ely_office::print_later(printing, cx, |docs, error, cx| {
docs.output_failed(&error, cx)
}),
Err(error) => docs.output_failed(&error.to_string(), cx),
Ok(()) => ely_office::print_later(printing, cx),
Err(error) => docs.print_failed(&error.to_string(), cx),
});
}
let Some(dir) = ely_office::folder(source) else {
+1 -3
View File
@@ -343,9 +343,7 @@ impl Desk {
if !job.lost.whole() {
self.warn_lost(&job.lost, None, cx);
}
return ely_office::print_later(pdf, cx, |desk, why, cx| {
desk.exported(Err(io::Error::other(why)), cx)
});
return ely_office::print_later(pdf, cx);
};
// Never over the open file, not even through a link.
let moved = not_open(self, &to)
+1 -1
View File
@@ -95,7 +95,7 @@ impl Viewer {
id,
move |worker, doc| worker.get()?.print_copy(*doc, &out),
move |viewer, done, _, cx| match done {
Ok(()) => ely_office::print_later(printing, cx, |viewer, error, cx| viewer.panel_failed(&error, cx)),
Ok(()) => ely_office::print_later(printing, cx),
Err(error) => viewer.failed(&error, cx),
},
cx,
+1 -1
View File
@@ -185,7 +185,7 @@ impl Deck {
let path = work.join("print.pdf");
let printing = path.clone();
return self.write_pdf(&output, path, cx, move |_, cx| {
ely_office::print_later(printing, cx, |deck, error, cx| deck.output_failed(&error, cx))
ely_office::print_later(printing, cx)
});
}
let Some(dir) = ely_office::folder(source) else {
+2 -4
View File
@@ -144,10 +144,8 @@ impl Book {
tab,
move |worker, doc| doc.export_pdf(worker, &url, &WHOLE),
move |book, written, _, cx| match written {
Ok(()) => ely_office::print_later(path, cx, |book, error, cx| {
book.output_failed(&error, cx)
}),
Err(error) => book.output_failed(&error.to_string(), cx),
Ok(()) => ely_office::print_later(path, cx),
Err(error) => book.print_failed(&error.to_string(), cx),
},
cx,
);
+7 -6
View File
@@ -242,11 +242,7 @@ pub fn in_window<H: Host, R>(
}
/// Opens the print panel after GPUI releases the app.
pub fn print_later<H: Host>(
pdf: std::path::PathBuf,
cx: &mut Context<H>,
failed: impl FnOnce(&mut H, String, &mut Context<H>) + 'static,
) {
pub fn print_later<H: Tabs>(pdf: std::path::PathBuf, cx: &mut Context<H>) {
// The panel's modal loop calls back into GPUI.
cx.spawn(async move |this, cx| {
let printed = ely_platform::print::print_pdf(&pdf);
@@ -258,7 +254,7 @@ pub fn print_later<H: Host>(
Ok(printed) => log::info!("office: print done, printed {printed}"),
Err(error) => {
if this
.update(cx, |host, cx| failed(host, error.to_string(), cx))
.update(cx, |host, cx| host.print_failed(&error.to_string(), cx))
.is_err()
{
log::error!("office: printing failed after its window closed: {error}");
@@ -293,6 +289,11 @@ pub trait Tabs: Host {
self.toast_unlogged(text, severity, cx);
}
fn print_failed(&self, error: &str, cx: &mut App) {
let text = text(cx, "office.print.failed", &[("error", error)]);
self.toast(text, Severity::Danger, cx);
}
/// A success toast with a button that opens `path`.
fn toast_output(&self, text: SharedString, path: std::path::PathBuf, cx: &mut App) {
log::info!("{}: {text}", Self::KIND.app.slug());
+2
View File
@@ -16,6 +16,7 @@ pub(super) const EN: &[(&str, &str)] = &[
"A conversion writes a new file; pick another name",
),
("office.error.changed", "The document changed meanwhile; try again"),
("office.print.failed", "Printing failed: {error}"),
("office.recovery.failed", "A recovery copy was not written: {error}"),
("office.recovery.off", "Recovery copies are off for this run: {error}"),
("office.recovery.lost", "{name} could not be recovered: {error}"),
@@ -101,6 +102,7 @@ pub(super) const ZH_CN: &[(&str, &str)] = &[
("office.error.conflict", "{name} 已在磁盘上改动,保存已停止"),
("office.error.convert", "格式转换要写成新文件,请换个名字"),
("office.error.changed", "文档在此间已改动,请重试"),
("office.print.failed", "打印失败:{error}"),
("office.recovery.failed", "恢复副本未能写入:{error}"),
("office.recovery.off", "本次运行不写恢复副本:{error}"),
("office.recovery.lost", "{name} 未能恢复:{error}"),
+1 -1
View File
@@ -20,7 +20,7 @@
- [x] T-10 CSV 导入对话框开着时打开任何别的对话框,待导入的文件静默消失 — 被挤开的导入回到队头,已读完的保留列类型;R2 PASS
- [x] T-11 对话框比其标签活得久:导出、定义名称、重命名不可见却“开着”,挡住导入;名称表的“转到”激活已关闭的标签 — 关标签时一并关掉其对话框与选项列表;R1 PASS
- [x] T-12 打印区域是整列或整行时页面设置无法应用 — 打印区域可为整列、整行(每端至多一个 $);R2 PASS
- [ ] T-13 打印失败报成“导出失败”(非 macOS 必现)
- [x] T-13 打印失败报成“导出失败”(非 macOS 必现) — print_later 自己以“打印失败”报错,五个应用同;R1 PASS
- [ ] T-14 导入扫描把整个文件的每个字段都建成字符串
- [ ] T-15 非 UTF-8 文本的默认编码跟系统区域而不是界面语言
- [ ] S-01 切换幻灯片后主画布不重画
+1
View File
@@ -0,0 +1 @@
PASS