Merge pull request #686 from storytold/fix/663-canvas-greys
Part of #663: Canvas Color offers light, medium and dark grey
This commit is contained in:
commit
dcc0de7487
File diff suppressed because one or more lines are too long
|
|
@ -261,7 +261,19 @@ pub const PREF_SPECS: &[PrefSpec] = &[
|
|||
"Brightness",
|
||||
choice(&[("dark", "Dark"), ("mediumDark", "Medium Dark"), ("mediumLight", "Medium Light"), ("light", "Light")])
|
||||
),
|
||||
p!("canvasColor", "User Interface", "", "Canvas Color", choice(&[("matchUi", "Match User Interface Brightness"), ("white", "White")])),
|
||||
p!(
|
||||
"canvasColor",
|
||||
"User Interface",
|
||||
"",
|
||||
"Canvas Color",
|
||||
choice(&[
|
||||
("matchUi", "Match User Interface Brightness"),
|
||||
("white", "White"),
|
||||
("lightGray", "Light Gray"),
|
||||
("mediumGray", "Medium Gray"),
|
||||
("darkGray", "Dark Gray")
|
||||
])
|
||||
),
|
||||
p!("autoCollapseIconPanels", "User Interface", "", "Auto-Collapse Iconic Panels", bool),
|
||||
p!("openDocumentsAsTabs", "User Interface", "", "Open Documents As Tabs", bool),
|
||||
p!("largeTabs", "User Interface", "", "Large Tabs", bool),
|
||||
|
|
|
|||
|
|
@ -1400,6 +1400,9 @@
|
|||
Marks and Bleed Marcas y sangrado
|
||||
Marks and Bleeds Marcas y sangrados
|
||||
Match User Interface Brightness Igualar brillo de la interfaz de usuario
|
||||
Light Gray Gris claro
|
||||
Medium Gray Gris medio
|
||||
Dark Gray Gris oscuro
|
||||
Materials… Materiales…
|
||||
Matte Mate
|
||||
Matte: Mate:
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -1399,6 +1399,9 @@
|
|||
Marks and Bleed Marques et fond perdu
|
||||
Marks and Bleeds Marques et fonds perdus
|
||||
Match User Interface Brightness Adapter à la luminosité de l’interface
|
||||
Light Gray Gris clair
|
||||
Medium Gray Gris moyen
|
||||
Dark Gray Gris foncé
|
||||
Materials… Matériaux…
|
||||
Matte Détourage
|
||||
Matte: Détourage :
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -1400,6 +1400,9 @@
|
|||
Marks and Bleed Segni e abbondanza
|
||||
Marks and Bleeds Segni e abbondanze
|
||||
Match User Interface Brightness Adatta alla luminosità dell'interfaccia utente
|
||||
Light Gray Grigio chiaro
|
||||
Medium Gray Grigio medio
|
||||
Dark Gray Grigio scuro
|
||||
Materials… Materiali…
|
||||
Matte Colore alone
|
||||
Matte: Colore alone:
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -1577,6 +1577,9 @@
|
|||
Mark as trapped トラップ済みとしてマーク
|
||||
Marks トンボ
|
||||
Match User Interface Brightness ユーザーインターフェイスの明るさに合わせる
|
||||
Light Gray ライトグレー
|
||||
Medium Gray ミディアムグレー
|
||||
Dark Gray ダークグレー
|
||||
Matte: マット:
|
||||
Maximize 最大化
|
||||
Maximum Editability 編集機能を最大限に保持
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -1262,6 +1262,9 @@
|
|||
Marker… Marcador…
|
||||
Marks Marcas
|
||||
Match User Interface Brightness Corresponder ao Brilho da Interface do Usuário
|
||||
Light Gray Cinza Claro
|
||||
Medium Gray Cinza Médio
|
||||
Dark Gray Cinza Escuro
|
||||
Materials… Materiais…
|
||||
Matte: Fosco:
|
||||
Maximize Maximizar
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
|
|
@ -1398,6 +1398,9 @@
|
|||
Marks and Bleed Метки и вылет
|
||||
Marks and Bleeds Метки и вылеты
|
||||
Match User Interface Brightness Согласовать с яркостью интерфейса
|
||||
Light Gray Светло-серый
|
||||
Medium Gray Средне-серый
|
||||
Dark Gray Тёмно-серый
|
||||
Materials… Материалы…
|
||||
Matte Мат
|
||||
Matte: Мат:
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -1382,6 +1382,9 @@
|
|||
Marks and Bleed 标记和出血
|
||||
Marks and Bleeds 标记和出血
|
||||
Match User Interface Brightness 匹配用户界面亮度
|
||||
Light Gray 浅灰色
|
||||
Medium Gray 中灰色
|
||||
Dark Gray 深灰色
|
||||
Materials… 材质…
|
||||
Matte 杂边
|
||||
Matte: 杂边:
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
|
|
@ -1418,6 +1418,9 @@
|
|||
Marks and Bleed 標記與出血
|
||||
Marks and Bleeds 標記與出血
|
||||
Match User Interface Brightness 符合使用者介面亮度
|
||||
Light Gray 淺灰色
|
||||
Medium Gray 中灰色
|
||||
Dark Gray 深灰色
|
||||
Materials… 材質…
|
||||
Matte 邊緣色
|
||||
Matte: 遮色:
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
|
|
@ -80,13 +80,26 @@ pub fn restore(app: &mut VectorcraftApp) {
|
|||
#[derive(Clone, Copy, PartialEq)]
|
||||
struct Applied {
|
||||
brightness: Brightness,
|
||||
white_canvas: bool,
|
||||
/// User Interface › Canvas Color, unless it matches the interface brightness.
|
||||
canvas: Option<egui::Color32>,
|
||||
threads: i32,
|
||||
tool_tips: bool,
|
||||
scrub: bool,
|
||||
bare_points: bool,
|
||||
}
|
||||
|
||||
/// User Interface › Canvas Color: the canvas around the artboards, or `None` to match the
|
||||
/// interface brightness. The greys keep the white page's edge in view (#663).
|
||||
fn canvas_color(key: &str) -> Option<egui::Color32> {
|
||||
match key {
|
||||
"white" => Some(egui::Color32::WHITE),
|
||||
"lightGray" => Some(egui::Color32::from_gray(0xc8)),
|
||||
"mediumGray" => Some(egui::Color32::from_gray(0x96)),
|
||||
"darkGray" => Some(egui::Color32::from_gray(0x5a)),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Per frame: push UI-side preferences into egui / the renderer when they change.
|
||||
pub fn apply_runtime(app: &mut VectorcraftApp, ctx: &egui::Context) {
|
||||
let p = &app.session.prefs;
|
||||
|
|
@ -97,7 +110,7 @@ pub fn apply_runtime(app: &mut VectorcraftApp, ctx: &egui::Context) {
|
|||
}
|
||||
let want = Applied {
|
||||
brightness: app.ui.brightness,
|
||||
white_canvas: p.canvas_color == "white",
|
||||
canvas: canvas_color(&p.canvas_color),
|
||||
threads: p.render_threads,
|
||||
tool_tips: p.show_tool_tips,
|
||||
scrub: p.scrub_numeric_fields,
|
||||
|
|
@ -113,9 +126,9 @@ pub fn apply_runtime(app: &mut VectorcraftApp, ctx: &egui::Context) {
|
|||
ctx.global_style_mut(|s| s.interaction.tooltip_delay = delay);
|
||||
crate::scrub::set_enabled(ctx, want.scrub);
|
||||
crate::widgets::set_bare_numbers_are_points(ctx, want.bare_points);
|
||||
if want.white_canvas {
|
||||
if let Some(c) = want.canvas {
|
||||
let mut t = Tokens::get(ctx);
|
||||
t.pasteboard = egui::Color32::WHITE;
|
||||
t.pasteboard = c;
|
||||
ctx.data_mut(|d| d.insert_temp(egui::Id::NULL, t));
|
||||
}
|
||||
if prev.is_some_and(|pr| pr.threads != want.threads) {
|
||||
|
|
@ -365,6 +378,28 @@ mod tests {
|
|||
use crate::Services;
|
||||
use vectorcraft_engine::Session;
|
||||
|
||||
/// User Interface › Canvas Color (#663): White and the three greys paint the canvas around the
|
||||
/// artboards; Match User Interface Brightness keeps the theme's.
|
||||
#[test]
|
||||
fn canvas_color_choices_paint_the_pasteboard() {
|
||||
let mut app = VectorcraftApp::new(Session::new(), Services::default());
|
||||
let ctx = egui::Context::default();
|
||||
apply_runtime(&mut app, &ctx);
|
||||
let themed = Tokens::get(&ctx).pasteboard;
|
||||
for (key, want) in [
|
||||
("white", egui::Color32::WHITE),
|
||||
("lightGray", egui::Color32::from_gray(0xc8)),
|
||||
("mediumGray", egui::Color32::from_gray(0x96)),
|
||||
("darkGray", egui::Color32::from_gray(0x5a)),
|
||||
("matchUi", themed),
|
||||
] {
|
||||
app.run("prefs.set", serde_json::json!({"key": "canvasColor", "value": key})).unwrap();
|
||||
apply_runtime(&mut app, &ctx);
|
||||
assert_eq!(Tokens::get(&ctx).pasteboard, want, "{key}");
|
||||
}
|
||||
assert!(app.run("prefs.set", serde_json::json!({"key": "canvasColor", "value": "pink"})).is_err());
|
||||
}
|
||||
|
||||
fn app() -> VectorcraftApp {
|
||||
VectorcraftApp::new(Session::new(), Services::default())
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue