mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-12 00:40:57 -06:00
Merge pull request #877 from storytold/fix/775-properties-paragraph
Fix #775: the Properties panel's Paragraph section justifies and hyphenates
This commit is contained in:
@@ -1498,6 +1498,7 @@
|
|||||||
More Más
|
More Más
|
||||||
More Pathfinder options Más opciones de Buscatrazos
|
More Pathfinder options Más opciones de Buscatrazos
|
||||||
More Align options Más opciones de alineación
|
More Align options Más opciones de alineación
|
||||||
|
More Paragraph options Más opciones de párrafo
|
||||||
More Settings Más ajustes
|
More Settings Más ajustes
|
||||||
Move Mover
|
Move Mover
|
||||||
Move All Objects Mover todos los objetos
|
Move All Objects Mover todos los objetos
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -1497,6 +1497,7 @@
|
|||||||
More Plus
|
More Plus
|
||||||
More Pathfinder options Plus d’options Pathfinder
|
More Pathfinder options Plus d’options Pathfinder
|
||||||
More Align options Plus d’options d’alignement
|
More Align options Plus d’options d’alignement
|
||||||
|
More Paragraph options Plus d’options de paragraphe
|
||||||
More Settings Plus de réglages
|
More Settings Plus de réglages
|
||||||
Move Déplacer
|
Move Déplacer
|
||||||
Move All Objects Déplacer tous les objets
|
Move All Objects Déplacer tous les objets
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -1498,6 +1498,7 @@
|
|||||||
More Altro
|
More Altro
|
||||||
More Pathfinder options Altre opzioni di Elaborazione tracciati
|
More Pathfinder options Altre opzioni di Elaborazione tracciati
|
||||||
More Align options Altre opzioni di allineamento
|
More Align options Altre opzioni di allineamento
|
||||||
|
More Paragraph options Altre opzioni di paragrafo
|
||||||
More Settings Altre impostazioni
|
More Settings Altre impostazioni
|
||||||
Move Sposta
|
Move Sposta
|
||||||
Move All Objects Sposta tutti gli oggetti
|
Move All Objects Sposta tutti gli oggetti
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -1640,6 +1640,7 @@
|
|||||||
More 多く
|
More 多く
|
||||||
More Pathfinder options その他のパスファインダーオプション
|
More Pathfinder options その他のパスファインダーオプション
|
||||||
More Align options その他の整列オプション
|
More Align options その他の整列オプション
|
||||||
|
More Paragraph options その他の段落オプション
|
||||||
More Settings その他の設定
|
More Settings その他の設定
|
||||||
Move 移動
|
Move 移動
|
||||||
Move Anchors アンカーポイントを移動
|
Move Anchors アンカーポイントを移動
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -1314,6 +1314,7 @@
|
|||||||
More Mais
|
More Mais
|
||||||
More Pathfinder options Mais opções de Localizador de Caminhos
|
More Pathfinder options Mais opções de Localizador de Caminhos
|
||||||
More Align options Mais opções de alinhamento
|
More Align options Mais opções de alinhamento
|
||||||
|
More Paragraph options Mais opções de parágrafo
|
||||||
More Settings Mais Configurações
|
More Settings Mais Configurações
|
||||||
Move Mover
|
Move Mover
|
||||||
Move Anchors Mover Âncoras
|
Move Anchors Mover Âncoras
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -1496,6 +1496,7 @@
|
|||||||
More Больше
|
More Больше
|
||||||
More Pathfinder options Дополнительные параметры обработки контуров
|
More Pathfinder options Дополнительные параметры обработки контуров
|
||||||
More Align options Дополнительные параметры выравнивания
|
More Align options Дополнительные параметры выравнивания
|
||||||
|
More Paragraph options Дополнительные параметры абзаца
|
||||||
More Settings Дополнительные настройки
|
More Settings Дополнительные настройки
|
||||||
Move Переместить
|
Move Переместить
|
||||||
Move All Objects Переместить все объекты
|
Move All Objects Переместить все объекты
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -1492,6 +1492,7 @@
|
|||||||
More Більше
|
More Більше
|
||||||
More Pathfinder options Додаткові параметри обробки контурів
|
More Pathfinder options Додаткові параметри обробки контурів
|
||||||
More Align options Додаткові параметри вирівнювання
|
More Align options Додаткові параметри вирівнювання
|
||||||
|
More Paragraph options Додаткові параметри абзацу
|
||||||
More Settings Додаткові налаштування
|
More Settings Додаткові налаштування
|
||||||
Move Перемістити
|
Move Перемістити
|
||||||
Move All Objects Перемістити всі об’єкти
|
Move All Objects Перемістити всі об’єкти
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 632 and column 40.
|
@@ -1456,6 +1456,7 @@
|
|||||||
More 较多
|
More 较多
|
||||||
More Pathfinder options 更多路径查找器选项
|
More Pathfinder options 更多路径查找器选项
|
||||||
More Align options 更多对齐选项
|
More Align options 更多对齐选项
|
||||||
|
More Paragraph options 更多段落选项
|
||||||
More Settings 更多设置
|
More Settings 更多设置
|
||||||
Move 移动
|
Move 移动
|
||||||
Move All Objects 移动所有对象
|
Move All Objects 移动所有对象
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -1498,6 +1498,7 @@
|
|||||||
More 更多
|
More 更多
|
||||||
More Pathfinder options 更多路徑管理員選項
|
More Pathfinder options 更多路徑管理員選項
|
||||||
More Align options 更多對齊選項
|
More Align options 更多對齊選項
|
||||||
|
More Paragraph options 更多段落選項
|
||||||
More Settings 更多設定
|
More Settings 更多設定
|
||||||
Move 移動
|
Move 移動
|
||||||
Move All Objects 移動所有物件
|
Move All Objects 移動所有物件
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -60,6 +60,24 @@ fn shown_alignment(justify: Justify, rtl: bool) -> Justify {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The seven alignment buttons, `size` points square, the one of `para`'s alignment on (the
|
||||||
|
/// Paragraph panel's and the Properties panel's).
|
||||||
|
pub fn alignment_buttons(app: &mut VectorcraftApp, ui: &mut Ui, para: &ParaStyle, size: f32) {
|
||||||
|
let shown = shown_alignment(para.justify, resolved_rtl(app, para));
|
||||||
|
for (j, icon, tip, id) in ALIGNMENTS {
|
||||||
|
if widgets::icon_button(ui, icon, tip, shown == j, size).clicked() {
|
||||||
|
para_cmd(app, "text.setStyle", json!({"justify": id}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The Hyphenate checkbox of `para`'s paragraphs.
|
||||||
|
pub fn hyphenate_check(app: &mut VectorcraftApp, ui: &mut Ui, para: &ParaStyle) {
|
||||||
|
if widgets::check(ui, tl!("Hyphenate"), para.hyphenate, true) {
|
||||||
|
format(app, json!({"hyphenate": !para.hyphenate}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn show(app: &mut VectorcraftApp, ui: &mut Ui) {
|
pub fn show(app: &mut VectorcraftApp, ui: &mut Ui) {
|
||||||
let t = Tokens::get(ui.ctx());
|
let t = Tokens::get(ui.ctx());
|
||||||
let Some((_, para)) = text_style(app) else {
|
let Some((_, para)) = text_style(app) else {
|
||||||
@@ -67,14 +85,9 @@ pub fn show(app: &mut VectorcraftApp, ui: &mut Ui) {
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
let rtl = resolved_rtl(app, ¶);
|
let rtl = resolved_rtl(app, ¶);
|
||||||
let shown = shown_alignment(para.justify, rtl);
|
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
ui.spacing_mut().item_spacing.x = 3.0;
|
ui.spacing_mut().item_spacing.x = 3.0;
|
||||||
for (j, icon, tip, id) in ALIGNMENTS {
|
alignment_buttons(app, ui, ¶, 28.0);
|
||||||
if widgets::icon_button(ui, icon, tip, shown == j, 28.0).clicked() {
|
|
||||||
para_cmd(app, "text.setStyle", json!({"justify": id}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Paragraph direction, with the Middle Eastern (Indic) options.
|
// Paragraph direction, with the Middle Eastern (Indic) options.
|
||||||
if app.session.prefs.show_indic_options {
|
if app.session.prefs.show_indic_options {
|
||||||
ui.add_space(6.0);
|
ui.add_space(6.0);
|
||||||
@@ -127,9 +140,7 @@ pub fn show(app: &mut VectorcraftApp, ui: &mut Ui) {
|
|||||||
if pstate::<bool>(ui.ctx(), "pa-hide-options") {
|
if pstate::<bool>(ui.ctx(), "pa-hide-options") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if widgets::check(ui, tl!("Hyphenate"), para.hyphenate, true) {
|
hyphenate_check(app, ui, ¶);
|
||||||
format(app, json!({"hyphenate": !para.hyphenate}));
|
|
||||||
}
|
|
||||||
// Japanese composition: how punctuation is spaced (JLREQ 3.1), with the East Asian options.
|
// Japanese composition: how punctuation is spaced (JLREQ 3.1), with the East Asian options.
|
||||||
if app.session.prefs.show_east_asian_options {
|
if app.session.prefs.show_east_asian_options {
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
|
|||||||
@@ -523,13 +523,17 @@ pub fn type_sections(app: &mut VectorcraftApp, ui: &mut Ui) {
|
|||||||
super::character::font_pickers(app, ui, &s, ("font", "font-style"), (w - 4.0, w - 4.0));
|
super::character::font_pickers(app, ui, &s, ("font", "font-style"), (w - 4.0, w - 4.0));
|
||||||
super::character::metrics_grid(app, ui, "props-char", &s, w, false);
|
super::character::metrics_grid(app, ui, "props-char", &s, w, false);
|
||||||
section_header(ui, tl!("Paragraph"));
|
section_header(ui, tl!("Paragraph"));
|
||||||
ui.horizontal(|ui| {
|
// As in the Paragraph panel: the seven alignments and Hyphenate (#775); the rest is there.
|
||||||
for (icon, j) in [("align-start-vertical", "left"), ("align-center-vertical", "center"), ("align-end-vertical", "right")] {
|
if let Some((_, para)) = super::character::text_style(app) {
|
||||||
if widgets::icon_button(ui, icon, j, false, 24.0).clicked() {
|
ui.horizontal(|ui| {
|
||||||
app.run("text.setStyle", json!({"justify": j})).ok();
|
ui.spacing_mut().item_spacing.x = 3.0;
|
||||||
|
super::paragraph::alignment_buttons(app, ui, ¶, 24.0);
|
||||||
|
if widgets::icon_button(ui, "ellipsis", tl!("More Paragraph options"), false, 24.0).clicked() {
|
||||||
|
app.ui.open_panel = Some("paragraph".into());
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
super::paragraph::hyphenate_check(app, ui, ¶);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@@ -592,6 +596,20 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// #530: Edit Artboards shows the active artboard, with New Artboard, Delete Artboard and Exit.
|
/// #530: Edit Artboards shows the active artboard, with New Artboard, Delete Artboard and Exit.
|
||||||
|
/// #775: type's Paragraph section has Hyphenate, and its checkbox turns it on.
|
||||||
|
#[test]
|
||||||
|
fn type_paragraph_section_hyphenates() {
|
||||||
|
let mut app = VectorcraftApp::new(Session::new(), Default::default());
|
||||||
|
app.run("file.new", json!({"width": 200, "height": 100})).unwrap();
|
||||||
|
app.run("text.create", json!({"x": 10, "y": 50, "text": "Paragraph"})).unwrap();
|
||||||
|
let ctx = egui::Context::default();
|
||||||
|
frame(&mut app, &ctx, vec![]);
|
||||||
|
let texts = frame(&mut app, &ctx, vec![]);
|
||||||
|
click(&mut app, &ctx, &texts, "Hyphenate");
|
||||||
|
let hyphenate = |app: &VectorcraftApp| crate::panels::character::text_style(app).unwrap().1.hyphenate;
|
||||||
|
assert!(hyphenate(&app));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn edit_artboards_adds_artboards_and_exits() {
|
fn edit_artboards_adds_artboards_and_exits() {
|
||||||
let mut app = VectorcraftApp::new(Session::new(), Default::default());
|
let mut app = VectorcraftApp::new(Session::new(), Default::default());
|
||||||
|
|||||||
Reference in New Issue
Block a user