forked from 1b-agent/opencadstudio-upstream
add-paper-sizes
This commit is contained in:
1 parent
d66e89ca19
commit
4eb656e946
2 files changed
+43
-25
No files matched your search
+30
-24
@@ -133,6 +133,9 @@ fn plot_dialog_sheet_mm(d: &crate::ui::window::plot::PlotDialogState) -> (f64, f
|
|||||||
"A1" => Some(PaperSize::A1),
|
"A1" => Some(PaperSize::A1),
|
||||||
"A0" => Some(PaperSize::A0),
|
"A0" => Some(PaperSize::A0),
|
||||||
"A4" => Some(PaperSize::A4),
|
"A4" => Some(PaperSize::A4),
|
||||||
|
"Letter" => Some(PaperSize::Letter),
|
||||||
|
"Legal" => Some(PaperSize::Legal),
|
||||||
|
"Tabloid" => Some(PaperSize::Tabloid),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
if let Some(paper) = standard {
|
if let Some(paper) = standard {
|
||||||
@@ -2576,7 +2579,7 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
let pick = Task::perform(
|
let pick = Task::perform(
|
||||||
async move {
|
async move {
|
||||||
let mut dlg = crate::sys::file_dialog()
|
let mut dlg = crate::sys::file_dialog()
|
||||||
.set_title(crate::t!("Save Drawing As").as_ref())
|
.set_title("Save Drawing As")
|
||||||
.set_file_name(default_name)
|
.set_file_name(default_name)
|
||||||
.add_filter(filter_label, &[filter_ext]);
|
.add_filter(filter_label, &[filter_ext]);
|
||||||
if let Some(dir) = seed_dir {
|
if let Some(dir) = seed_dir {
|
||||||
@@ -2934,8 +2937,8 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
plot_style.as_ref(),
|
plot_style.as_ref(),
|
||||||
render_options,
|
render_options,
|
||||||
)
|
)
|
||||||
.map(|_| crate::tf!("Exported: {}", worker_path.display()).into_owned())
|
.map(|_| format!("Exported: {}", worker_path.display()))
|
||||||
.map_err(|e| crate::tf!("Export failed: {e}").into_owned())
|
.map_err(|e| format!("Export failed: {e}"))
|
||||||
};
|
};
|
||||||
self.run_plot_work(self.plot_dialog.background, false, work)
|
self.run_plot_work(self.plot_dialog.background, false, work)
|
||||||
}
|
}
|
||||||
@@ -2978,12 +2981,12 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
plot_style.as_ref(),
|
plot_style.as_ref(),
|
||||||
render_options,
|
render_options,
|
||||||
)
|
)
|
||||||
.map(|_| {crate::tf!(
|
.map(|_| {format!(
|
||||||
"Plotted window to {}",
|
"Plotted window to {}",
|
||||||
worker_path
|
worker_path
|
||||||
.file_name().unwrap_or_default().to_string_lossy()
|
.file_name().unwrap_or_default().to_string_lossy()
|
||||||
).into_owned()
|
)
|
||||||
}).map_err(|e| crate::tf!("Plot failed: {e}").into_owned())
|
}).map_err(|e| format!("Plot failed: {e}"))
|
||||||
};
|
};
|
||||||
self.run_plot_work(self.plot_dialog.background, false, work)
|
self.run_plot_work(self.plot_dialog.background, false, work)
|
||||||
}
|
}
|
||||||
@@ -3071,7 +3074,7 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
let page_setup = self.tabs[i]
|
let page_setup = self.tabs[i]
|
||||||
.scene
|
.scene
|
||||||
.plot_settings_for(&name)
|
.plot_settings_for(&name)
|
||||||
.ok_or_else(|| crate::tf!("Layout '{name}' has no page setup.").into_owned())?;
|
.ok_or_else(|| format!("Layout '{name}' has no page setup."))?;
|
||||||
{
|
{
|
||||||
let scene = &mut self.tabs[i].scene;
|
let scene = &mut self.tabs[i].scene;
|
||||||
scene.current_layout = name.clone();
|
scene.current_layout = name.clone();
|
||||||
@@ -3092,10 +3095,10 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
self.tabs[i].scene.restore_saved_camera();
|
self.tabs[i].scene.restore_saved_camera();
|
||||||
}
|
}
|
||||||
if dialog.style_missing && dialog.apply_plot_styles {
|
if dialog.style_missing && dialog.apply_plot_styles {
|
||||||
return Err(crate::tf!(
|
return Err(format!(
|
||||||
"Layout '{name}' plot style table '{}' is not loaded.",
|
"Layout '{name}' plot style table '{}' is not loaded.",
|
||||||
dialog.style_name
|
dialog.style_name
|
||||||
).into_owned());
|
));
|
||||||
}
|
}
|
||||||
let plot_style = self.dialog_plot_style(&dialog);
|
let plot_style = self.dialog_plot_style(&dialog);
|
||||||
let params = match dialog.area.as_str() {
|
let params = match dialog.area.as_str() {
|
||||||
@@ -3135,7 +3138,7 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
rotation_deg,
|
rotation_deg,
|
||||||
scale,
|
scale,
|
||||||
clip,
|
clip,
|
||||||
) = params.ok_or_else(|| crate::tf!("Layout '{name}' plot area is empty.").into_owned())?;
|
) = params.ok_or_else(|| format!("Layout '{name}' plot area is empty."))?;
|
||||||
(
|
(
|
||||||
std::sync::Arc::new(wires),
|
std::sync::Arc::new(wires),
|
||||||
hatches,
|
hatches,
|
||||||
@@ -3219,8 +3222,8 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
&worker_path,
|
&worker_path,
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
.map(|_| crate::tf!("Exported {} layouts to {}", pages.len(), worker_path.display()).into_owned())
|
.map(|_| format!("Exported {} layouts to {}", pages.len(), worker_path.display()))
|
||||||
.map_err(|error| crate::tf!("Export failed: {error}").into_owned())
|
.map_err(|error| format!("Export failed: {error}"))
|
||||||
};
|
};
|
||||||
self.run_print_all_work(dialog.background, work)
|
self.run_print_all_work(dialog.background, work)
|
||||||
}
|
}
|
||||||
@@ -3269,8 +3272,8 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
.and_then(|_| {
|
.and_then(|_| {
|
||||||
crate::io::print_to_printer::print_existing_pdf(&temp_path, &options)
|
crate::io::print_to_printer::print_existing_pdf(&temp_path, &options)
|
||||||
})
|
})
|
||||||
.map(|printer| crate::tf!("Sent {} layouts to printer: {printer}", pages.len()).into_owned())
|
.map(|printer| format!("Sent {} layouts to printer: {printer}", pages.len()))
|
||||||
.map_err(|error| crate::tf!("Print failed: {error}").into_owned())
|
.map_err(|error| format!("Print failed: {error}"))
|
||||||
};
|
};
|
||||||
self.run_print_all_work(true, work)
|
self.run_print_all_work(true, work)
|
||||||
}
|
}
|
||||||
@@ -4285,7 +4288,7 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
.as_deref()
|
.as_deref()
|
||||||
.is_some_and(|name| name.eq_ignore_ascii_case(&style_name));
|
.is_some_and(|name| name.eq_ignore_ascii_case(&style_name));
|
||||||
let (mut paper, orient) = paper_label_from_dims(ps.paper_width, ps.paper_height);
|
let (mut paper, orient) = paper_label_from_dims(ps.paper_width, ps.paper_height);
|
||||||
if !matches!(paper.as_str(), "A4" | "A3" | "A2" | "A1" | "A0")
|
if !matches!(paper.as_str(), "A4" | "A3" | "A2" | "A1" | "A0" | "Letter" | "Legal" | "Tabloid")
|
||||||
&& !ps.paper_size.is_empty()
|
&& !ps.paper_size.is_empty()
|
||||||
{
|
{
|
||||||
paper = ps.paper_size.clone();
|
paper = ps.paper_size.clone();
|
||||||
@@ -4389,6 +4392,9 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
"A2" => PaperSize::A2,
|
"A2" => PaperSize::A2,
|
||||||
"A1" => PaperSize::A1,
|
"A1" => PaperSize::A1,
|
||||||
"A0" => PaperSize::A0,
|
"A0" => PaperSize::A0,
|
||||||
|
"Letter" => PaperSize::Letter,
|
||||||
|
"Legal" => PaperSize::Legal,
|
||||||
|
"Tabloid" => PaperSize::Tabloid,
|
||||||
_ => PaperSize::A4,
|
_ => PaperSize::A4,
|
||||||
};
|
};
|
||||||
let orient = if d.orientation == "Portrait" {
|
let orient = if d.orientation == "Portrait" {
|
||||||
@@ -4480,7 +4486,7 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
plot_style.as_ref(),
|
plot_style.as_ref(),
|
||||||
render_options,
|
render_options,
|
||||||
).and_then(|_| crate::io::print_to_printer::open_in_viewer(&tmp))
|
).and_then(|_| crate::io::print_to_printer::open_in_viewer(&tmp))
|
||||||
.map(|_| crate::t!("Opened plot preview.").into_owned()).map_err(|e| crate::tf!("Preview failed: {e}").into_owned())
|
.map(|_| "Opened plot preview.".to_string()).map_err(|e| format!("Preview failed: {e}"))
|
||||||
};
|
};
|
||||||
return self.run_plot_work(d.background, true, work);
|
return self.run_plot_work(d.background, true, work);
|
||||||
}
|
}
|
||||||
@@ -4497,8 +4503,8 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
plot_style.as_ref(),
|
plot_style.as_ref(),
|
||||||
render_options,
|
render_options,
|
||||||
).and_then(|_| crate::io::print_to_printer::print_existing_pdf(&tmp, &opts))
|
).and_then(|_| crate::io::print_to_printer::print_existing_pdf(&tmp, &opts))
|
||||||
.map(|printer| crate::tf!("Sent to printer: {printer}").into_owned())
|
.map(|printer| format!("Sent to printer: {printer}"))
|
||||||
.map_err(|e| crate::tf!("Print failed: {e}").into_owned())
|
.map_err(|e| format!("Print failed: {e}"))
|
||||||
};
|
};
|
||||||
return self.run_plot_work(true, false, work);
|
return self.run_plot_work(true, false, work);
|
||||||
}
|
}
|
||||||
@@ -4525,7 +4531,7 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
plot_style.as_ref(),
|
plot_style.as_ref(),
|
||||||
render_options,
|
render_options,
|
||||||
).and_then(|_| crate::io::print_to_printer::open_in_viewer(&tmp))
|
).and_then(|_| crate::io::print_to_printer::open_in_viewer(&tmp))
|
||||||
.map(|_| crate::t!("Opened plot preview.").into_owned()).map_err(|e| crate::tf!("Preview failed: {e}").into_owned())
|
.map(|_| "Opened plot preview.".to_string()).map_err(|e| format!("Preview failed: {e}"))
|
||||||
};
|
};
|
||||||
return self.run_plot_work(d.background, true, work);
|
return self.run_plot_work(d.background, true, work);
|
||||||
}
|
}
|
||||||
@@ -4543,8 +4549,8 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
wires, hatches, wipeouts, page_w, page_h, ox, oy, rotation, scale, clip,
|
wires, hatches, wipeouts, page_w, page_h, ox, oy, rotation, scale, clip,
|
||||||
plot_style, opts,
|
plot_style, opts,
|
||||||
))
|
))
|
||||||
.map(|printer| crate::tf!("Sent to printer: {printer}").into_owned())
|
.map(|printer| format!("Sent to printer: {printer}"))
|
||||||
.map_err(|error| crate::tf!("Print failed: {error}").into_owned())
|
.map_err(|error| format!("Print failed: {error}"))
|
||||||
};
|
};
|
||||||
self.run_plot_work(true, false, work)
|
self.run_plot_work(true, false, work)
|
||||||
}
|
}
|
||||||
@@ -4860,10 +4866,10 @@ pub(super) fn on_open_file(&mut self) -> Task<Message> {
|
|||||||
Task::perform(
|
Task::perform(
|
||||||
async move {
|
async move {
|
||||||
let dialog = crate::sys::file_dialog()
|
let dialog = crate::sys::file_dialog()
|
||||||
.set_title(crate::t!("Save Plot Style Table").as_ref())
|
.set_title("Save Plot Style Table")
|
||||||
.set_file_name(&default_name)
|
.set_file_name(&default_name)
|
||||||
.add_filter(crate::t!("Plot Style Files").as_ref(), &["ctb", "CTB"])
|
.add_filter("Plot Style Files", &["ctb", "CTB"])
|
||||||
.add_filter(crate::t!("All Files").as_ref(), &["*"]);
|
.add_filter("All Files", &["*"]);
|
||||||
#[cfg(not(target_arch = "wasm32"))]
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
let dialog = match crate::io::plot_style::ensure_plot_styles_dir() {
|
let dialog = match crate::io::plot_style::ensure_plot_styles_dir() {
|
||||||
Ok(dir) => dialog.set_directory(dir),
|
Ok(dir) => dialog.set_directory(dir),
|
||||||
|
|||||||
+13
-1
@@ -7,15 +7,21 @@ pub enum PaperSize {
|
|||||||
A2,
|
A2,
|
||||||
A1,
|
A1,
|
||||||
A0,
|
A0,
|
||||||
|
Letter,
|
||||||
|
Legal,
|
||||||
|
Tabloid,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PaperSize {
|
impl PaperSize {
|
||||||
pub const ALL: [PaperSize; 5] = [
|
pub const ALL: [PaperSize; 8] = [
|
||||||
PaperSize::A4,
|
PaperSize::A4,
|
||||||
PaperSize::A3,
|
PaperSize::A3,
|
||||||
PaperSize::A2,
|
PaperSize::A2,
|
||||||
PaperSize::A1,
|
PaperSize::A1,
|
||||||
PaperSize::A0,
|
PaperSize::A0,
|
||||||
|
PaperSize::Letter,
|
||||||
|
PaperSize::Legal,
|
||||||
|
PaperSize::Tabloid,
|
||||||
];
|
];
|
||||||
|
|
||||||
pub fn label(self) -> &'static str {
|
pub fn label(self) -> &'static str {
|
||||||
@@ -25,6 +31,9 @@ impl PaperSize {
|
|||||||
PaperSize::A2 => "A2",
|
PaperSize::A2 => "A2",
|
||||||
PaperSize::A1 => "A1",
|
PaperSize::A1 => "A1",
|
||||||
PaperSize::A0 => "A0",
|
PaperSize::A0 => "A0",
|
||||||
|
PaperSize::Letter => "Letter",
|
||||||
|
PaperSize::Legal => "Legal",
|
||||||
|
PaperSize::Tabloid => "Tabloid",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,6 +45,9 @@ impl PaperSize {
|
|||||||
PaperSize::A2 => (420.0, 594.0),
|
PaperSize::A2 => (420.0, 594.0),
|
||||||
PaperSize::A1 => (594.0, 841.0),
|
PaperSize::A1 => (594.0, 841.0),
|
||||||
PaperSize::A0 => (841.0, 1189.0),
|
PaperSize::A0 => (841.0, 1189.0),
|
||||||
|
PaperSize::Letter => (215.9, 279.4),
|
||||||
|
PaperSize::Legal => (215.9, 355.6),
|
||||||
|
PaperSize::Tabloid => (279.4, 431.8),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user