mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-12 13:33:19 +00:00
Merge pull request #6767 from dotCooCoo/feat/document-setup-color
Document Setup: a Color tab sets the color mode and the assigned profiles
This commit is contained in:
@@ -1,13 +1,19 @@
|
||||
//! File → Document Setup: General (units, bleed, Edit Artboards, outline images, the substituted
|
||||
//! glyphs highlight), Transparency (grid size and colours, simulated paper, flattener preset, white
|
||||
//! overprint) and Type (language, quotes, superscript/subscript/small caps, text export) tabs.
|
||||
//! overprint), Type (language, quotes, superscript/subscript/small caps, text export) and Color
|
||||
//! (document color mode and assigned profiles) tabs.
|
||||
//!
|
||||
//! Fields: what `document.setup` reports (and takes back), plus `tab` and `bleedLinked`. OK runs
|
||||
//! `document.setup` with them: one undo step. On an error the dialog stays open.
|
||||
//! Fields: what `document.setup` reports (and takes back), plus `tab`, `bleedLinked` and the Color
|
||||
//! tab's `colorMode`, `convertColors`, `rgbProfile` and `cmykProfile` (null: the working space).
|
||||
//! OK runs `document.setup` with them: one undo step. When the Color tab changed something, OK runs
|
||||
//! `document.setup`, `edit.assignProfile` and `file.documentColorMode` in one `command.batch`,
|
||||
//! and the document's changes are still one undo step. On an error the dialog stays open.
|
||||
|
||||
use serde_json::{Value, json};
|
||||
use serde_json::{Map, Value, json};
|
||||
use vectorcraft_color::cms::ProfileKind;
|
||||
use vectorcraft_doc::setup::{GRID_COLOR_PRESETS, LANGUAGES};
|
||||
use vectorcraft_doc::{GridSize, Quotes, Unit};
|
||||
use vectorcraft_doc::{ColorMode, GridSize, Quotes, Unit};
|
||||
use vectorcraft_engine::cmd::colormgmt::doc_profiles;
|
||||
|
||||
use super::{DialogSpec, form};
|
||||
use crate::state::Dialog;
|
||||
@@ -15,10 +21,13 @@ use crate::theme::Tokens;
|
||||
use crate::{VectorcraftApp, widgets};
|
||||
|
||||
pub(super) const KIND: &str = "documentSetup";
|
||||
const TABS: [&str; 3] = ["General", "Transparency", "Type"];
|
||||
const TABS: [&str; 4] = ["General", "Transparency", "Type", "Color"];
|
||||
/// Dialog-only fields `document.setup` doesn't take.
|
||||
const UI_ONLY: [&str; 2] = ["tab", "bleedLinked"];
|
||||
const UI_ONLY: [&str; 6] = ["tab", "bleedLinked", "colorMode", "convertColors", "rgbProfile", "cmykProfile"];
|
||||
pub(super) const LABEL: f32 = 130.0;
|
||||
/// The profile rows' entry for no assigned profile: the document uses the working space.
|
||||
const WORKING_RGB: &str = "Working RGB (don't tag)";
|
||||
const WORKING_CMYK: &str = "Working CMYK (don't tag)";
|
||||
|
||||
pub(super) const SPEC: DialogSpec =
|
||||
DialogSpec { heading: |_| tl!("Document Setup").into(), body, confirm, min_width: 540.0, max_width: Some(540.0), ..DialogSpec::FORM };
|
||||
@@ -29,13 +38,76 @@ pub fn open(app: &mut VectorcraftApp) -> Result<Value, String> {
|
||||
let linked = fields["bleed"].as_array().is_some_and(|b| b.windows(2).all(|w| w[0] == w[1]));
|
||||
fields["bleedLinked"] = json!(linked);
|
||||
fields["tab"] = json!(TABS[0]);
|
||||
if let Some(st) = app.session.active() {
|
||||
let (rgb, cmyk) = doc_profiles(&st.doc);
|
||||
fields["colorMode"] = json!(mode_id(st.doc.color_mode));
|
||||
fields["rgbProfile"] = json!(rgb);
|
||||
fields["cmykProfile"] = json!(cmyk);
|
||||
}
|
||||
fields["convertColors"] = json!(true);
|
||||
app.ui.dialog = Some(Dialog::new(KIND, fields));
|
||||
Ok(Value::Null)
|
||||
}
|
||||
|
||||
/// The `mode` param of `file.documentColorMode` for `m`.
|
||||
fn mode_id(m: ColorMode) -> &'static str {
|
||||
match m {
|
||||
ColorMode::Rgb => "rgb",
|
||||
ColorMode::Cmyk => "cmyk",
|
||||
}
|
||||
}
|
||||
|
||||
/// The commands the Color tab's changes run, as `command.batch` steps, in the order OK runs them:
|
||||
/// Edit › Assign Profile first, so that a mode change converts through the profiles it assigns,
|
||||
/// then File › Document Color Mode. Empty when the tab matches the active document. A field the
|
||||
/// dialog holds with a value of the wrong kind is an error, and then nothing runs; an omitted
|
||||
/// field leaves its setting as it is (`convertColors`: converts).
|
||||
fn color_commands(app: &VectorcraftApp, d: &Dialog) -> Result<Vec<Value>, String> {
|
||||
let Some(st) = app.session.active() else { return Ok(vec![]) };
|
||||
let mut out = vec![];
|
||||
let (rgb, cmyk) = doc_profiles(&st.doc);
|
||||
let mut assign = Map::new();
|
||||
for (key, param, current) in [("rgbProfile", "rgb", rgb), ("cmykProfile", "cmyk", cmyk)] {
|
||||
let chosen = match d.fields.get(key) {
|
||||
None => continue,
|
||||
Some(Value::Null) => None,
|
||||
Some(Value::String(n)) => Some(n.clone()),
|
||||
Some(_) => return Err(format!("`{key}` must be a profile name or null")),
|
||||
};
|
||||
if chosen != current {
|
||||
assign.insert(param.into(), json!(chosen));
|
||||
}
|
||||
}
|
||||
let mode = match d.fields.get("colorMode") {
|
||||
None => None,
|
||||
Some(Value::String(m)) if m.eq_ignore_ascii_case("rgb") => Some(ColorMode::Rgb),
|
||||
Some(Value::String(m)) if m.eq_ignore_ascii_case("cmyk") => Some(ColorMode::Cmyk),
|
||||
Some(_) => return Err("`colorMode` must be one of rgb, cmyk".into()),
|
||||
};
|
||||
let key = "convertColors";
|
||||
let convert = match d.fields.get(key) {
|
||||
None => true,
|
||||
Some(Value::Bool(b)) => *b,
|
||||
Some(_) => return Err(format!("`{key}` must be true or false")),
|
||||
};
|
||||
if !assign.is_empty() {
|
||||
out.push(json!({"command": "edit.assignProfile", "params": assign}));
|
||||
}
|
||||
if let Some(mode) = mode.filter(|m| *m != st.doc.color_mode) {
|
||||
out.push(json!({"command": "file.documentColorMode", "params": {"mode": mode_id(mode), "convert": convert}}));
|
||||
}
|
||||
Ok(out)
|
||||
}
|
||||
|
||||
fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result<Value, String> {
|
||||
let params = d.fields.iter().filter(|(k, _)| !UI_ONLY.contains(&k.as_str())).map(|(k, v)| (k.clone(), v.clone())).collect();
|
||||
let r = app.run("document.setup", Value::Object(params));
|
||||
let params: Map<String, Value> = d.fields.iter().filter(|(k, _)| !UI_ONLY.contains(&k.as_str())).map(|(k, v)| (k.clone(), v.clone())).collect();
|
||||
let color = color_commands(app, d)?;
|
||||
let r = if color.is_empty() {
|
||||
app.run("document.setup", Value::Object(params))
|
||||
} else {
|
||||
let commands: Vec<Value> = std::iter::once(json!({"command": "document.setup", "params": params})).chain(color).collect();
|
||||
app.run("command.batch", json!({"label": "Document Setup", "commands": commands}))
|
||||
};
|
||||
if r.is_ok() {
|
||||
app.ui.dialog = None;
|
||||
}
|
||||
@@ -54,7 +126,8 @@ fn body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool {
|
||||
match tab {
|
||||
0 => close = general(app, ui, d),
|
||||
1 => transparency(app, ui, d),
|
||||
_ => typography(ui, d),
|
||||
2 => typography(ui, d),
|
||||
_ => color(app, ui, d),
|
||||
}
|
||||
});
|
||||
close
|
||||
@@ -208,10 +281,40 @@ fn typography(ui: &mut egui::Ui, d: &mut Dialog) {
|
||||
choice(ui, d, "exportText", tl!("Export:"), &[("editable", tl!("Preserve Text Editability")), ("appearance", tl!("Preserve Text Appearance"))]);
|
||||
}
|
||||
|
||||
/// The Color tab: the document color mode, whether a mode change converts the colors (unchecked:
|
||||
/// they keep their numbers), and the RGB and CMYK profiles assigned to the document.
|
||||
fn color(app: &VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) {
|
||||
widgets::subheader(ui, tl!("Document Color Mode"));
|
||||
choice(ui, d, "colorMode", tl!("Color Mode:"), &[("rgb", "RGB Color"), ("cmyk", "CMYK Color")]);
|
||||
let mode = d.str("colorMode");
|
||||
let changes = app.session.active().is_some_and(|st| mode_id(st.doc.color_mode) != mode);
|
||||
let label = if mode == "cmyk" { tl!("Convert to CMYK") } else { tl!("Convert to RGB") };
|
||||
widgets::label_row(ui, "", LABEL, |ui| {
|
||||
let on = d.bool("convertColors");
|
||||
if widgets::check(ui, label, on, changes) {
|
||||
d.fields.insert("convertColors".into(), json!(!on));
|
||||
}
|
||||
});
|
||||
ui.add_space(14.0);
|
||||
widgets::subheader(ui, tl!("Assign Profile"));
|
||||
for (key, label, kind, working) in
|
||||
[("rgbProfile", tl!("RGB:"), ProfileKind::Rgb, WORKING_RGB), ("cmykProfile", tl!("CMYK:"), ProfileKind::Cmyk, WORKING_CMYK)]
|
||||
{
|
||||
let current = d.fields.get(key).and_then(Value::as_str).unwrap_or(working).to_string();
|
||||
widgets::label_row(ui, label, LABEL, |ui| {
|
||||
if let Some(n) = crate::panels::separations::profile_dropdown(ui, key, ¤t, kind, Some(working)) {
|
||||
d.fields.insert(key.into(), if n == working { Value::Null } else { json!(n) });
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use egui::{Event, PointerButton, Pos2, Rect, vec2};
|
||||
use serde_json::json;
|
||||
use vectorcraft_color::{Color, Paint, cms};
|
||||
use vectorcraft_doc::{ColorMode, NodeId};
|
||||
use vectorcraft_engine::Session;
|
||||
|
||||
use crate::VectorcraftApp;
|
||||
@@ -302,7 +405,7 @@ mod tests {
|
||||
let mut app = VectorcraftApp::new(Session::new(), Default::default());
|
||||
app.run("file.new", json!({"width": 200, "height": 200})).unwrap();
|
||||
app.run("file.documentSetup", json!({})).unwrap();
|
||||
for tab in ["General", "Transparency", "Type"] {
|
||||
for tab in ["General", "Transparency", "Type", "Color"] {
|
||||
app.ui.dialog.as_mut().unwrap().fields.insert("tab".into(), json!(tab));
|
||||
frame(&mut app);
|
||||
}
|
||||
@@ -343,4 +446,193 @@ mod tests {
|
||||
crate::dialogs::confirm(&mut app).unwrap();
|
||||
assert!(app.ui.dialog.is_none());
|
||||
}
|
||||
|
||||
/// A new document with a red square → the app and the square.
|
||||
fn red_square() -> (VectorcraftApp, NodeId) {
|
||||
let mut app = VectorcraftApp::new(Session::new(), Default::default());
|
||||
app.run("file.new", json!({"width": 200, "height": 200})).unwrap();
|
||||
let id = app.run("shape.rectangle", json!({"x": 10, "y": 10, "width": 50, "height": 50})).unwrap()["id"].as_u64().unwrap();
|
||||
app.run("paint.setFill", json!({"ids": [id], "color": "#ff0000"})).unwrap();
|
||||
(app, NodeId(id))
|
||||
}
|
||||
|
||||
fn fill(app: &VectorcraftApp, id: NodeId) -> Paint {
|
||||
app.session.active().unwrap().doc.node(id).unwrap().appearance.fill().unwrap().paint.clone()
|
||||
}
|
||||
|
||||
fn undo_steps(app: &VectorcraftApp) -> usize {
|
||||
app.session.active().unwrap().history.undo.len()
|
||||
}
|
||||
|
||||
/// Opens Document Setup on the Color tab and sets `fields` in it.
|
||||
fn color_tab(app: &mut VectorcraftApp, fields: serde_json::Value) {
|
||||
app.run("file.documentSetup", json!({})).unwrap();
|
||||
let d = app.ui.dialog.as_mut().unwrap();
|
||||
d.fields.insert("tab".into(), json!("Color"));
|
||||
for (k, v) in fields.as_object().unwrap() {
|
||||
d.fields.insert(k.clone(), v.clone());
|
||||
}
|
||||
}
|
||||
|
||||
/// The Color tab opens on the document's color mode and assigned profiles, and shows them.
|
||||
/// The CMYK profile assigned is the working one, so the process-wide color settings stay as
|
||||
/// they are for the other tests.
|
||||
#[test]
|
||||
fn color_tab_shows_the_color_mode_and_profiles() {
|
||||
let (mut app, _) = red_square();
|
||||
let working = cms::active_settings().cmyk;
|
||||
app.run("file.documentColorMode", json!({"mode": "cmyk"})).unwrap();
|
||||
app.run("edit.assignProfile", json!({"cmyk": working})).unwrap();
|
||||
let steps = undo_steps(&app);
|
||||
color_tab(&mut app, json!({}));
|
||||
let d = app.ui.dialog.as_ref().unwrap();
|
||||
assert_eq!((d.str("colorMode"), d.str("cmykProfile"), d.fields["rgbProfile"].clone()), ("cmyk".into(), working.clone(), json!(null)));
|
||||
assert!(d.bool("convertColors"));
|
||||
let ctx = egui::Context::default();
|
||||
crate::theme::install_fonts(&ctx);
|
||||
crate::theme::apply(&ctx, Default::default());
|
||||
dialog_frame(&mut app, &ctx, vec![]);
|
||||
let texts: Vec<String> = dialog_frame(&mut app, &ctx, vec![]).into_iter().map(|(t, _)| t).collect();
|
||||
for shown in ["CMYK Color", "Convert to CMYK", "Working RGB (don't tag)", working.as_str()] {
|
||||
assert!(texts.iter().any(|t| t == shown), "no {shown} in {texts:?}");
|
||||
}
|
||||
// Picking the other mode names the conversion OK makes.
|
||||
app.ui.dialog.as_mut().unwrap().fields.insert("colorMode".into(), json!("rgb"));
|
||||
let texts: Vec<String> = dialog_frame(&mut app, &ctx, vec![]).into_iter().map(|(t, _)| t).collect();
|
||||
assert!(texts.iter().any(|t| t == "Convert to RGB"), "{texts:?}");
|
||||
app.ui.dialog.as_mut().unwrap().fields.insert("colorMode".into(), json!("cmyk"));
|
||||
// OK with nothing changed records nothing.
|
||||
crate::dialogs::confirm(&mut app).unwrap();
|
||||
assert!(app.ui.dialog.is_none());
|
||||
assert_eq!(undo_steps(&app), steps);
|
||||
}
|
||||
|
||||
/// OK with a new mode converts the colors as File › Document Color Mode does, together with the
|
||||
/// dialog's other changes, in one undo step.
|
||||
#[test]
|
||||
fn ok_converts_the_color_mode_with_the_other_changes_in_one_undo_step() {
|
||||
let (mut app, id) = red_square();
|
||||
let (mut menu, menu_id) = red_square();
|
||||
menu.run("file.documentColorMode", json!({"mode": "cmyk"})).unwrap();
|
||||
let steps = undo_steps(&app);
|
||||
color_tab(&mut app, json!({"colorMode": "cmyk", "bleed": [9, 9, 9, 9]}));
|
||||
crate::dialogs::confirm(&mut app).unwrap();
|
||||
assert!(app.ui.dialog.is_none());
|
||||
let st = app.session.active().unwrap();
|
||||
assert_eq!((st.doc.color_mode, st.doc.setup.bleed), (ColorMode::Cmyk, [9.0; 4]));
|
||||
assert_eq!(fill(&app, id), fill(&menu, menu_id));
|
||||
assert!(matches!(fill(&app, id), Paint::Solid { color: Color::Cmyk { .. }, .. }), "{:?}", fill(&app, id));
|
||||
assert_eq!(undo_steps(&app), steps + 1);
|
||||
app.run("edit.undo", json!({})).unwrap();
|
||||
let st = app.session.active().unwrap();
|
||||
assert_eq!((st.doc.color_mode, st.doc.setup.bleed), (ColorMode::Rgb, [0.0; 4]));
|
||||
assert_eq!(fill(&app, id), Paint::solid(Color::from_hex("ff0000").unwrap()));
|
||||
}
|
||||
|
||||
/// With Convert unchecked the mode changes and the colors keep their numbers.
|
||||
#[test]
|
||||
fn ok_without_convert_keeps_the_color_numbers() {
|
||||
let (mut app, id) = red_square();
|
||||
let before = fill(&app, id);
|
||||
let steps = undo_steps(&app);
|
||||
color_tab(&mut app, json!({"colorMode": "cmyk", "convertColors": false}));
|
||||
crate::dialogs::confirm(&mut app).unwrap();
|
||||
assert_eq!(app.session.active().unwrap().doc.color_mode, ColorMode::Cmyk);
|
||||
assert_eq!(fill(&app, id), before);
|
||||
assert_eq!(undo_steps(&app), steps + 1);
|
||||
}
|
||||
|
||||
/// OK assigns the profiles picked, with the dialog's other changes, in one undo step; the
|
||||
/// working-space entry assigns none.
|
||||
#[test]
|
||||
fn ok_assigns_the_profiles_with_the_other_changes_in_one_undo_step() {
|
||||
let (mut app, _) = red_square();
|
||||
let working = cms::active_settings().cmyk;
|
||||
let steps = undo_steps(&app);
|
||||
color_tab(&mut app, json!({"cmykProfile": working, "bleed": [9, 9, 9, 9]}));
|
||||
crate::dialogs::confirm(&mut app).unwrap();
|
||||
let st = app.session.active().unwrap();
|
||||
assert_eq!((st.doc.color_profiles.cmyk.clone(), st.doc.color_profiles.rgb.clone()), (Some(working.clone()), None));
|
||||
assert_eq!((st.doc.setup.bleed, st.doc.color_mode), ([9.0; 4], ColorMode::Rgb));
|
||||
assert_eq!(undo_steps(&app), steps + 1);
|
||||
// Back to the working space: no profile assigned.
|
||||
color_tab(&mut app, json!({"cmykProfile": null}));
|
||||
crate::dialogs::confirm(&mut app).unwrap();
|
||||
assert_eq!(app.session.active().unwrap().doc.color_profiles.cmyk, None);
|
||||
app.run("edit.undo", json!({})).unwrap();
|
||||
app.run("edit.undo", json!({})).unwrap();
|
||||
let st = app.session.active().unwrap();
|
||||
assert_eq!((st.doc.color_profiles.cmyk.clone(), st.doc.setup.bleed), (None, [0.0; 4]));
|
||||
}
|
||||
|
||||
/// OK assigns the RGB profile picked, in one undo step.
|
||||
#[test]
|
||||
fn ok_assigns_the_rgb_profile() {
|
||||
let (mut app, _) = red_square();
|
||||
let working = cms::active_settings().rgb;
|
||||
let steps = undo_steps(&app);
|
||||
color_tab(&mut app, json!({"rgbProfile": working}));
|
||||
crate::dialogs::confirm(&mut app).unwrap();
|
||||
let st = app.session.active().unwrap();
|
||||
assert_eq!((st.doc.color_profiles.rgb.clone(), st.doc.color_profiles.cmyk.clone()), (Some(working), None));
|
||||
assert_eq!(undo_steps(&app), steps + 1);
|
||||
}
|
||||
|
||||
/// A profile and a mode changed in one OK: Assign Profile runs before Document Color Mode, so
|
||||
/// the conversion goes through the profile picked.
|
||||
#[test]
|
||||
fn a_profile_and_a_mode_change_assign_the_profile_first() {
|
||||
let (mut app, _) = red_square();
|
||||
color_tab(&mut app, json!({"colorMode": "cmyk", "cmykProfile": cms::DEVICE_CMYK}));
|
||||
let commands = super::color_commands(&app, app.ui.dialog.as_ref().unwrap()).unwrap();
|
||||
assert_eq!(
|
||||
commands,
|
||||
vec![
|
||||
json!({"command": "edit.assignProfile", "params": {"cmyk": cms::DEVICE_CMYK}}),
|
||||
json!({"command": "file.documentColorMode", "params": {"mode": "cmyk", "convert": true}}),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/// A Color tab field with a value of the wrong kind is an error: the dialog stays open and
|
||||
/// nothing changes, the profile picked with it included.
|
||||
#[test]
|
||||
fn a_bad_color_field_is_an_error_and_changes_nothing() {
|
||||
let bad = [
|
||||
("colorMode", json!("lab")),
|
||||
("colorMode", json!(null)),
|
||||
("rgbProfile", json!(5)),
|
||||
("cmykProfile", json!(true)),
|
||||
("convertColors", json!("no")),
|
||||
];
|
||||
for (key, value) in bad {
|
||||
let (mut app, id) = red_square();
|
||||
let before = fill(&app, id);
|
||||
let steps = undo_steps(&app);
|
||||
color_tab(&mut app, json!({"colorMode": "cmyk", "cmykProfile": cms::active_settings().cmyk}));
|
||||
app.ui.dialog.as_mut().unwrap().fields.insert(key.into(), value.clone());
|
||||
assert!(super::color_commands(&app, app.ui.dialog.as_ref().unwrap()).is_err(), "{key}: {value}");
|
||||
assert!(crate::dialogs::confirm(&mut app).is_err(), "{key}: {value}");
|
||||
assert!(app.ui.dialog.is_some());
|
||||
let st = app.session.active().unwrap();
|
||||
assert_eq!((st.doc.color_mode, st.doc.color_profiles.cmyk.clone()), (ColorMode::Rgb, None), "{key}: {value}");
|
||||
assert_eq!(fill(&app, id), before);
|
||||
assert_eq!(undo_steps(&app), steps);
|
||||
}
|
||||
}
|
||||
|
||||
/// Cancel leaves the color mode, the colors and the history as they were.
|
||||
#[test]
|
||||
fn cancel_changes_no_color_setting() {
|
||||
let (mut app, id) = red_square();
|
||||
let before = fill(&app, id);
|
||||
let steps = undo_steps(&app);
|
||||
color_tab(&mut app, json!({"colorMode": "cmyk", "cmykProfile": cms::active_settings().cmyk}));
|
||||
click_dialog_button(&mut app, "Cancel");
|
||||
assert!(app.ui.dialog.is_none());
|
||||
let st = app.session.active().unwrap();
|
||||
assert_eq!((st.doc.color_mode, st.doc.color_profiles.cmyk.clone()), (ColorMode::Rgb, None));
|
||||
assert_eq!(fill(&app, id), before);
|
||||
assert_eq!(undo_steps(&app), steps);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,6 +249,7 @@ font-technology Variable Променливи
|
||||
Asset Export Settings Настройки за експортиране на активи
|
||||
Assets Активи
|
||||
Assign Задаване
|
||||
Assign Profile Задаване на профил
|
||||
Assign Profile… Задаване на профил…
|
||||
Assign: Задаване:
|
||||
Attach to Active Plane Прикрепване към активната равнина
|
||||
@@ -3792,6 +3793,7 @@ digits Malayalam Малаялам
|
||||
Windows Windows
|
||||
Working CMYK Работен CMYK
|
||||
Working CMYK (don't tag) Работен CMYK (без етикет)
|
||||
Working RGB (don't tag) Работен RGB (без етикет)
|
||||
Workspace Работно пространство
|
||||
Workspace {i} Работно пространство {i}
|
||||
Wrinkle Tool Инструмент „Набръчкване“
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -113,6 +113,7 @@
|
||||
PDF Presets… PDF predlošci…
|
||||
Perspective Grid Presets… Predlošci mreže perspektive…
|
||||
Color Settings… Postavke boja…
|
||||
Assign Profile Dodijeli profil
|
||||
Assign Profile… Dodijeli profil…
|
||||
Keyboard Shortcuts… Prečice na tastaturi…
|
||||
Import Shortcut Set Uvezi skup prečica
|
||||
@@ -2046,6 +2047,7 @@ digits Malayalam Malajalam
|
||||
Simulate Paper Simuliraj papir
|
||||
Use Black Point Compensation Koristi kompenzaciju crne tačke
|
||||
Working CMYK (don't tag) Radni CMYK (bez oznake)
|
||||
Working RGB (don't tag) Radni RGB (bez oznake)
|
||||
{name} (spot) {name} (spot)
|
||||
Add to Profiles… Dodaj u profile…
|
||||
Align Stroke to Center Poravnaj potez po sredini
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -400,6 +400,7 @@ antiAlias Sharp Nítid
|
||||
Asset Export Settings Configuració d’exportació de recursos
|
||||
Assets Recursos
|
||||
Assign Assigna
|
||||
Assign Profile Assigna el perfil
|
||||
Assign Profile… Assigna el perfil…
|
||||
Assign: Assigna:
|
||||
Attach Adjunta
|
||||
@@ -4920,6 +4921,7 @@ digits Malayalam Malaiàlam
|
||||
Words Longer Than: Paraules més llargues de:
|
||||
Working CMYK CMYK de treball
|
||||
Working CMYK (don't tag) CMYK de treball (sense etiquetar)
|
||||
Working RGB (don't tag) RGB de treball (sense etiquetar)
|
||||
Working RGB RGB de treball
|
||||
Workspace Espai de treball
|
||||
Workspace {i} Espai de treball {i}
|
||||
@@ -5078,6 +5080,7 @@ digits Malayalam Malaiàlam
|
||||
@msg `{key}` must be a number not below 0 `{key}` ha de ser un nombre no inferior a 0
|
||||
@msg `{key}` must be a number, not {v} `{key}` ha de ser un nombre, no {v}
|
||||
@msg `{key}` must be a string `{key}` ha de ser una cadena
|
||||
@msg `{key}` must be a profile name or null `{key}` ha de ser un nom de perfil o null
|
||||
@msg `{key}` must be a whole number `{key}` ha de ser un nombre enter
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` ha de ser un nombre enter entre {min} i {max} (rebut {x})
|
||||
@msg `{key}` must be an array of these names: {_1} `{key}` ha de ser una matriu d’aquests noms: {_1}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -118,6 +118,7 @@
|
||||
PDF Presets… Přednastavení PDF…
|
||||
Perspective Grid Presets… Přednastavení perspektivní mřížky…
|
||||
Color Settings… Nastavení barev…
|
||||
Assign Profile Přiřadit profil
|
||||
Assign Profile… Přiřadit profil…
|
||||
Keyboard Shortcuts… Klávesové zkratky…
|
||||
# Import Shortcut Set (Keyboard Shortcuts › Import…, File › Open of a .kys file) and its commands.
|
||||
@@ -2072,6 +2073,7 @@ digits Malayalam Malajálamské
|
||||
Simulate Paper Simulovat papír
|
||||
Use Black Point Compensation Použít kompenzaci černého bodu
|
||||
Working CMYK (don't tag) Pracovní CMYK (neoznačovat)
|
||||
Working RGB (don't tag) Pracovní RGB (neoznačovat)
|
||||
{name} (spot) {name} (přímá)
|
||||
Add to Profiles… Přidat do profilů…
|
||||
Align Stroke to Center Zarovnat tah na střed
|
||||
@@ -4550,6 +4552,7 @@ imageTrace Outline Obrys
|
||||
@msg `{key}` must be a number, not {v} `{key}` musí být číslo, ne {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} musí být unixový čas v sekundách (celé číslo) nebo null
|
||||
@msg `{key}` must be a string `{key}` musí být řetězec
|
||||
@msg `{key}` must be a profile name or null `{key}` musí být název profilu nebo null
|
||||
@msg `{key}` must be a whole number `{key}` musí být celé číslo
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` musí být celé číslo mezi {min} a {max} (zadáno {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` musí být mezi {min} a {max} (zadáno {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -106,6 +106,7 @@
|
||||
PDF Presets… PDF-forudindstillinger…
|
||||
Perspective Grid Presets… Forudindstillinger for perspektivgitter…
|
||||
Color Settings… Farveindstillinger…
|
||||
Assign Profile Tildel profil
|
||||
Assign Profile… Tildel profil…
|
||||
Keyboard Shortcuts… Tastaturgenveje…
|
||||
Import Shortcut Set Importér genvejssæt
|
||||
@@ -1879,6 +1880,7 @@ digits Malayalam Malayalam
|
||||
Simulate Paper Simulér papir
|
||||
Use Black Point Compensation Brug sortpunktskompensation
|
||||
Working CMYK (don't tag) Arbejds-CMYK (mærk ikke)
|
||||
Working RGB (don't tag) Arbejds-RGB (mærk ikke)
|
||||
{name} (spot) {name} (spotfarve)
|
||||
Add to Profiles… Tilføj til profiler…
|
||||
Align Stroke to Center Justér kontur til midten
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -237,6 +237,7 @@ font-technology Variable Variabel
|
||||
Asset Export Settings Einstellungen für den Asset-Export
|
||||
Assets Assets
|
||||
Assign Zuweisen
|
||||
Assign Profile Profil zuweisen
|
||||
Assign Profile… Profil zuweisen…
|
||||
Assign: Zuweisen:
|
||||
Attach to Active Plane An aktiver Perspektivebene anbringen
|
||||
@@ -3791,6 +3792,7 @@ effect Points Punkte
|
||||
Windows Windows
|
||||
Working CMYK CMYK-Arbeitsfarbraum
|
||||
Working CMYK (don't tag) CMYK-Arbeitsfarbraum (nicht kennzeichnen)
|
||||
Working RGB (don't tag) RGB-Arbeitsfarbraum (nicht kennzeichnen)
|
||||
Workspace Arbeitsbereich
|
||||
Workspace {i} Arbeitsbereich {i}
|
||||
Wrinkle Tool Zerknittern-Werkzeug
|
||||
@@ -4157,6 +4159,7 @@ theme Appearance Erscheinungsbild
|
||||
@msg `{key}` must be a number, not {v} `{key}` muss eine Zahl sein, nicht {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} muss eine Unix-Zeit in Sekunden (eine ganze Zahl) oder null sein
|
||||
@msg `{key}` must be a string `{key}` muss eine Zeichenfolge sein
|
||||
@msg `{key}` must be a profile name or null `{key}` muss ein Profilname oder null sein
|
||||
@msg `{key}` must be a whole number `{key}` muss eine ganze Zahl sein
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` muss eine ganze Zahl zwischen {min} und {max} sein (erhalten: {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` muss zwischen {min} und {max} liegen (erhalten: {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -240,6 +240,7 @@ font-technology Variable Μεταβλητές
|
||||
Asset Export Settings Ρυθμίσεις εξαγωγής στοιχείων
|
||||
Assets Στοιχεία
|
||||
Assign Αντιστοίχιση
|
||||
Assign Profile Ανάθεση προφίλ
|
||||
Assign Profile… Ανάθεση προφίλ…
|
||||
Assign: Αντιστοίχιση:
|
||||
Attach to Active Plane Προσάρτηση στο ενεργό επίπεδο
|
||||
@@ -2383,6 +2384,7 @@ axis Both Και τα δύο
|
||||
@msg `{key}` must be a number, not {v} Το `{key}` πρέπει να είναι αριθμός, όχι {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key}: πρέπει να είναι χρόνος Unix σε δευτερόλεπτα (ακέραιος) ή null
|
||||
@msg `{key}` must be a string Το `{key}` πρέπει να είναι συμβολοσειρά
|
||||
@msg `{key}` must be a profile name or null Το `{key}` πρέπει να είναι όνομα προφίλ ή null
|
||||
@msg `{key}` must be a whole number Το `{key}` πρέπει να είναι ακέραιος αριθμός
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) Το `{key}` πρέπει να είναι ακέραιος από {min} έως {max} (δόθηκε {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) Το `{key}` πρέπει να είναι μεταξύ {min} και {max} (δόθηκε {x})
|
||||
@@ -4164,6 +4166,7 @@ digits Malayalam Μαλαγιάλαμ
|
||||
Width Profiles Προφίλ πλάτους
|
||||
Width Tool Πλάτος (Width Tool)
|
||||
Working CMYK (don't tag) Χώρος εργασίας CMYK (χωρίς ετικέτα)
|
||||
Working RGB (don't tag) Χώρος εργασίας RGB (χωρίς ετικέτα)
|
||||
Workspace {i} Χώρος εργασίας {i}
|
||||
Wrinkle Tool Πτυχώσεις (Wrinkle Tool)
|
||||
Write Layers Εγγραφή επιπέδων
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -262,6 +262,7 @@ font-technology Variable Variables
|
||||
Asset Export Settings Ajustes de exportación de recursos
|
||||
Assets Recursos
|
||||
Assign Asignar
|
||||
Assign Profile Asignar perfil
|
||||
Assign Profile… Asignar perfil…
|
||||
Assign: Asignar:
|
||||
Attach to Active Plane Adjuntar al plano activo
|
||||
@@ -3880,6 +3881,7 @@ digits Malayalam Malayálam
|
||||
Windows Windows
|
||||
Working CMYK CMYK de trabajo
|
||||
Working CMYK (don't tag) CMYK de trabajo (sin etiquetar)
|
||||
Working RGB (don't tag) RGB de trabajo (sin etiquetar)
|
||||
Workspace Espacio de trabajo
|
||||
Workspace {i} Espacio de trabajo {i}
|
||||
Wrinkle Tool Herramienta Arrugar
|
||||
@@ -4241,6 +4243,7 @@ axis Both Ambos
|
||||
@msg `{key}` must be a number, not {v} `{key}` debe ser un número, no {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} debe ser un tiempo Unix en segundos (un entero) o null
|
||||
@msg `{key}` must be a string `{key}` debe ser un texto
|
||||
@msg `{key}` must be a profile name or null `{key}` debe ser un nombre de perfil o null
|
||||
@msg `{key}` must be a whole number `{key}` debe ser un número entero
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` debe ser un número entero entre {min} y {max} (se recibió {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` debe estar entre {min} y {max} (se recibió {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -126,6 +126,7 @@
|
||||
PDF Presets… PDF-esiasetukset…
|
||||
Perspective Grid Presets… Perspektiiviruudukon esiasetukset…
|
||||
Color Settings… Väriasetukset…
|
||||
Assign Profile Määritä profiili
|
||||
Assign Profile… Määritä profiili…
|
||||
Keyboard Shortcuts… Pikanäppäimet…
|
||||
Import Shortcut Set Tuo pikanäppäinjoukko
|
||||
@@ -2033,6 +2034,7 @@ digits Malayalam Malajalam
|
||||
Simulate Paper Simuloi paperia
|
||||
Use Black Point Compensation Käytä mustan pisteen kompensointia
|
||||
Working CMYK (don't tag) Työ-CMYK (ei tunnistetta)
|
||||
Working RGB (don't tag) Työ-RGB (ei tunnistetta)
|
||||
{name} (spot) {name} (spottiväri)
|
||||
Add to Profiles… Lisää profiileihin…
|
||||
Align Stroke to Center Tasaa viiva keskelle
|
||||
@@ -4464,6 +4466,7 @@ imageTrace Outline Ääriviiva
|
||||
@msg `{key}` must be a number, not {v} `{key}` on oltava luku, ei {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} on oltava Unix-aika sekunteina (kokonaisluku) tai null
|
||||
@msg `{key}` must be a string `{key}` on oltava merkkijono
|
||||
@msg `{key}` must be a profile name or null `{key}` on oltava profiilin nimi tai null
|
||||
@msg `{key}` must be a whole number `{key}` on oltava kokonaisluku
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` on oltava kokonaisluku väliltä {min}–{max} (saatiin {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` on oltava väliltä {min}–{max} (saatiin {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -263,6 +263,7 @@ font-technology Variable Variables
|
||||
Asset Export Settings Paramètres d’exportation de ressources
|
||||
Assets Ressources
|
||||
Assign Attribuer
|
||||
Assign Profile Attribuer un profil
|
||||
Assign Profile… Attribuer un profil…
|
||||
Assign: Attribuer :
|
||||
Attach to Active Plane Associer au plan actif
|
||||
@@ -3871,6 +3872,7 @@ digits Malayalam Malayalam
|
||||
Windows Windows
|
||||
Working CMYK CMJN de travail
|
||||
Working CMYK (don't tag) CMJN de travail (sans balise)
|
||||
Working RGB (don't tag) RVB de travail (sans balise)
|
||||
Workspace Espace de travail
|
||||
Workspace {i} Espace de travail {i}
|
||||
Wrinkle Tool Outil Fronces
|
||||
@@ -4230,6 +4232,7 @@ axis Both Les deux
|
||||
@msg `{key}` must be a number, not {v} `{key}` doit être un nombre, pas {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} doit être un temps Unix en secondes (un entier) ou null
|
||||
@msg `{key}` must be a string `{key}` doit être une chaîne
|
||||
@msg `{key}` must be a profile name or null `{key}` doit être un nom de profil ou null
|
||||
@msg `{key}` must be a whole number `{key}` doit être un nombre entier
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` doit être un nombre entier compris entre {min} et {max} (reçu : {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` doit être compris entre {min} et {max} (reçu : {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5319,6 +5319,7 @@ antiAlias Sharp शार्प
|
||||
Words Longer Than: से ज्यादा शब्द:
|
||||
Working CMYK वर्किंग CMYK
|
||||
Working CMYK (don't tag) कार्य CMYK (टैग नहीं)
|
||||
Working RGB (don't tag) कार्य RGB (टैग नहीं)
|
||||
Working RGB वर्किंग RGB
|
||||
Workspace वर्कस्पेस
|
||||
Workspace {i} वर्कस्पेस {i}
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -360,6 +360,7 @@ font-technology Variable Változó
|
||||
Asset Export Settings Elemexportálási beállítások
|
||||
Assets Elemek
|
||||
Assign Hozzárendelés
|
||||
Assign Profile Profil hozzárendelése
|
||||
Assign Profile… Profil hozzárendelése…
|
||||
Assign: Hozzárendelés:
|
||||
Attach to Active Plane Csatolás az aktív síkhoz
|
||||
@@ -4614,6 +4615,7 @@ mark-style Japanese Japán
|
||||
Windows Windows
|
||||
Working CMYK Munka-CMYK
|
||||
Working CMYK (don't tag) Munka-CMYK (címke nélkül)
|
||||
Working RGB (don't tag) Munka-RGB (címke nélkül)
|
||||
Working RGB Munka-RGB
|
||||
Workspace Munkaterület
|
||||
Workspace {i} Munkaterület {i}
|
||||
@@ -4751,6 +4753,7 @@ imageTrace Outline Körvonal
|
||||
@msg `{key}` must be a number, not {v} `{key}`: szám kell, ez nem az: {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key}: Unix-idő kell másodpercben (egész szám) vagy null
|
||||
@msg `{key}` must be a string `{key}`: szöveg kell
|
||||
@msg `{key}` must be a profile name or null `{key}`: profilnév vagy null kell
|
||||
@msg `{key}` must be a whole number `{key}`: egész szám kell
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}`: {min} és {max} közötti egész szám kell (kapott érték: {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}`: {min} és {max} közötti érték kell (kapott érték: {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -106,6 +106,7 @@
|
||||
PDF Presets… Preset PDF…
|
||||
Perspective Grid Presets… Preset kisi perspektif…
|
||||
Color Settings… Pengaturan warna…
|
||||
Assign Profile Tetapkan profil
|
||||
Assign Profile… Tetapkan profil…
|
||||
Keyboard Shortcuts… Pintasan papan tik…
|
||||
Import Shortcut Set Impor set pintasan
|
||||
@@ -1879,6 +1880,7 @@ digits Malayalam Malayalam
|
||||
Simulate Paper Simulasikan kertas
|
||||
Use Black Point Compensation Gunakan kompensasi titik hitam
|
||||
Working CMYK (don't tag) CMYK kerja (tanpa tag)
|
||||
Working RGB (don't tag) RGB kerja (tanpa tag)
|
||||
{name} (spot) {name} (spot)
|
||||
Add to Profiles… Tambahkan ke profil…
|
||||
Align Stroke to Center Ratakan stroke ke tengah
|
||||
|
||||
|
@@ -262,6 +262,7 @@ font-technology Variable Variabili
|
||||
Asset Export Settings Impostazioni esportazione risorse
|
||||
Assets Risorse
|
||||
Assign Assegna
|
||||
Assign Profile Assegna profilo
|
||||
Assign Profile… Assegna profilo…
|
||||
Assign: Assegna:
|
||||
Attach to Active Plane Associa al piano attivo
|
||||
@@ -3918,6 +3919,7 @@ digits Malayalam Malayalam
|
||||
Windows Windows
|
||||
Working CMYK CMYK di lavoro
|
||||
Working CMYK (don't tag) CMYK di lavoro (senza tag)
|
||||
Working RGB (don't tag) RGB di lavoro (senza tag)
|
||||
Workspace Area di lavoro
|
||||
Workspace {i} Area di lavoro {i}
|
||||
Wrinkle Tool Strumento Grinza
|
||||
@@ -4284,6 +4286,7 @@ axis Both Entrambi
|
||||
@msg `{key}` must be a number, not {v} `{key}` deve essere un numero, non {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} deve essere un tempo Unix in secondi (un intero) o null
|
||||
@msg `{key}` must be a string `{key}` deve essere una stringa
|
||||
@msg `{key}` must be a profile name or null `{key}` deve essere un nome di profilo o null
|
||||
@msg `{key}` must be a whole number `{key}` deve essere un numero intero
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` deve essere un numero intero tra {min} e {max} (ricevuto {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` deve essere compreso tra {min} e {max} (ricevuto {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -186,6 +186,7 @@ digits Malayalam マラヤーラム数字
|
||||
PDF Presets… PDF プリセット…
|
||||
Perspective Grid Presets… 遠近グリッドプリセット…
|
||||
Color Settings… カラー設定…
|
||||
Assign Profile プロファイルの指定
|
||||
Assign Profile… プロファイルの指定…
|
||||
Keyboard Shortcuts… キーボードショートカット…
|
||||
Preferences… 環境設定…
|
||||
@@ -3947,6 +3948,7 @@ file-filter Templates テンプレート
|
||||
Weight 線幅
|
||||
Windows Windows
|
||||
Working CMYK (don't tag) 作業用 CMYK (タグなし)
|
||||
Working RGB (don't tag) 作業用 RGB (タグなし)
|
||||
Workspace {i} ワークスペース {i}
|
||||
Yellow イエロー
|
||||
[Normal Character Style] [標準文字スタイル]
|
||||
@@ -4469,6 +4471,7 @@ swatch Bright Violet ビビッドバイオレット
|
||||
@msg `{key}` must be a #rrggbb color `{key}` は #rrggbb 形式のカラーにしてください
|
||||
@msg `{key}` must be a #rrggbb colour `{key}` は #rrggbb 形式のカラーにしてください
|
||||
@msg `{key}` must be a string `{key}` は文字列にしてください
|
||||
@msg `{key}` must be a profile name or null `{key}` はプロファイル名または null にしてください
|
||||
@msg `{key}` must be a whole number `{key}` は整数にしてください
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` は {min} から {max} までの整数にしてください (指定値: {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` は {min} から {max} までの値にしてください (指定値: {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -117,6 +117,7 @@
|
||||
PDF Presets… PDF-ის პრესეტები…
|
||||
Perspective Grid Presets… პერსპექტივის ბადის პრესეტები…
|
||||
Color Settings… ფერის პარამეტრები…
|
||||
Assign Profile პროფილის მინიჭება
|
||||
Assign Profile… პროფილის მინიჭება…
|
||||
Keyboard Shortcuts… კლავიატურის მალსახმობები…
|
||||
Preferences… პარამეტრები…
|
||||
@@ -1804,6 +1805,7 @@ digits Malayalam მალაიალამური
|
||||
Simulate Paper ქაღალდის იმიტაცია
|
||||
Use Black Point Compensation შავი წერტილის კომპენსაციის გამოყენება
|
||||
Working CMYK (don't tag) სამუშაო CMYK (ტეგის გარეშე)
|
||||
Working RGB (don't tag) სამუშაო RGB (ტეგის გარეშე)
|
||||
{name} (spot) {name} (სპოტ)
|
||||
Add to Profiles… პროფილებში დამატება…
|
||||
Align Stroke to Center კონტურის ცენტრზე სწორება
|
||||
@@ -4022,6 +4024,7 @@ font-technology Variable ცვლადი
|
||||
@msg `{key}` must be a number, not {v} `{key}` უნდა იყოს რიცხვი და არა {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} უნდა იყოს Unix-დრო წამებში (მთელი რიცხვი) ან null
|
||||
@msg `{key}` must be a string `{key}` უნდა იყოს სტრიქონი
|
||||
@msg `{key}` must be a profile name or null `{key}` უნდა იყოს პროფილის სახელი ან null
|
||||
@msg `{key}` must be a whole number `{key}` უნდა იყოს მთელი რიცხვი
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` უნდა იყოს მთელი რიცხვი {min}-დან {max}-მდე (მიღებულია {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` უნდა იყოს {min}-სა და {max}-ს შორის (მიღებულია {x})
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -179,6 +179,7 @@ digits Malayalam 말라얄람어
|
||||
PDF Presets… PDF 프리셋…
|
||||
Perspective Grid Presets… 원근 격자 프리셋…
|
||||
Color Settings… 색상 설정…
|
||||
Assign Profile 프로파일 지정
|
||||
Assign Profile… 프로파일 지정…
|
||||
Keyboard Shortcuts… 키보드 단축키…
|
||||
Preferences… 환경 설정…
|
||||
@@ -3935,6 +3936,7 @@ file-filter Templates 템플릿
|
||||
Weight 두께
|
||||
Windows Windows
|
||||
Working CMYK (don't tag) 작업용 CMYK (태그 안 함)
|
||||
Working RGB (don't tag) 작업용 RGB (태그 안 함)
|
||||
Workspace {i} 작업 영역 {i}
|
||||
Yellow 노랑
|
||||
[Normal Character Style] [기본 문자 스타일]
|
||||
@@ -4396,6 +4398,7 @@ theme Appearance 외관
|
||||
@msg `{key}` must be a #rrggbb color `{key}`은(는) #rrggbb 색상이어야 합니다
|
||||
@msg `{key}` must be a #rrggbb colour `{key}`은(는) #rrggbb 색상이어야 합니다
|
||||
@msg `{key}` must be a string `{key}`은(는) 문자열이어야 합니다
|
||||
@msg `{key}` must be a profile name or null `{key}`은(는) 프로파일 이름 또는 null이어야 합니다
|
||||
@msg `{key}` must be a whole number `{key}`은(는) 정수여야 합니다
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}`은(는) {min}에서 {max} 사이의 정수여야 합니다({x} 입력됨)
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}`은(는) {min}에서 {max} 사이여야 합니다({x} 입력됨)
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -106,6 +106,7 @@
|
||||
PDF Presets… PDF-voorinstellingen…
|
||||
Perspective Grid Presets… Voorinstellingen voor perspectiefraster…
|
||||
Color Settings… Kleurinstellingen…
|
||||
Assign Profile Profiel toewijzen
|
||||
Assign Profile… Profiel toewijzen…
|
||||
Keyboard Shortcuts… Sneltoetsen…
|
||||
Import Shortcut Set Sneltoetsenset importeren
|
||||
@@ -1893,6 +1894,7 @@ digits Malayalam Malayalam
|
||||
Simulate Paper Papier simuleren
|
||||
Use Black Point Compensation Zwartpuntcompensatie gebruiken
|
||||
Working CMYK (don't tag) Werk-CMYK (niet taggen)
|
||||
Working RGB (don't tag) Werk-RGB (niet taggen)
|
||||
{name} (spot) {name} (spotkleur)
|
||||
Add to Profiles… Toevoegen aan profielen…
|
||||
Align Stroke to Center Lijn in het midden uitlijnen
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -121,6 +121,7 @@
|
||||
PDF Presets… Ustawienia PDF…
|
||||
Perspective Grid Presets… Ustawienia siatki perspektywy…
|
||||
Color Settings… Ustawienia kolorów…
|
||||
Assign Profile Przypisz profil
|
||||
Assign Profile… Przypisz profil…
|
||||
Keyboard Shortcuts… Skróty klawiaturowe…
|
||||
Preferences… Preferencje…
|
||||
@@ -1990,6 +1991,7 @@ digits Malayalam Malajalam
|
||||
Simulate Paper Symuluj papier
|
||||
Use Black Point Compensation Użyj kompensacji punktu czerni
|
||||
Working CMYK (don't tag) Roboczy CMYK (bez znacznika)
|
||||
Working RGB (don't tag) Roboczy RGB (bez znacznika)
|
||||
{name} (spot) {name} (dodatkowy)
|
||||
Add to Profiles… Dodaj do profili…
|
||||
Align Stroke to Center Wyrównaj obrys do środka
|
||||
@@ -4373,6 +4375,7 @@ imageTrace Outline Kontur
|
||||
@msg `{key}` must be a number, not {v} `{key}` musi być liczbą, nie {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} musi być czasem Unix w sekundach (liczbą całkowitą) lub null
|
||||
@msg `{key}` must be a string `{key}` musi być ciągiem znaków
|
||||
@msg `{key}` must be a profile name or null `{key}` musi być nazwą profilu lub null
|
||||
@msg `{key}` must be a whole number `{key}` musi być liczbą całkowitą
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` musi być liczbą całkowitą od {min} do {max} (podano {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` musi mieścić się w zakresie od {min} do {max} (podano {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -255,6 +255,7 @@ antiAlias Sharp Nítido
|
||||
Asset Export Settings Configurações de Exportação de Ativos
|
||||
Assets Ativos
|
||||
Assign Atribuir
|
||||
Assign Profile Atribuir Perfil
|
||||
Assign Profile… Atribuir Perfil…
|
||||
Assign: Atribuir:
|
||||
Attach to Active Plane Anexar ao Plano Ativo
|
||||
@@ -3789,6 +3790,7 @@ axis Both Ambos
|
||||
@msg `{key}` must be a number, not {v} `{key}` deve ser um número, não {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} deve ser um tempo Unix em segundos (um inteiro) ou null
|
||||
@msg `{key}` must be a string `{key}` deve ser uma string
|
||||
@msg `{key}` must be a profile name or null `{key}` deve ser um nome de perfil ou null
|
||||
@msg `{key}` must be a whole number `{key}` deve ser um número inteiro
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` deve ser um número inteiro entre {min} e {max} (recebido {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` deve estar entre {min} e {max} (recebido {x})
|
||||
@@ -5114,6 +5116,7 @@ axis Both Ambos
|
||||
Weight Espessura
|
||||
Windows Windows
|
||||
Working CMYK (don't tag) CMYK de Trabalho (não marcar)
|
||||
Working RGB (don't tag) RGB de Trabalho (não marcar)
|
||||
Workspace {i} Espaço de Trabalho {i}
|
||||
Yellow Amarelo
|
||||
[Normal Character Style] [Estilo de Caractere Normal]
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -260,6 +260,7 @@ font-technology Variable Вариативные
|
||||
Asset Export Settings Параметры экспорта ресурсов
|
||||
Assets Ресурсы
|
||||
Assign Назначить
|
||||
Assign Profile Назначить профиль
|
||||
Assign Profile… Назначить профиль…
|
||||
Assign: Назначить:
|
||||
Attach to Active Plane Прикрепить к активной плоскости
|
||||
@@ -3912,6 +3913,7 @@ digits Malayalam Малаялам
|
||||
Windows Windows
|
||||
Working CMYK Рабочий CMYK
|
||||
Working CMYK (don't tag) Рабочий CMYK (без пометки)
|
||||
Working RGB (don't tag) Рабочий RGB (без пометки)
|
||||
Workspace Рабочая среда
|
||||
Workspace {i} Рабочая среда {i}
|
||||
Wrinkle Tool Инструмент «Морщины»
|
||||
@@ -4278,6 +4280,7 @@ axis Both Оба
|
||||
@msg `{key}` must be a number, not {v} `{key}` должно быть числом, а не {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} должно быть временем Unix в секундах (целым числом) или null
|
||||
@msg `{key}` must be a string `{key}` должно быть строкой
|
||||
@msg `{key}` must be a profile name or null `{key}` должно быть именем профиля или null
|
||||
@msg `{key}` must be a whole number `{key}` должно быть целым числом
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` должно быть целым числом от {min} до {max} (получено {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` должно быть от {min} до {max} (получено {x})
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -251,6 +251,7 @@ font-technology Variable Variabla
|
||||
Asset Export Settings Inställningar för resursexport
|
||||
Assets Resurser
|
||||
Assign Tilldela
|
||||
Assign Profile Tilldela profil
|
||||
Assign Profile… Tilldela profil…
|
||||
Assign: Tilldela:
|
||||
Attach to Active Plane Koppla till aktivt plan
|
||||
@@ -3801,6 +3802,7 @@ digits Malayalam Malayalam
|
||||
Windows Windows
|
||||
Working CMYK Arbets-CMYK
|
||||
Working CMYK (don't tag) Arbets-CMYK (tagga inte)
|
||||
Working RGB (don't tag) Arbets-RGB (tagga inte)
|
||||
Workspace Arbetslayout
|
||||
Workspace {i} Arbetslayout {i}
|
||||
Wrinkle Tool Skrynkelverktyg
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -247,6 +247,7 @@ font-technology Variable Değişken
|
||||
Asset Export Settings Varlık Dışa Aktarma Ayarları
|
||||
Assets Varlıklar
|
||||
Assign Ata
|
||||
Assign Profile Profil Ata
|
||||
Assign Profile… Profil Ata…
|
||||
Assign: Ata:
|
||||
Attach to Active Plane Etkin Düzlem'e Ekle
|
||||
@@ -3687,6 +3688,7 @@ digits Malayalam Malayalam
|
||||
Windows Windows
|
||||
Working CMYK CMYK'de çalışıyor
|
||||
Working CMYK (don't tag) CMYK çalışıyor (etiketlemeyin)
|
||||
Working RGB (don't tag) Çalışan RGB (etiketlemeyin)
|
||||
Workspace Çalışma Alanı
|
||||
Workspace {i} Çalışma Alanı {i}
|
||||
Wrinkle Tool Kırışıklık Aracı
|
||||
@@ -4028,6 +4030,7 @@ axis Both Her İkisi
|
||||
@msg `{key}` must be a #rrggbb colour `{key}` bir #rrggbb rengi olmalıdır
|
||||
@msg `{key}` must be a number `{key}` bir sayı olmalıdır
|
||||
@msg `{key}` must be a string `{key}` bir dize olmalıdır
|
||||
@msg `{key}` must be a profile name or null `{key}` bir profil adı ya da null olmalıdır
|
||||
@msg `{key}` must be a whole number `{key}` bir tam sayı olmalıdır
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}`, {min} ile {max} arasında bir tam sayı olmalıdır ({x}'yi aldı)
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}`, {min} ile {max} arasında olmalıdır ({x}'yi aldı)
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -256,6 +256,7 @@ font-technology Variable Варіативні
|
||||
Asset Export Settings Параметри експорту ресурсів
|
||||
Assets Ресурси
|
||||
Assign Призначити
|
||||
Assign Profile Призначити профіль
|
||||
Assign Profile… Призначити профіль…
|
||||
Assign: Призначити:
|
||||
Attach to Active Plane Прикріпити до активної площини
|
||||
@@ -3911,6 +3912,7 @@ effect Points Точки
|
||||
Windows Windows
|
||||
Working CMYK Робочий CMYK
|
||||
Working CMYK (don't tag) Робочий CMYK (без позначки)
|
||||
Working RGB (don't tag) Робочий RGB (без позначки)
|
||||
Workspace Робоче середовище
|
||||
Workspace {i} Робоче середовище {i}
|
||||
Wrinkle Tool Інструмент «Зморшки»
|
||||
@@ -4268,6 +4270,7 @@ axis Both Обидві
|
||||
@msg `{key}` must be a number, not {v} `{key}` має бути числом, а не {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} має бути часом Unix у секундах (цілим числом) або null
|
||||
@msg `{key}` must be a string `{key}` має бути рядком
|
||||
@msg `{key}` must be a profile name or null `{key}` має бути назвою профілю або null
|
||||
@msg `{key}` must be a whole number `{key}` має бути цілим числом
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` має бути цілим числом від {min} до {max} (отримано {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` має бути від {min} до {max} (отримано {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 182 and column 5.
|
@@ -289,6 +289,7 @@ font-technology Variable Biến thiên
|
||||
Asset Export Settings Cài đặt xuất asset
|
||||
Assets Asset
|
||||
Assign Gán
|
||||
Assign Profile Gán hồ sơ màu
|
||||
Assign Profile… Gán hồ sơ màu…
|
||||
Assign: Gán:
|
||||
Attach to Active Plane Gắn vào mặt phẳng đang hoạt động
|
||||
@@ -4281,6 +4282,7 @@ mark-style Japanese Kiểu Nhật
|
||||
Windows Windows
|
||||
Working CMYK CMYK làm việc
|
||||
Working CMYK (don't tag) CMYK làm việc (không gắn thẻ)
|
||||
Working RGB (don't tag) RGB làm việc (không gắn thẻ)
|
||||
Workspace Không gian làm việc
|
||||
Workspace {i} Không gian làm việc {i}
|
||||
Wrinkle Tool Công cụ nhăn
|
||||
@@ -4404,6 +4406,7 @@ theme Appearance Giao diện
|
||||
@msg `{key}` must be a number, not {v} `{key}` phải là một số, không phải {v}
|
||||
@msg {key} must be Unix seconds (an integer) or null {key} phải là thời gian Unix tính bằng giây (số nguyên) hoặc null
|
||||
@msg `{key}` must be a string `{key}` phải là một chuỗi
|
||||
@msg `{key}` must be a profile name or null `{key}` phải là tên hồ sơ màu hoặc null
|
||||
@msg `{key}` must be a whole number `{key}` phải là số nguyên
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` phải là số nguyên từ {min} đến {max} (nhận được {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` phải nằm trong khoảng {min} đến {max} (nhận được {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 204 and column 5.
|
@@ -207,6 +207,7 @@ antiAlias Sharp 锐利
|
||||
Asset Export Settings 资源导出设置
|
||||
Assets 资源
|
||||
Assign 指定
|
||||
Assign Profile 指定配置文件
|
||||
Assign Profile… 指定配置文件…
|
||||
Assign: 指定:
|
||||
Attach to Active Plane 附加到活动平面
|
||||
@@ -3762,6 +3763,7 @@ digits Malayalam 马拉雅拉姆数字
|
||||
Windows Windows
|
||||
Working CMYK 工作 CMYK
|
||||
Working CMYK (don't tag) 工作 CMYK (不加标签)
|
||||
Working RGB (don't tag) 工作 RGB (不加标签)
|
||||
Workspace 工作区
|
||||
Workspace {i} 工作区 {i}
|
||||
Wrinkle Tool 褶皱工具
|
||||
@@ -4183,6 +4185,7 @@ imageTrace Outline 轮廓
|
||||
@msg `{key}` must be `auto` or a language code such as `en` or `zh-hant` `{key}` 必须是 `auto` 或语言代码,例如 `en` 或 `zh-hant`
|
||||
@msg `{key}` must be a #rrggbb colour `{key}` 必须是 #rrggbb 颜色
|
||||
@msg `{key}` must be a string `{key}` 必须是字符串
|
||||
@msg `{key}` must be a profile name or null `{key}` 必须是配置文件名称或 null
|
||||
@msg `{key}` must be a whole number `{key}` 必须是整数
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` 必须是介于 {min} 和 {max} 之间的整数 (实际为 {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` 必须介于 {min} 和 {max} 之间 (实际为 {x})
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -220,6 +220,7 @@ font-technology Variable 可變
|
||||
Asset Export Settings 資產匯出設定
|
||||
Assets 資產
|
||||
Assign 指定
|
||||
Assign Profile 指定描述檔
|
||||
Assign Profile… 指定描述檔…
|
||||
Assign: 指定:
|
||||
Attach to Active Plane 附加至作用中平面
|
||||
@@ -1991,6 +1992,7 @@ file-filter Templates 範本
|
||||
@msg `{key}` must be `auto` or a language code such as `en` or `zh-hant` `{key}` 必須是 `auto` 或語言代碼,例如 `en` 或 `zh-hant`
|
||||
@msg `{key}` must be a #rrggbb colour `{key}` 必須是 #rrggbb 顏色
|
||||
@msg `{key}` must be a string `{key}` 必須是字串
|
||||
@msg `{key}` must be a profile name or null `{key}` 必須是描述檔名稱或 null
|
||||
@msg `{key}` must be a whole number `{key}` 必須是整數
|
||||
@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}` 必須是介於 {min} 和 {max} 之間的整數 (收到 {x})
|
||||
@msg `{key}` must be between {min} and {max} (got {x}) `{key}` 必須介於 {min} 和 {max} 之間 (收到 {x})
|
||||
@@ -4898,6 +4900,7 @@ digits Malayalam 馬來亞拉姆數字
|
||||
Windows Windows
|
||||
Working CMYK 使用中的 CMYK
|
||||
Working CMYK (don't tag) 工作 CMYK (不加標記)
|
||||
Working RGB (don't tag) 工作 RGB (不加標記)
|
||||
Workspace 工作區
|
||||
Workspace {i} 工作區 {i}
|
||||
Wrinkle Tool 皺摺工具
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -76,7 +76,7 @@ fn plates_section(app: &mut VectorcraftApp, ui: &mut Ui) {
|
||||
|
||||
/// A dropdown of the `kind` profiles after `extra` (a built-in entry, shown in the UI language);
|
||||
/// profile names are shown as they are. Returns the chosen name.
|
||||
fn profile_dropdown(ui: &mut Ui, id: &str, current: &str, kind: ProfileKind, extra: Option<&str>) -> Option<String> {
|
||||
pub(crate) fn profile_dropdown(ui: &mut Ui, id: &str, current: &str, kind: ProfileKind, extra: Option<&str>) -> Option<String> {
|
||||
let names: Vec<String> =
|
||||
extra.map(str::to_string).into_iter().chain(cms::profiles().into_iter().filter(|p| p.kind == kind).map(|p| p.name)).collect();
|
||||
let refs: Vec<&str> = names.iter().map(|n| super::label_or_name(n, extra == Some(n.as_str()))).collect();
|
||||
|
||||
@@ -574,8 +574,12 @@ Document Setup: File → Document Setup… (`file.documentSetup`, Cmd+Alt+P) ope
|
||||
are what `document.setup` reports (`units`, `bleed` [top, bottom, left, right] in pt, `outlineImages`,
|
||||
`highlightSubstitutedGlyphs`, `gridSize`, `gridColors`, `simulatePaper`, `flattenerPreset`,
|
||||
`discardWhiteOverprint`, `language`, `quotes`, `typographersQuotes`, `superscript`, `subscript`, `smallCapsSize`,
|
||||
`exportText`, `backgroundContents`) plus `tab` (`General`, `Transparency` or `Type`) and `bleedLinked`.
|
||||
`ui.dialog.confirm` runs `document.setup` with them as one undo step; a bad value answers with an error and the dialog
|
||||
`exportText`, `backgroundContents`) plus `tab` (`General`, `Transparency`, `Type` or `Color`) and `bleedLinked`, and
|
||||
the Color tab's `colorMode` (`rgb` or `cmyk`), `convertColors` (a mode change converts the colors; `false` keeps their
|
||||
numbers), `rgbProfile` and `cmykProfile` (a profile name, or null for the working space).
|
||||
`ui.dialog.confirm` runs `document.setup` with them as one undo step. When the Color tab's fields differ from the
|
||||
document, it runs `document.setup`, then `edit.assignProfile` with the changed profiles, then `file.documentColorMode`
|
||||
in one `command.batch`, and the document's changes are one undo step. A bad value answers with an error and the dialog
|
||||
stays open.
|
||||
|
||||
New Document: File → New… (`file.newDialog`, Cmd+N) opens the `newDocument` dialog. Its fields are `file.new`'s params
|
||||
|
||||
@@ -5160,6 +5160,9 @@ and small caps proportions, SVG text export) and the background contents (white:
|
||||
art). Pass any of these keys to change them in one undo step; `document.setUnits` stays as an alias for `units`.
|
||||
A file whose bleed (0 to 72 pt a side), superscript and subscript sizes (1 to 500%) and positions (-500 to 500%) or
|
||||
small caps size (1 to 200%) lies outside those ranges opens with the nearer end of each range.
|
||||
`document.setup` does not take the color mode or the assigned profiles. The Document Setup dialog's Color tab sets
|
||||
them with `edit.assignProfile` and `file.documentColorMode`: its OK runs `document.setup`, then `edit.assignProfile`,
|
||||
then `file.documentColorMode` in one `command.batch`, and the document's changes are one undo step.
|
||||
|
||||
```json
|
||||
{"name":"run_command","arguments":{"command":"document.setup","params":{"gridColors":"Blue","gridSize":"large","language":"German","bleed":9}}}
|
||||
|
||||
@@ -675,6 +675,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
|
||||
- **Window › New Window (G7, #4116):** New Window (`window.newWindow`) opens another view of the current document ([public source](https://helpx.adobe.com/illustrator/using/viewing-artwork.html) describes showing one document in several windows at once), with its own zoom, center, rotation, artboard and Outline or Preview, as a tab of its own; an edit in one view shows in every view. Tile, Cascade, Float in Window, Float All in Windows and Consolidate All Windows arrange each view as they arrange a document, and Next and Previous Document step through the views. Closing a view leaves the document open; closing its last view closes the document, asking to save it first. The view's number after the name in its tab ("Name:2", while the document has more than one view) is VectorCraft's own. Tests: `crates/ui-egui/src/doc_windows/tests.rs`.
|
||||
|
||||
- **Document Setup modal handoff:** Document Setup → Edit Artboards applies valid settings, closes the dialog and activates the Artboard tool. Pointer-click tests cover successful handoff, invalid settings, OK, Cancel and Undo in `dialogs/document_setup.rs`.
|
||||
- **Document Setup › Color:** a Color tab shows the document color mode (RGB Color or CMYK Color), a Convert to CMYK or Convert to RGB box for a mode change (cleared: the colors keep their numbers), and the RGB and CMYK profiles assigned to the document, with a working-space entry for none. OK runs `edit.assignProfile` and then `file.documentColorMode` with the dialog's other changes in one `command.batch`, and the document's changes are one undo step. An unchanged Color tab adds no color commands, and Cancel, or OK with nothing changed, records no undo step. A Color tab field with a value of the wrong kind is an error, and the dialog stays open. The tab is VectorCraft's own layout; File › Document Color Mode and Edit › Assign Profile… stay as they are. Tests in `dialogs/document_setup.rs`.
|
||||
- **New Document's More Settings and Save Preset:** More Settings opens a pop-up over New Document with only Number of Artboards, the artboard layout, Change to Right-to-Left Layout, Spacing and Columns; Done, Escape or a click outside closes it and keeps the values. Save Preset turns the top of Preset Details into a Save Document Preset heading with the preset's name, Cancel and Save, and hides the document's name, Close and Create until the preset is saved or canceled; nothing in that mode creates a document. Save Preset's default name is the first "Preset N" no saved preset has. VectorCraft's own layout. Harness tests in `dialogs/new_document.rs` cover both.
|
||||
- **Control bar with the Artboard tool:** while the Artboard tool is in use, the Control bar shows the active artboard's controls in place of the object controls: Preset, Portrait and Landscape, New Artboard, Delete Artboard, the Name field, Artboard Options, Rearrange All Artboards, the Transform link, Move and Scale Artwork with Artboard and, while the bar has room, the reference point with X and Y, and W and H with the Constrain Width and Height Proportions link. Each runs the command its Properties or Transform panel counterpart runs (`artboard.setProps`, `artboard.new`, `artboard.delete`, `tool.options {tool: "artboard"}`), and the reference point is the one the Transform panel uses. In an 800-point window the controls up to the Transform link fit, Move and Scale Artwork with Artboard show as their boxes alone with their names in tooltips, and the link opens the Transform panel with the artboard's position and size. Pointer and key tests in `panels/artboards.rs` cover the controls, W about the reference point, the orientation and the name. Public reference: [Using multiple artboards](https://web.archive.org/web/20210925094818/https://helpx.adobe.com/illustrator/using/using-multiple-artboards.html) (archived copy).
|
||||
- **Names of new and renamed artboards, brushes and patterns:** `artboard.new` and `artboard.setProps` trim the white space around the name they are given, as the Artboards panel's rename does, and a blank name gives the artboard its default name, Artboard N for the Nth artboard. `brush.new`, `brush.duplicate`, `brush.options`, `object.pattern.make`, `object.pattern.saveCopy` and `pattern.options` trim the name as the Brush Options dialog and the Pattern Options panel do, and compare the trimmed name with the names there are; a blank name gives the name each command gives when there is none, and Brush Options and Pattern Options keep the name. Tests in `tests/panelcmds.rs`, `tests/brushsym.rs` and `tests/pattern.rs` cover each command. Public references: [Using multiple artboards](https://web.archive.org/web/20210925094818/https://helpx.adobe.com/illustrator/using/using-multiple-artboards.html), [Brushes](https://web.archive.org/web/20251018101754/https://helpx.adobe.com/illustrator/using/brushes.html) and [Create and edit patterns](https://web.archive.org/web/20211031180358/https://helpx.adobe.com/illustrator/using/create-edit-patterns.html) (archived copies).
|
||||
|
||||
Reference in New Issue
Block a user