Merge pull request #1358 from HakanSeven12/plot/b4-windows-printer-routing

fix(print): send Windows plots to the chosen printer, name the default, report failures

# Conflicts:
#	locales/ar-SA/opencadstudio.ftl
#	locales/bg-BG/opencadstudio.ftl
#	locales/cs-CZ/opencadstudio.ftl
#	locales/de-DE/opencadstudio.ftl
#	locales/el-GR/opencadstudio.ftl
#	locales/en-US/opencadstudio.ftl
#	locales/es-ES/opencadstudio.ftl
#	locales/fi-FI/opencadstudio.ftl
#	locales/fr-FR/opencadstudio.ftl
#	locales/hi-IN/opencadstudio.ftl
#	locales/hu-HU/opencadstudio.ftl
#	locales/it-IT/opencadstudio.ftl
#	locales/ja-JP/opencadstudio.ftl
#	locales/ko-KR/opencadstudio.ftl
#	locales/nl-NL/opencadstudio.ftl
#	locales/pl-PL/opencadstudio.ftl
#	locales/pt-BR/opencadstudio.ftl
#	locales/ru-RU/opencadstudio.ftl
#	locales/tr-TR/opencadstudio.ftl
#	locales/zh-CN/opencadstudio.ftl
#	locales/zh-TW/opencadstudio.ftl
#	src/locale_catalog.rs
This commit is contained in:
Hakan Seven committed 2026-09-19 23:00:18 +03:00
commit 377f551b48
29 files changed
+592 -112

No files matched your search

+13
View File
@@ -416,6 +416,11 @@ pub struct PlotDialogState {
/// sentinels.
#[serde(skip)]
pub printers: Vec<String>,
/// Why the system gave no printer list (a stopped spooler, a failing
/// print service), shown under the printer row so an empty list is
/// never mistaken for "no printers".
#[serde(skip)]
pub printers_error: Option<String>,
/// Name of the system default printer, shown next to the default entry.
#[serde(skip)]
pub default_printer: Option<String>,
@@ -541,6 +546,7 @@ impl Default for PlotDialogState {
fn default() -> Self {
Self {
printers: Vec::new(),
printers_error: None,
default_printer: None,
printer_media: None,
custom_papers: Vec::new(),
@@ -1280,6 +1286,13 @@ pub fn view_window(
// editor itself unfolds there when Properties… is pressed.
let printer_note: Element<'_, Message> = match (&s.printer_editor, &s.printer) {
(Some(draft), _) => printer_options_editor(draft, width),
(None, _) if s.printers_error.is_some() => {
let error = s.printers_error.clone().unwrap_or_default();
text(crate::tf!("Could not list printers: {error}"))
.size(10)
.style(muted_style)
.into()
}
(None, Some(printer)) if s.driver_options.get(printer).is_some_and(|o| !o.is_empty()) => {
let count = s.driver_options[printer].len();
text(crate::tf!("{count} driver option(s) set for this printer."))