mirror of https://github.com/wayvr-org/wayvr.git
palette selector improvements
This commit is contained in:
parent
952b6e10b6
commit
fd8a327395
|
|
@ -1,8 +1,8 @@
|
||||||
<layout>
|
<layout>
|
||||||
<!-- id, text -->
|
<!-- id, text -->
|
||||||
<template name="ColorPaletteButton">
|
<template name="ColorPaletteButton">
|
||||||
<Button id="${id}" width="350" flex_direction="column" justify_content="space_around"
|
<Button id="${id}" width="350" flex_direction="column" justify_content="space_around" tooltip="${tooltip}" tooltip_side="bottom"
|
||||||
color="${background}" hover_color="${background_variant}" border_color="${outline}" hover_border_color="${highlight}" padding="16" >
|
color="${background}" hover_color="${background_variant}" border_color="${outline}" hover_border_color="${highlight}" padding="16" margin="4" >
|
||||||
<label text="${text}" size="24" weight="bold" color="${on_background}" parent_color="ignore"/>
|
<label text="${text}" size="24" weight="bold" color="${on_background}" parent_color="ignore"/>
|
||||||
<div flex_direction="row" width="100%" justify_content="space_evenly" padding_top="16" >
|
<div flex_direction="row" width="100%" justify_content="space_evenly" padding_top="16" >
|
||||||
<rectangle round="100%" width="32" height="32" color="${primary}" border="2" border_color="${on_primary}" />
|
<rectangle round="100%" width="32" height="32" color="${primary}" border="2" border_color="${on_primary}" />
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,12 @@
|
||||||
"WHISPER_MODEL_HELP": "Zu verwendendes Whisper-Modell.\nGrößere Modelle liefern genauere\nErgebnisse, verbrauchen jedoch mehr VRAM.",
|
"WHISPER_MODEL_HELP": "Zu verwendendes Whisper-Modell.\nGrößere Modelle liefern genauere\nErgebnisse, verbrauchen jedoch mehr VRAM.",
|
||||||
"DEFAULT_OVERLAY_SCALE": "Standardgröße des Overlays",
|
"DEFAULT_OVERLAY_SCALE": "Standardgröße des Overlays",
|
||||||
"DEFAULT_OVERLAY_SCALE_HELP": "Neue Overlays werden in dieser Skalierung erstellt.",
|
"DEFAULT_OVERLAY_SCALE_HELP": "Neue Overlays werden in dieser Skalierung erstellt.",
|
||||||
"COLOR_PALETTE": "Farbpalette"
|
"COLOR_PALETTE": "Farbpalette",
|
||||||
|
"COLOR_PALETTES": "Farbpaletten",
|
||||||
|
"COLOR_PALETTE_CURRENT": "Derzeit aktives Thema.",
|
||||||
|
"COLOR_PALETTE_ACTIVATE": "Klicken Sie hier, um dieses Thema zu verwenden.",
|
||||||
|
"APPLY_CHANGES_RESTART": "WayVR neu starten, um die Änderungen zu übernehmen?",
|
||||||
|
"COLOR_PALETTE_HELP": "Klicken, um Farbpaletten zu durchsuchen.\nUm eigene zu erstellen, besuche die Webseite!"
|
||||||
},
|
},
|
||||||
"HELLO": "Hallo!",
|
"HELLO": "Hallo!",
|
||||||
"AUDIO": {
|
"AUDIO": {
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,10 @@
|
||||||
"CAPTURE_METHOD_HELP": "Try changing this if you are\nexperiencing black or glitchy screens",
|
"CAPTURE_METHOD_HELP": "Try changing this if you are\nexperiencing black or glitchy screens",
|
||||||
"COLOR_KEYING": "Color keying",
|
"COLOR_KEYING": "Color keying",
|
||||||
"COLOR_PALETTE": "Color palette",
|
"COLOR_PALETTE": "Color palette",
|
||||||
|
"COLOR_PALETTE_HELP": "Click to browse color palettes.\nTo create custom ones, see website!",
|
||||||
"COLOR_PALETTES": "Color palettes",
|
"COLOR_PALETTES": "Color palettes",
|
||||||
|
"COLOR_PALETTE_CURRENT": "Currently active theme.",
|
||||||
|
"COLOR_PALETTE_ACTIVATE": "Click to use this theme.",
|
||||||
"APPLY_CHANGES_RESTART": "Restart WayVR to apply changes?",
|
"APPLY_CHANGES_RESTART": "Restart WayVR to apply changes?",
|
||||||
"CLEAR_PIPEWIRE_TOKENS": "Clear PipeWire tokens",
|
"CLEAR_PIPEWIRE_TOKENS": "Clear PipeWire tokens",
|
||||||
"CLEAR_PIPEWIRE_TOKENS_HELP": "Prompt for screen selection on next start",
|
"CLEAR_PIPEWIRE_TOKENS_HELP": "Prompt for screen selection on next start",
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,12 @@
|
||||||
"WHISPER_MODEL_HELP": "Modelo de Whisper a utilizar.\nLos modelos más grandes producen\nresultados más precisos, pero consumen más VRAM.",
|
"WHISPER_MODEL_HELP": "Modelo de Whisper a utilizar.\nLos modelos más grandes producen\nresultados más precisos, pero consumen más VRAM.",
|
||||||
"DEFAULT_OVERLAY_SCALE": "Tamaño de la superposición predeterminado",
|
"DEFAULT_OVERLAY_SCALE": "Tamaño de la superposición predeterminado",
|
||||||
"DEFAULT_OVERLAY_SCALE_HELP": "Genera nuevas capas de superposición con esta escala.",
|
"DEFAULT_OVERLAY_SCALE_HELP": "Genera nuevas capas de superposición con esta escala.",
|
||||||
"COLOR_PALETTE": "Paleta de colores"
|
"COLOR_PALETTE": "Paleta de colores",
|
||||||
|
"COLOR_PALETTES": "Paletas de colores",
|
||||||
|
"COLOR_PALETTE_CURRENT": "Tema actualmente activo.",
|
||||||
|
"COLOR_PALETTE_ACTIVATE": "Haz clic para usar este tema.",
|
||||||
|
"APPLY_CHANGES_RESTART": "¿Reiniciar WayVR para aplicar los cambios?",
|
||||||
|
"COLOR_PALETTE_HELP": "Haz clic para explorar paletas de colores.\nPara crear paletas personalizadas, ¡visita el sitio web!"
|
||||||
},
|
},
|
||||||
"HELLO": "¡Hola!",
|
"HELLO": "¡Hola!",
|
||||||
"AUDIO": {
|
"AUDIO": {
|
||||||
|
|
|
||||||
|
|
@ -206,7 +206,12 @@
|
||||||
"WHISPER_MODEL_HELP": "Modello Whisper da utilizzare.\nI modelli più grandi producono risultati\npiù accurati, ma consumano più VRAM.",
|
"WHISPER_MODEL_HELP": "Modello Whisper da utilizzare.\nI modelli più grandi producono risultati\npiù accurati, ma consumano più VRAM.",
|
||||||
"DEFAULT_OVERLAY_SCALE": "Dimensioni overlay predefinite",
|
"DEFAULT_OVERLAY_SCALE": "Dimensioni overlay predefinite",
|
||||||
"DEFAULT_OVERLAY_SCALE_HELP": "Genera nuovi overlay con questa scala.",
|
"DEFAULT_OVERLAY_SCALE_HELP": "Genera nuovi overlay con questa scala.",
|
||||||
"COLOR_PALETTE": "Tavolozza colori"
|
"COLOR_PALETTE": "Tavolozza colori",
|
||||||
|
"COLOR_PALETTES": "Tavolozze colori",
|
||||||
|
"COLOR_PALETTE_CURRENT": "Tema attualmente attivo.",
|
||||||
|
"COLOR_PALETTE_ACTIVATE": "Clicca per usare questo tema.",
|
||||||
|
"APPLY_CHANGES_RESTART": "Riavviare WayVR per applicare le modifiche?",
|
||||||
|
"COLOR_PALETTE_HELP": "Clicca per sfogliare le palette di colori.\nPer crearne di personalizzate, visita il sito web!"
|
||||||
},
|
},
|
||||||
"APPLICATION_LAUNCHER": "Lanciatore applicazioni",
|
"APPLICATION_LAUNCHER": "Lanciatore applicazioni",
|
||||||
"APPLICATION_STARTED": "Applicazione avviata",
|
"APPLICATION_STARTED": "Applicazione avviata",
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,12 @@
|
||||||
"WHISPER_MODEL_HELP": "使用するWhisperモデル。\nモデルが大きいほど精度は向上しますが、\nVRAMの消費量が増加します。",
|
"WHISPER_MODEL_HELP": "使用するWhisperモデル。\nモデルが大きいほど精度は向上しますが、\nVRAMの消費量が増加します。",
|
||||||
"DEFAULT_OVERLAY_SCALE": "デフォルトのオーバーレイサイズ",
|
"DEFAULT_OVERLAY_SCALE": "デフォルトのオーバーレイサイズ",
|
||||||
"DEFAULT_OVERLAY_SCALE_HELP": "新しいオーバーレイをこのスケールで生成します。",
|
"DEFAULT_OVERLAY_SCALE_HELP": "新しいオーバーレイをこのスケールで生成します。",
|
||||||
"COLOR_PALETTE": "カラーパレット"
|
"COLOR_PALETTE": "カラーパレット",
|
||||||
|
"COLOR_PALETTES": "カラーパレット",
|
||||||
|
"COLOR_PALETTE_CURRENT": "現在有効なテーマ。",
|
||||||
|
"COLOR_PALETTE_ACTIVATE": "クリックしてこのテーマを適用します。",
|
||||||
|
"APPLY_CHANGES_RESTART": "変更を適用するためにWayVRを再起動しますか?",
|
||||||
|
"COLOR_PALETTE_HELP": "クリックしてカラーパレットを選択してください。\nカスタムパレットの作成については、ウェブサイトを参照してください!"
|
||||||
},
|
},
|
||||||
"HELLO": "こんにちは!",
|
"HELLO": "こんにちは!",
|
||||||
"AUDIO": {
|
"AUDIO": {
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,12 @@
|
||||||
"WHISPER_MODEL_HELP": "Model Whisper do wykorzystania.\nWiększe modele dają dokładniejsze\nwyniki, ale zużywają więcej pamięci VRAM.",
|
"WHISPER_MODEL_HELP": "Model Whisper do wykorzystania.\nWiększe modele dają dokładniejsze\nwyniki, ale zużywają więcej pamięci VRAM.",
|
||||||
"DEFAULT_OVERLAY_SCALE": "Domyślny rozmiar nakładki",
|
"DEFAULT_OVERLAY_SCALE": "Domyślny rozmiar nakładki",
|
||||||
"DEFAULT_OVERLAY_SCALE_HELP": "Twórz nowe nakładki w tej skali.",
|
"DEFAULT_OVERLAY_SCALE_HELP": "Twórz nowe nakładki w tej skali.",
|
||||||
"COLOR_PALETTE": "Paleta kolorów"
|
"COLOR_PALETTE": "Paleta kolorów",
|
||||||
|
"COLOR_PALETTES": "Palety kolorów",
|
||||||
|
"COLOR_PALETTE_CURRENT": "Obecnie aktywny motyw.",
|
||||||
|
"COLOR_PALETTE_ACTIVATE": "Kliknij, aby użyć tego motywu.",
|
||||||
|
"APPLY_CHANGES_RESTART": "Zrestartować WayVR, aby zastosować zmiany?",
|
||||||
|
"COLOR_PALETTE_HELP": "Kliknij, aby przeglądać palety kolorów.\nAby stworzyć własne, odwiedź stronę internetową!"
|
||||||
},
|
},
|
||||||
"APPLICATION_LAUNCHER": "Uruchamiacz aplikacji",
|
"APPLICATION_LAUNCHER": "Uruchamiacz aplikacji",
|
||||||
"APPLICATIONS": "Aplikacje",
|
"APPLICATIONS": "Aplikacje",
|
||||||
|
|
|
||||||
|
|
@ -206,7 +206,12 @@
|
||||||
"WHISPER_MODEL_HELP": "要使用的 Whisper 模型。\n模型越大,结果越准确,\n但消耗的显存 (VRAM) 越多。",
|
"WHISPER_MODEL_HELP": "要使用的 Whisper 模型。\n模型越大,结果越准确,\n但消耗的显存 (VRAM) 越多。",
|
||||||
"DEFAULT_OVERLAY_SCALE": "默认叠加层大小",
|
"DEFAULT_OVERLAY_SCALE": "默认叠加层大小",
|
||||||
"DEFAULT_OVERLAY_SCALE_HELP": "以该比例生成新的叠加层。",
|
"DEFAULT_OVERLAY_SCALE_HELP": "以该比例生成新的叠加层。",
|
||||||
"COLOR_PALETTE": "调色板"
|
"COLOR_PALETTE": "调色板",
|
||||||
|
"COLOR_PALETTES": "配色方案",
|
||||||
|
"COLOR_PALETTE_CURRENT": "当前激活的主题。",
|
||||||
|
"COLOR_PALETTE_ACTIVATE": "点击以使用此主题。",
|
||||||
|
"APPLY_CHANGES_RESTART": "重启 WayVR 以应用更改吗?",
|
||||||
|
"COLOR_PALETTE_HELP": "点击浏览配色方案。\n如需创建自定义配色,请参阅网站!"
|
||||||
},
|
},
|
||||||
"APPLICATION_LAUNCHER": "应用启动器",
|
"APPLICATION_LAUNCHER": "应用启动器",
|
||||||
"APPLICATION_STARTED": "应用已启动",
|
"APPLICATION_STARTED": "应用已启动",
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ mod tab_space_drag;
|
||||||
mod tab_troubleshooting;
|
mod tab_troubleshooting;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
enum TabNameEnum {
|
pub(crate) enum TabNameEnum {
|
||||||
AutostartApps,
|
AutostartApps,
|
||||||
Controls,
|
Controls,
|
||||||
Features,
|
Features,
|
||||||
|
|
@ -291,7 +291,7 @@ impl<T> Tab<T> for TabSettings<T> {
|
||||||
// Sorted alphabetically
|
// Sorted alphabetically
|
||||||
#[allow(clippy::enum_variant_names)]
|
#[allow(clippy::enum_variant_names)]
|
||||||
#[derive(Clone, Copy, Eq, PartialEq, AsRefStr, EnumString)]
|
#[derive(Clone, Copy, Eq, PartialEq, AsRefStr, EnumString)]
|
||||||
enum SettingType {
|
pub(crate) enum SettingType {
|
||||||
AllowSliding,
|
AllowSliding,
|
||||||
BlockGameInput,
|
BlockGameInput,
|
||||||
BlockGameInputIgnoreWatch,
|
BlockGameInputIgnoreWatch,
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ impl SettingsTab for State {
|
||||||
self.globals.clone(),
|
self.globals.clone(),
|
||||||
self.popup_color_palettes.clone(),
|
self.popup_color_palettes.clone(),
|
||||||
self.settings_tasks.clone(),
|
self.settings_tasks.clone(),
|
||||||
|
par.general_config.color_palette.clone(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ use std::{marker::PhantomData, rc::Rc};
|
||||||
|
|
||||||
use wgui::{
|
use wgui::{
|
||||||
assets::AssetPath,
|
assets::AssetPath,
|
||||||
color::WguiColorName,
|
|
||||||
components::button::ComponentButton,
|
components::button::ComponentButton,
|
||||||
globals::WguiGlobals,
|
globals::WguiGlobals,
|
||||||
layout::{Layout, WidgetID},
|
layout::{Layout, WidgetID},
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::rc::Rc;
|
use std::{rc::Rc, sync::Arc};
|
||||||
use wgui::{
|
use wgui::{
|
||||||
assets::AssetPath,
|
assets::AssetPath,
|
||||||
color::WguiColorName,
|
color::WguiColorName,
|
||||||
|
|
@ -32,6 +32,7 @@ pub struct Params<'a> {
|
||||||
pub parent_id: WidgetID,
|
pub parent_id: WidgetID,
|
||||||
pub frontend_tasks: &'a FrontendTasks,
|
pub frontend_tasks: &'a FrontendTasks,
|
||||||
pub settings_tasks: Tasks<SettingsTask>,
|
pub settings_tasks: Tasks<SettingsTask>,
|
||||||
|
pub current_palette: Arc<str>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct View {
|
pub struct View {
|
||||||
|
|
@ -40,6 +41,7 @@ pub struct View {
|
||||||
globals: WguiGlobals,
|
globals: WguiGlobals,
|
||||||
popup_dialog: PopupHolder<views::dialog_box::View>,
|
popup_dialog: PopupHolder<views::dialog_box::View>,
|
||||||
settings_tasks: Tasks<SettingsTask>,
|
settings_tasks: Tasks<SettingsTask>,
|
||||||
|
chosen_palette: Option<Arc<str>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ViewTrait for View {
|
impl ViewTrait for View {
|
||||||
|
|
@ -49,9 +51,7 @@ impl ViewTrait for View {
|
||||||
for task in self.tasks.drain() {
|
for task in self.tasks.drain() {
|
||||||
match task {
|
match task {
|
||||||
Task::SelectPalette(profile) => {
|
Task::SelectPalette(profile) => {
|
||||||
par.general_config.color_palette = profile.into();
|
self.chosen_palette = Some(profile.into());
|
||||||
par.config_change_kind.replace(ConfigChangeKind::WguiThemeChange);
|
|
||||||
|
|
||||||
self.show_restart_dialog_box()?;
|
self.show_restart_dialog_box()?;
|
||||||
}
|
}
|
||||||
Task::Cancel => {
|
Task::Cancel => {
|
||||||
|
|
@ -59,6 +59,11 @@ impl ViewTrait for View {
|
||||||
close_dialog();
|
close_dialog();
|
||||||
}
|
}
|
||||||
Task::Restart => {
|
Task::Restart => {
|
||||||
|
if let Some(palette) = self.chosen_palette.take() {
|
||||||
|
par.general_config.color_palette = palette;
|
||||||
|
par.config_change_kind.replace(ConfigChangeKind::WguiThemeChange);
|
||||||
|
}
|
||||||
|
|
||||||
self.settings_tasks.push(SettingsTask::RestartSoftware);
|
self.settings_tasks.push(SettingsTask::RestartSoftware);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -74,13 +79,12 @@ macro_rules! insert_colors {
|
||||||
$( $key:literal => $color:ident ),* $(,)?
|
$( $key:literal => $color:ident ),* $(,)?
|
||||||
) => {
|
) => {
|
||||||
$(
|
$(
|
||||||
$params.insert(
|
$params.insert_str(
|
||||||
$key,
|
$key,
|
||||||
WguiColorName::$color
|
WguiColorName::$color
|
||||||
.to_wgui_color()
|
.to_wgui_color()
|
||||||
.resolve($palette)
|
.resolve($palette)
|
||||||
.to_hex()
|
.to_hex()
|
||||||
.as_str()
|
|
||||||
);
|
);
|
||||||
)*
|
)*
|
||||||
};
|
};
|
||||||
|
|
@ -103,10 +107,19 @@ impl View {
|
||||||
|
|
||||||
for (idx, (name, palette)) in PALETTES.iter().enumerate() {
|
for (idx, (name, palette)) in PALETTES.iter().enumerate() {
|
||||||
let id = format!("profile_btn_{idx}");
|
let id = format!("profile_btn_{idx}");
|
||||||
|
let is_current = &*params.current_palette == *name;
|
||||||
|
|
||||||
let mut cell_params = TemplateParams::new();
|
let mut cell_params = TemplateParams::new();
|
||||||
cell_params.insert("id", &id);
|
cell_params.insert("id", &id);
|
||||||
cell_params.insert("text", name);
|
|
||||||
|
if is_current {
|
||||||
|
cell_params.insert_str("text", format!("{name} ✅"));
|
||||||
|
cell_params.insert("tooltip", "APP_SETTINGS.COLOR_PALETTE_CURRENT");
|
||||||
|
} else {
|
||||||
|
cell_params.insert("text", name);
|
||||||
|
cell_params.insert("tooltip", "APP_SETTINGS.COLOR_PALETTE_ACTIVATE");
|
||||||
|
}
|
||||||
|
|
||||||
insert_colors!(
|
insert_colors!(
|
||||||
cell_params,
|
cell_params,
|
||||||
palette,
|
palette,
|
||||||
|
|
@ -133,14 +146,16 @@ impl View {
|
||||||
cell_params,
|
cell_params,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let btn = parser_state.fetch_component_as::<ComponentButton>(&id)?;
|
if !is_current {
|
||||||
let tasks_clone = tasks.clone();
|
let btn = parser_state.fetch_component_as::<ComponentButton>(&id)?;
|
||||||
btn.on_click(Rc::new({
|
let tasks_clone = tasks.clone();
|
||||||
move |_common, _e| {
|
btn.on_click(Rc::new({
|
||||||
tasks_clone.push(Task::SelectPalette(name.to_string()));
|
move |_common, _e| {
|
||||||
Ok(())
|
tasks_clone.push(Task::SelectPalette(name.to_string()));
|
||||||
}
|
Ok(())
|
||||||
}));
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
|
|
@ -149,6 +164,7 @@ impl View {
|
||||||
globals: params.globals.clone(),
|
globals: params.globals.clone(),
|
||||||
popup_dialog,
|
popup_dialog,
|
||||||
settings_tasks: params.settings_tasks,
|
settings_tasks: params.settings_tasks,
|
||||||
|
chosen_palette: None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -197,6 +213,7 @@ pub fn mount_popup(
|
||||||
globals: WguiGlobals,
|
globals: WguiGlobals,
|
||||||
popup: PopupHolder<View>,
|
popup: PopupHolder<View>,
|
||||||
settings_tasks: Tasks<SettingsTask>,
|
settings_tasks: Tasks<SettingsTask>,
|
||||||
|
current_palette: Arc<str>,
|
||||||
) {
|
) {
|
||||||
frontend_tasks
|
frontend_tasks
|
||||||
.clone()
|
.clone()
|
||||||
|
|
@ -209,6 +226,7 @@ pub fn mount_popup(
|
||||||
parent_id: data.id_content,
|
parent_id: data.id_content,
|
||||||
frontend_tasks: &frontend_tasks,
|
frontend_tasks: &frontend_tasks,
|
||||||
settings_tasks,
|
settings_tasks,
|
||||||
|
current_palette,
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
popup.set_view(data.handle, view, None);
|
popup.set_view(data.handle, view, None);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use std::{cell::RefCell, rc::Rc};
|
use std::{cell::RefCell, rc::Rc};
|
||||||
|
|
||||||
use cosmic_text::{Attrs, AttrsList, BorrowedWithFontSystem, Buffer, Metrics, Scroll, Shaping, Wrap};
|
use cosmic_text::{Attrs, AttrsList, BorrowedWithFontSystem, Buffer, Metrics, Shaping, Wrap};
|
||||||
use slotmap::Key;
|
use slotmap::Key;
|
||||||
use taffy::AvailableSpace;
|
use taffy::AvailableSpace;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue