mirror of
https://github.com/wayvr-org/wayvr.git
synced 2026-10-28 15:02:39 +01:00
Compare commits
10
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af733b6817 | ||
|
|
936c8bf27d | ||
|
|
998c566fc6 | ||
|
|
6163328769 | ||
|
|
e79440d03d | ||
|
|
e0f09d63c2 | ||
|
|
69dbf331c8 | ||
|
|
5079f31c40 | ||
|
|
3c2d0d07f5 | ||
|
|
a50ad00fb0 |
No files matched your search
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><!-- Icon from Material Symbols by Google - https://github.com/google/material-design-icons/blob/master/LICENSE --><path fill="currentColor" d="M2 21v-2h20v2zm1-3v-7h3v7zm5 0V6h3v12zm5 0V9h3v9zm5 0V3h3v15z"/></svg>
|
||||
|
After Width: | Height: | Size: 297 B |
@@ -1,10 +1,10 @@
|
||||
<layout>
|
||||
<theme>
|
||||
<layout version="2">
|
||||
<vars>
|
||||
<var key="side_size" value="48" />
|
||||
<var key="top_size" value="40" />
|
||||
<var key="side_sprite_size" value="26" />
|
||||
<var key="side_button_size" value="48" />
|
||||
</theme>
|
||||
</vars>
|
||||
|
||||
<template name="SideButton">
|
||||
<Button
|
||||
@@ -41,12 +41,12 @@
|
||||
align_items="center"
|
||||
gap="4"
|
||||
>
|
||||
<SideButton id="btn_side_home" src_builtin="dashboard/wayvr_dashboard_mono.svg" tooltip="HOME_SCREEN" tooltip_side="right" />
|
||||
<SideButton id="btn_side_apps" src_builtin="dashboard/apps.svg" tooltip="APPLICATIONS" tooltip_side="right" />
|
||||
<SideButton id="btn_side_games" src_builtin="dashboard/games.svg" tooltip="GAMES" tooltip_side="right" />
|
||||
<SideButton id="btn_side_monado" src_builtin="dashboard/monado.svg" tooltip="MONADO_RUNTIME" tooltip_side="right" />
|
||||
<SideButton id="btn_side_home" src_builtin="@/dashboard/wayvr_dashboard_mono.svg" tooltip="HOME_SCREEN" tooltip_side="right" />
|
||||
<SideButton id="btn_side_apps" src_builtin="@/dashboard/apps.svg" tooltip="APPLICATIONS" tooltip_side="right" />
|
||||
<SideButton id="btn_side_games" src_builtin="@/dashboard/games.svg" tooltip="GAMES" tooltip_side="right" />
|
||||
<SideButton id="btn_side_monado" src_builtin="@/dashboard/monado.svg" tooltip="MONADO_RUNTIME" tooltip_side="right" />
|
||||
<rectangle height="2" color="outline" width="~side_sprite_size" />
|
||||
<SideButton id="btn_side_settings" src_builtin="dashboard/settings.svg" tooltip="SETTINGS" tooltip_side="right" />
|
||||
<SideButton id="btn_side_settings" src_builtin="@/dashboard/settings.svg" tooltip="SETTINGS" tooltip_side="right" />
|
||||
</rectangle>
|
||||
</div>
|
||||
<!-- REST -->
|
||||
@@ -69,7 +69,7 @@
|
||||
<!-- Close button -->
|
||||
<Button position="absolute" id="btn_close" color="background_contrast" border_color="background_contrast" round="100%" width="~top_size" height="~top_size" tooltip="CLOSE_WINDOW" tooltip_side="left"
|
||||
hover_color="danger" hover_border_color="danger(rgb-mult-0.5)" >
|
||||
<sprite src_builtin="dashboard/close.svg" width="32" height="32" />
|
||||
<sprite src_builtin="@/dashboard/close.svg" width="32" height="32" />
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -137,10 +137,10 @@
|
||||
<!-- Left bottom side -->
|
||||
<div margin_left="8">
|
||||
<Button id="btn_audio" color="background(transparent)" border_color="background(transparent)" tooltip="AUDIO.VOLUME" tooltip_side="top">
|
||||
<sprite src_builtin="dashboard/volume.svg" width="24" height="24" margin="8" />
|
||||
<sprite src_builtin="@/dashboard/volume.svg" width="24" height="24" margin="8" />
|
||||
</Button>
|
||||
<Button id="btn_recenter" color="background(transparent)" border_color="background(transparent)" tooltip="ACTIONS.RECENTER_PLAYSPACE" tooltip_side="top">
|
||||
<sprite src_builtin="dashboard/recenter.svg" width="24" height="24" margin="8" />
|
||||
<sprite src_builtin="@/dashboard/recenter.svg" width="24" height="24" margin="8" />
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<macro name="dropdown_button"
|
||||
flex_direction="row"
|
||||
border="2"
|
||||
@@ -17,7 +17,7 @@
|
||||
<div padding_top="4" padding_bottom="4">
|
||||
<rectangle width="2" height="100%" color="outline" />
|
||||
</div>
|
||||
<sprite margin_left="-4" width="30" height="30" src_builtin="dashboard/down.svg" />
|
||||
<sprite margin_left="-4" width="30" height="30" src_builtin="@/dashboard/down.svg" />
|
||||
</div>
|
||||
</Button>
|
||||
</template>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<macro name="group_box"
|
||||
flex_direction="column"
|
||||
align_items="baseline"
|
||||
@@ -7,7 +7,13 @@
|
||||
border_color="outline"
|
||||
padding="12"
|
||||
gap="8"
|
||||
round="8" />
|
||||
round="8"/>
|
||||
|
||||
<template name="GroupBox">
|
||||
<rectangle macro="group_box">
|
||||
<CHILDREN/>
|
||||
</rectangle>
|
||||
</template>
|
||||
|
||||
<!-- src_builtin, text, translation -->
|
||||
<template name="GroupBoxTitle">
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<template name="LoadingWithText">
|
||||
<div id="root" width="100%" height="100%" align_items="center" justify_content="center">
|
||||
<div flex_direction="row" gap="8" align_items="center" >
|
||||
<sprite id="sprite_loading" src_builtin="dashboard/loading.svg" width="32" height="32" color="on_background"/>
|
||||
<sprite id="sprite_loading" src_builtin="@/dashboard/loading.svg" width="32" height="32" color="on_background"/>
|
||||
<label translation="LOADING" weight="bold"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<template name="LoadingWithoutText">
|
||||
<div id="root" width="100%" height="100%" align_items="center" justify_content="center">
|
||||
<sprite id="sprite_loading" src_builtin="dashboard/loading.svg" width="32" height="32" color="on_background"/>
|
||||
<sprite id="sprite_loading" src_builtin="@/dashboard/loading.svg" width="32" height="32" color="on_background"/>
|
||||
</div>
|
||||
</template>
|
||||
</layout>
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<macro name="home_button" round="8" hover_color="primary" hover_border_color="on_primary" />
|
||||
|
||||
<template name="MenuButton">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<template name="Separator">
|
||||
<rectangle width="100%" min_height="2" color="outline" />
|
||||
</template>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
|
||||
<!-- tooltip, src, src_ext, name -->
|
||||
<template name="AppEntry">
|
||||
@@ -28,26 +28,26 @@
|
||||
<!--
|
||||
<div gap="4" align_items="center">
|
||||
<Button width="48" height="38">
|
||||
<sprite src_builtin="dashboard/alphabetical.svg" width="24" height="24" />
|
||||
<sprite src_builtin="@/dashboard/alphabetical.svg" width="24" height="24" />
|
||||
</Button>
|
||||
<Button width="48" height="38">
|
||||
<sprite src_builtin="dashboard/category_search.svg" width="24" height="24" />
|
||||
<sprite src_builtin="@/dashboard/category_search.svg" width="24" height="24" />
|
||||
</Button>
|
||||
<sprite src_builtin="dashboard/search.svg" width="24" height="24" />
|
||||
<sprite src_builtin="@/dashboard/search.svg" width="24" height="24" />
|
||||
<rectangle flex_grow="1" height="100%" color="#1d2e51" border_color="#294774" border="2" round="4" align_items="center" padding_left="12">
|
||||
<label text="Search" color="#FFFFFF88" weight="bold" />
|
||||
</rectangle>
|
||||
</div>
|
||||
-->
|
||||
<rectangle macro="group_box">
|
||||
<GroupBox>
|
||||
<div align_items="center" gap="8">
|
||||
<sprite src_builtin="dashboard/heart_plus.svg" color="primary" min_width="24" min_height="24"/>
|
||||
<sprite src_builtin="@/dashboard/heart_plus.svg" color="primary" min_width="24" min_height="24"/>
|
||||
<label translation="PINNED_APPS"/>
|
||||
</div>
|
||||
<div id="pinned_apps_parent" flex_direction="row" flex_wrap="wrap" gap="4">
|
||||
<!-- filled-in at runtime -->
|
||||
</div>
|
||||
</rectangle>
|
||||
</GroupBox>
|
||||
<div
|
||||
id="app_list_parent"
|
||||
flex_direction="row"
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<layout>
|
||||
<include src="../t_separator.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_separator.xml" />
|
||||
|
||||
<template name="TierCell">
|
||||
<div gap="8" align_items="center">
|
||||
<sprite width="28" height="28" src_builtin="dashboard/medal.svg" color="${color}"/>
|
||||
<sprite width="28" height="28" src_builtin="@/dashboard/medal.svg" color="${color}"/>
|
||||
<label text="${text}" weight="bold" size="18" color="${color}" shadow="shadow"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template name="SupporterCell">
|
||||
<rectangle padding="8" color="background(transparent)" round="8" border="2" border_color="outline" gap="8" align_items="center" flex_direction="row" >
|
||||
<sprite width="24" height="24" src_builtin="dashboard/person.svg"/>
|
||||
<sprite width="24" height="24" src_builtin="@/dashboard/person.svg"/>
|
||||
<label text="${username}" weight="bold"/>
|
||||
</rectangle>
|
||||
</template>
|
||||
@@ -32,14 +32,14 @@
|
||||
<elements>
|
||||
<div flex_direction="row" width="100%" min_height="100%" gap="16">
|
||||
<div macro="half">
|
||||
<sprite color="#FFAAAA" src_builtin="dashboard/donate.svg" min_width="48" min_height="48"/>
|
||||
<sprite color="#FFAAAA" src_builtin="@/dashboard/donate.svg" min_width="48" min_height="48"/>
|
||||
<div gap="16" align_items="center" width="100%">
|
||||
<label align="justified" wrap="1" size="15" translation="DONATE.DESCRIPTION" color="on_background"/>
|
||||
</div>
|
||||
|
||||
<div flex_direction="column" gap="8" align_items="center">
|
||||
<Button id="btn_donate" tooltip="DONATE.BUTTON_TOOLTIP" align_self="baseline">
|
||||
<image src_builtin="dashboard/opencollective_logo.svg" width="200" height="32" margin="8" margin_left="16" margin_right="16"/>
|
||||
<image src_builtin="@/dashboard/opencollective_logo.svg" width="200" height="32" margin="8" margin_left="16" margin_right="16"/>
|
||||
</Button>
|
||||
<label text="opencollective.com/wayvr-org"/>
|
||||
</div>
|
||||
@@ -47,8 +47,8 @@
|
||||
<label weight="bold" size="20" translation="DONATE.THANK_YOU_WAYVR" color="on_background"/>
|
||||
|
||||
<div gap="32">
|
||||
<Avatar icon="dashboard/avatars/galister.png" nickname="galister"/>
|
||||
<Avatar icon="dashboard/avatars/oo8dev.png" nickname="oo8dev"/>
|
||||
<Avatar icon="@/dashboard/avatars/galister.png" nickname="galister"/>
|
||||
<Avatar icon="@/dashboard/avatars/oo8dev.png" nickname="oo8dev"/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- vertical separator -->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div id="running_games_list_parent" align_self="center" />
|
||||
<div id="game_list_parent" align_items="center" flex_direction="column" gap="8" />
|
||||
</elements>
|
||||
</layout>
|
||||
</layout>
|
||||
@@ -1,5 +1,5 @@
|
||||
<layout>
|
||||
<include src="../t_menu_button.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_menu_button.xml" />
|
||||
|
||||
<elements>
|
||||
<div
|
||||
@@ -9,7 +9,7 @@
|
||||
flex_grow="1"
|
||||
gap="8"
|
||||
>
|
||||
<image src_builtin="dashboard/splash.png" width="300" height="89" />
|
||||
<image src_builtin="@/dashboard/splash.png" width="300" height="89" />
|
||||
|
||||
<!-- supporters -->
|
||||
<Button
|
||||
@@ -26,23 +26,23 @@
|
||||
|
||||
<!-- main button list -->
|
||||
<div flex_direction="row" gap="8" margin_top="32">
|
||||
<MenuButton id="btn_apps" icon="dashboard/apps.svg" translation="APPLICATIONS" />
|
||||
<MenuButton id="btn_games" icon="dashboard/games.svg" translation="GAMES" />
|
||||
<MenuButton id="btn_monado" icon="dashboard/monado.svg" text="Monado" />
|
||||
<MenuButton id="btn_settings" icon="dashboard/settings.svg" translation="SETTINGS" />
|
||||
<MenuButton id="btn_apps" icon="@/dashboard/apps.svg" translation="APPLICATIONS" />
|
||||
<MenuButton id="btn_games" icon="@/dashboard/games.svg" translation="GAMES" />
|
||||
<MenuButton id="btn_monado" icon="@/dashboard/monado.svg" text="Monado" />
|
||||
<MenuButton id="btn_settings" icon="@/dashboard/settings.svg" translation="SETTINGS" />
|
||||
</div>
|
||||
|
||||
<div gap="8">
|
||||
<Button id="btn_welcome_screen" macro="home_button" tooltip="APP_SETTINGS.SHOW_WELCOME_SCREEN">
|
||||
<sprite src_builtin="dashboard/welcome.svg" width="32" height="32" margin="16" />
|
||||
<sprite src_builtin="@/dashboard/welcome.svg" width="32" height="32" margin="16" />
|
||||
</Button>
|
||||
|
||||
<Button id="btn_website" macro="home_button" tooltip_str="wayvr.org">
|
||||
<sprite src_builtin="dashboard/globe.svg" width="32" height="32" margin="16" />
|
||||
<sprite src_builtin="@/dashboard/globe.svg" width="32" height="32" margin="16" />
|
||||
</Button>
|
||||
|
||||
<Button id="btn_donate" macro="home_button" tooltip="DONATE.SUPPORT_US">
|
||||
<sprite src_builtin="dashboard/opencollective.svg" width="32" height="32" margin="16" />
|
||||
<sprite src_builtin="@/dashboard/opencollective.svg" width="32" height="32" margin="16" />
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div gap="4">
|
||||
<Tabs id="tabs">
|
||||
<Tab name="process_list" translation="PROCESS_LIST" sprite_src_builtin="dashboard/cpu.svg" />
|
||||
<Tab name="general_settings" translation="GENERAL_SETTINGS" sprite_src_builtin="dashboard/settings.svg" />
|
||||
<Tab name="debug_timings" translation="DEBUG_INFO" sprite_src_builtin="dashboard/not_a_bug.svg" />
|
||||
<Tab name="process_list" translation="PROCESS_LIST" sprite_src_builtin="@/dashboard/cpu.svg" />
|
||||
<Tab name="general_settings" translation="GENERAL_SETTINGS" sprite_src_builtin="@/dashboard/settings.svg" />
|
||||
<Tab name="debug_timings" translation="DEBUG_INFO" sprite_src_builtin="@/dashboard/not_a_bug.svg" />
|
||||
</Tabs>
|
||||
<div gap="4" id="content" width="100%">
|
||||
<!-- filled-in at runtime -->
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
|
||||
<!-- name, limit_min, limit_max -->
|
||||
<template name="DebugGraph">
|
||||
@@ -15,13 +15,13 @@
|
||||
</template>
|
||||
|
||||
<elements>
|
||||
<rectangle macro="group_box">
|
||||
<GroupBoxTitle src_builtin="dashboard/apps.svg" text="Sessions" />
|
||||
<GroupBox>
|
||||
<GroupBoxTitle src_builtin="@/dashboard/apps.svg" text="Sessions" />
|
||||
<div id="session_list_parent" flex_wrap="wrap" flex_direction="row" gap="8" />
|
||||
<GroupBoxTitle src_builtin="dashboard/not_a_bug.svg" text="Debug timings" />
|
||||
<GroupBoxTitle src_builtin="@/dashboard/not_a_bug.svg" text="Debug timings" />
|
||||
<div id="timings_parent" flex_wrap="wrap" flex_direction="row" gap="8">
|
||||
<label text="Please select which session you want to monitor" />
|
||||
</div>
|
||||
</rectangle>
|
||||
</GroupBox>
|
||||
</elements>
|
||||
</layout>
|
||||
</layout>
|
||||
@@ -1,56 +1,57 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
|
||||
<macro name="slider" width="100%" height="24"/>
|
||||
<template name="CKRow">
|
||||
<div gap="8" width="~s_width">
|
||||
<CHILDREN/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<theme>
|
||||
<!-- title, id -->
|
||||
<template name="CKSlider">
|
||||
<div gap="8" flex_direction="column" width="100%">
|
||||
<label text="${title}"/>
|
||||
<Slider id="${id}" min_value="0" max_value="100" width="100%" height="24"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- title, id -->
|
||||
<template name="CKColSel">
|
||||
<div gap="8" flex_direction="column" width="100%">
|
||||
<label text="${title}"/>
|
||||
<ColorSelector id="cs_keying" height="24" width="100%"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<vars>
|
||||
<var key="s_width" value="500"/>
|
||||
</theme>
|
||||
</vars>
|
||||
|
||||
<elements>
|
||||
<div flex_direction="column" gap="8">
|
||||
<rectangle macro="group_box">
|
||||
<GroupBoxTitle src_builtin="dashboard/settings.svg" translation="GENERAL_SETTINGS" />
|
||||
<!-- headset brightness -->
|
||||
<GroupBox>
|
||||
<GroupBoxTitle src_builtin="@/dashboard/settings.svg" translation="GENERAL_SETTINGS" />
|
||||
|
||||
<label translation="DISPLAY_BRIGHTNESS" />
|
||||
<Slider id="slider_brightness" width="300" height="24" min_value="0" max_value="140" />
|
||||
</rectangle>
|
||||
<rectangle macro="group_box">
|
||||
<GroupBoxTitle src_builtin="dashboard/settings.svg" translation="APP_SETTINGS.COLOR_KEYING" />
|
||||
<div gap="8" width="~s_width">
|
||||
<div gap="8" flex_direction="column" width="100%">
|
||||
<label text="Color"/>
|
||||
<ColorSelector id="cs_keying" height="24" width="100%"/>
|
||||
</div>
|
||||
</GroupBox>
|
||||
|
||||
<div gap="8" flex_direction="column" width="100%">
|
||||
<label text="Despill"/>
|
||||
<Slider id="slider_keying_despill" min_value="0" max_value="100" macro="slider"/>
|
||||
</div>
|
||||
|
||||
<div gap="8" flex_direction="column" width="100%">
|
||||
<label text="Curve (0 = disabled)"/>
|
||||
<Slider id="slider_keying_curve" min_value="0" max_value="100" macro="slider"/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- color keying -->
|
||||
<GroupBox>
|
||||
<GroupBoxTitle src_builtin="@/dashboard/settings.svg" translation="APP_SETTINGS.COLOR_KEYING" />
|
||||
<CKRow>
|
||||
<CKColSel title="Color" id="cs_keying"/>
|
||||
<CKSlider title="Despill" id="slider_keying_despill"/>
|
||||
<CKSlider title="Curve (0 = disabled)" id="slider_keying_curve"/>
|
||||
</CKRow>
|
||||
|
||||
<div gap="8" width="~s_width">
|
||||
<div gap="8" flex_direction="column" width="100%">
|
||||
<label text="Hue range"/>
|
||||
<Slider id="slider_keying_hue_range" min_value="0" max_value="100" macro="slider"/>
|
||||
</div>
|
||||
|
||||
<div gap="8" flex_direction="column" width="100%">
|
||||
<label text="Saturation range"/>
|
||||
<Slider id="slider_keying_saturation_range" min_value="0" max_value="100" macro="slider"/>
|
||||
</div>
|
||||
|
||||
<div gap="8" flex_direction="column" width="100%">
|
||||
<label text="Value range"/>
|
||||
<Slider id="slider_keying_value_range" min_value="0" max_value="100" macro="slider"/>
|
||||
</div>
|
||||
</div>
|
||||
</rectangle>
|
||||
<CKRow>
|
||||
<CKSlider title="Hue range" id="slider_keying_hue_range"/>
|
||||
<CKSlider title="Saturation range" id="slider_keying_saturation_range"/>
|
||||
<CKSlider title="Value range" id="slider_keying_value_range"/>
|
||||
</CKRow>
|
||||
</GroupBox>
|
||||
</div>
|
||||
</elements>
|
||||
</layout>
|
||||
@@ -1,5 +1,5 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
|
||||
<!-- key: str, value: str -->
|
||||
<template name="BoolFlag">
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
<!-- name, checked, flag_* -->
|
||||
<template name="Cell">
|
||||
<rectangle macro="group_box">
|
||||
<GroupBox>
|
||||
<CheckBox id="checkbox" text="${name}" checked="${checked}" />
|
||||
<div flex_direction="row" gap="8" flex_wrap="wrap">
|
||||
<BoolFlag key="Active:" value="${flag_active}" />
|
||||
@@ -21,15 +21,15 @@
|
||||
<BoolFlag key="Primary:" value="${flag_primary}" />
|
||||
<BoolFlag key="Visible:" value="${flag_visible}" />
|
||||
</div>
|
||||
</rectangle>
|
||||
</GroupBox>
|
||||
</template>
|
||||
|
||||
<elements>
|
||||
<rectangle macro="group_box">
|
||||
<GroupBoxTitle src_builtin="dashboard/cpu.svg" translation="PROCESS_LIST" />
|
||||
<GroupBox>
|
||||
<GroupBoxTitle src_builtin="@/dashboard/cpu.svg" translation="PROCESS_LIST" />
|
||||
<div id="list_parent" flex_direction="column" gap="8">
|
||||
<!-- filled at runtime -->
|
||||
</div>
|
||||
</rectangle>
|
||||
</GroupBox>
|
||||
</elements>
|
||||
</layout>
|
||||
</layout>
|
||||
@@ -1,6 +1,6 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
<include src="../t_dropdown_button.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
<include src="@/gui/t_dropdown_button.xml" />
|
||||
|
||||
<template name="SettingsGroupBox">
|
||||
<rectangle macro="group_box" id="${id}" flex_grow="1">
|
||||
@@ -31,6 +31,13 @@
|
||||
<RadioBox text="${text}" translation="${translation}" value="${value}" tooltip="${tooltip}" />
|
||||
</template>
|
||||
|
||||
<template name="StatRow">
|
||||
<div flex_direction="row" justify_content="space_between" align_items="center" gap="12" width="100%">
|
||||
<label weight="bold" translation="${translation}" />
|
||||
<label id="${id}" weight="bold" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template name="ButtonText">
|
||||
<Button id="${id}" height="32" tooltip="${translation}_HELP" padding="4" gap="8">
|
||||
<sprite src_builtin="${icon}" height="24" width="24" />
|
||||
@@ -49,7 +56,7 @@
|
||||
<div id="${id}_root" flex_direction="row">
|
||||
<Button id="${id}" color="#AA3333" height="24" padding="4" margin_top="-2" margin_bottom="-2"
|
||||
hover_color="danger" hover_border_color="danger(rgb-mult-0.5)" >
|
||||
<sprite src_builtin="dashboard/close.svg" height="20" width="20" />
|
||||
<sprite src_builtin="@/dashboard/close.svg" height="20" width="20" />
|
||||
</Button>
|
||||
<div padding_left="8">
|
||||
<label align="left" text="${text}" weight="bold" overflow="hidden" />
|
||||
@@ -62,14 +69,15 @@
|
||||
<elements>
|
||||
<div gap="4">
|
||||
<Tabs id="tabs">
|
||||
<Tab macro="tab_style" name="look_and_feel" translation="APP_SETTINGS.LOOK_AND_FEEL" sprite_src_builtin="dashboard/palette.svg" />
|
||||
<Tab macro="tab_style" name="skybox" translation="APP_SETTINGS.SKYBOX" sprite_src_builtin="dashboard/globe.svg" />
|
||||
<Tab macro="tab_style" name="features" translation="APP_SETTINGS.FEATURES" sprite_src_builtin="dashboard/options.svg" />
|
||||
<Tab macro="tab_style" name="controls" translation="APP_SETTINGS.CONTROLS" sprite_src_builtin="dashboard/controller.svg" />
|
||||
<Tab macro="tab_style" name="space_drag" translation="APP_SETTINGS.SPACE_DRAG" sprite_src_builtin="dashboard/drag.svg" />
|
||||
<Tab macro="tab_style" name="misc" translation="APP_SETTINGS.MISC" sprite_src_builtin="dashboard/blocks.svg" />
|
||||
<Tab macro="tab_style" name="autostart_apps" translation="APP_SETTINGS.AUTOSTART_APPS" sprite_src_builtin="dashboard/apps.svg" />
|
||||
<Tab macro="tab_style" name="troubleshooting" translation="APP_SETTINGS.TROUBLESHOOTING" sprite_src_builtin="dashboard/cpu.svg" />
|
||||
<Tab macro="tab_style" name="look_and_feel" translation="APP_SETTINGS.LOOK_AND_FEEL" sprite_src_builtin="@/dashboard/palette.svg" />
|
||||
<Tab macro="tab_style" name="skybox" translation="APP_SETTINGS.SKYBOX" sprite_src_builtin="@/dashboard/globe.svg" />
|
||||
<Tab macro="tab_style" name="features" translation="APP_SETTINGS.FEATURES" sprite_src_builtin="@/dashboard/options.svg" />
|
||||
<Tab macro="tab_style" name="controls" translation="APP_SETTINGS.CONTROLS" sprite_src_builtin="@/dashboard/controller.svg" />
|
||||
<Tab macro="tab_style" name="space_drag" translation="APP_SETTINGS.SPACE_DRAG" sprite_src_builtin="@/dashboard/drag.svg" />
|
||||
<Tab macro="tab_style" name="misc" translation="APP_SETTINGS.MISC" sprite_src_builtin="@/dashboard/blocks.svg" />
|
||||
<Tab macro="tab_style" name="autostart_apps" translation="APP_SETTINGS.AUTOSTART_APPS" sprite_src_builtin="@/dashboard/apps.svg" />
|
||||
<Tab macro="tab_style" name="statistics" translation="APP_SETTINGS.STATISTICS" sprite_src_builtin="@/dashboard/barchart.svg" />
|
||||
<Tab macro="tab_style" name="troubleshooting" translation="APP_SETTINGS.TROUBLESHOOTING" sprite_src_builtin="@/dashboard/cpu.svg" />
|
||||
</Tabs>
|
||||
<div flex_wrap="wrap" justify_content="stretch" gap="4" id="settings_root" width="100%">
|
||||
<!-- filled-in at runtime -->
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
|
||||
<elements>
|
||||
<div id="common_options_parent" flex_direction="column" gap="8"/>
|
||||
<rectangle macro="group_box">
|
||||
<GroupBoxTitle src_builtin="dashboard/gravity.svg" translation="APP_SETTINGS.SPACE_GRAVITY_GRAVITY" />
|
||||
<GroupBox>
|
||||
<GroupBoxTitle src_builtin="@/dashboard/gravity.svg" translation="APP_SETTINGS.SPACE_GRAVITY_GRAVITY" />
|
||||
<div id="gravity_enabled_parent"/>
|
||||
<div id="space_gravity_parent" flex_direction="column" gap="8">
|
||||
<!-- filled-in at runtime -->
|
||||
</div>
|
||||
</rectangle>
|
||||
</GroupBox>
|
||||
</elements>
|
||||
</layout>
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<template name="Pip">
|
||||
<rectangle id="pip" width="8" height="8" round="100%" color="${COLOR}"/>
|
||||
</template>
|
||||
@@ -12,11 +12,11 @@
|
||||
<!-- Page buttons -->
|
||||
<div position="absolute" align_self="end" justify_self="end" width="100%" flex_direction="column" align_items="center" margin_bottom="8">
|
||||
<div flex_direction="row" gap="8" align_items="center">
|
||||
<Button id="btn_prev" width="32" height="32" round="100%" sprite_src_builtin="dashboard/arrow_left.svg" />
|
||||
<Button id="btn_prev" width="32" height="32" round="100%" sprite_src_builtin="@/dashboard/arrow_left.svg" />
|
||||
<div id="pips" gap="4" align_items="center">
|
||||
<!-- filled-in at runtime -->
|
||||
</div>
|
||||
<Button id="btn_next" width="32" height="32" round="100%" sprite_src_builtin="dashboard/arrow_right.svg" />
|
||||
<Button id="btn_next" width="32" height="32" round="100%" sprite_src_builtin="@/dashboard/arrow_right.svg" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<!-- icon, title -->
|
||||
<template name="PageTitle">
|
||||
<div position="absolute" align_self="start" justify_self="center" width="100%" margin_top="16" gap="8" align_items="center" justify_content="center">
|
||||
@@ -19,4 +19,13 @@
|
||||
<macro name="video_overlay_component" looping="1" width="100%" height="auto" max_height="100%" aspect_ratio="1.777777" position="relative"/>
|
||||
|
||||
<macro name="video_overlay_content" new_pass="1" position="absolute" width="100%" height="100%" padding_bottom="32"/>
|
||||
|
||||
<!-- src_builtin, aspect_ratio -->
|
||||
<template name="WelcomeVideo">
|
||||
<Video macro="video_overlay_component" src_builtin="${src_builtin}" aspect_ratio="${aspect_ratio}">
|
||||
<div macro="video_overlay_content">
|
||||
<CHILDREN/>
|
||||
</div>
|
||||
</Video>
|
||||
</template>
|
||||
</layout>
|
||||
@@ -1,6 +1,6 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<image src_builtin="dashboard/splash.png" min_width="336" min_height="100" />
|
||||
<image src_builtin="@/dashboard/splash.png" min_width="336" min_height="100" />
|
||||
|
||||
<rectangle color="#FFFFFF11" width="100%" height="2"/>
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
<label size="20" translation="WELCOME.GUIDE_INTRO"/>
|
||||
|
||||
<div gap="4" align_items="center" margin_top="8">
|
||||
<sprite min_width="16" min_height="16" src_builtin="dashboard/info.svg" color="on_background"/>
|
||||
<sprite min_width="16" min_height="16" src_builtin="@/dashboard/info.svg" color="on_background"/>
|
||||
<label wrap="1" size="14" translation="WELCOME.REPOSITION_THIS_WINDOW_BY_GRABBING"/>
|
||||
</div>
|
||||
|
||||
<div gap="4" align_items="center">
|
||||
<sprite min_width="16" min_height="16" src_builtin="dashboard/info.svg" color="on_background"/>
|
||||
<sprite min_width="16" min_height="16" src_builtin="@/dashboard/info.svg" color="on_background"/>
|
||||
<label wrap="1" size="14" translation="WELCOME.LAST_PAGE_INFO"/>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<include src_builtin="welcome_common.xml"/>
|
||||
|
||||
<elements>
|
||||
<rectangle color="#103142" width="100%" height="100%" position="absolute"/>
|
||||
<Video macro="video_overlay_component" src_builtin="video/onboarding_watch.ivf" aspect_ratio="1.0">
|
||||
<div macro="video_overlay_content">
|
||||
<PageTitle icon="dashboard/watch.svg" translation="WELCOME.WATCH"/>
|
||||
<div position="relative" align_self="end" padding="16">
|
||||
<TextDesc translation="WELCOME.LOOK_AT_LEFT_WRIST"/>
|
||||
</div>
|
||||
|
||||
<WelcomeVideo src_builtin="@/video/onboarding_watch.ivf" aspect_ratio="1.0">
|
||||
<PageTitle icon="@/dashboard/watch.svg" translation="WELCOME.WATCH"/>
|
||||
<div position="relative" align_self="end" padding="16">
|
||||
<TextDesc translation="WELCOME.LOOK_AT_LEFT_WRIST"/>
|
||||
</div>
|
||||
</Video>
|
||||
</WelcomeVideo>
|
||||
</elements>
|
||||
</layout>
|
||||
@@ -1,14 +1,12 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<include src_builtin="welcome_common.xml"/>
|
||||
|
||||
<elements>
|
||||
<Video macro="video_overlay_component" src_builtin="video/onboarding_double_press.ivf">
|
||||
<div macro="video_overlay_content">
|
||||
<PageTitle icon="dashboard/panorama.svg" translation="WELCOME.WORKING_SET"/>
|
||||
<div position="relative" align_self="end" padding="16">
|
||||
<TextDesc translation="WELCOME.DOUBLE_PRESS_TO_TOGGLE"/>
|
||||
</div>
|
||||
<WelcomeVideo src_builtin="@/video/onboarding_double_press.ivf">
|
||||
<PageTitle icon="@/dashboard/panorama.svg" translation="WELCOME.WORKING_SET"/>
|
||||
<div position="relative" align_self="end" padding="16">
|
||||
<TextDesc translation="WELCOME.DOUBLE_PRESS_TO_TOGGLE"/>
|
||||
</div>
|
||||
</Video>
|
||||
</WelcomeVideo>
|
||||
</elements>
|
||||
</layout>
|
||||
@@ -1,19 +1,17 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<include src_builtin="welcome_common.xml"/>
|
||||
|
||||
<elements>
|
||||
<Video macro="video_overlay_component" src_builtin="video/onboarding_laser_colors.ivf">
|
||||
<div macro="video_overlay_content">
|
||||
<PageTitle icon="dashboard/click.svg" translation="WELCOME.LASER_COLORS"/>
|
||||
<div position="relative" flex_direction="row" gap="16" margin="16" align_self="end" justify_self="end" align_items="center">
|
||||
<rectangle flex_direction="column" gap="8" padding="8" round="4" border_color="outline" border="2" >
|
||||
<label size="12" weight="bold" color="#00FFFF" translation="WELCOME.REGULAR_MODE_BLUE_LASER"/>
|
||||
<label size="12" weight="bold" color="#FFAA00" translation="WELCOME.RIGHT_CLICK_MODE_ORANGE_LASER"/>
|
||||
<label size="12" weight="bold" color="#FF88FF" translation="WELCOME.MIDDLE_CLICK_MODE_PURPLE_LASER"/>
|
||||
</rectangle>
|
||||
<label wrap="1" size="18" width="450" weight="bold" color="#ffffff" shadow="#000000" translation="WELCOME.LASER_FUNCTIONALITY"/>
|
||||
</div>
|
||||
<WelcomeVideo src_builtin="@/video/onboarding_laser_colors.ivf">
|
||||
<PageTitle icon="@/dashboard/click.svg" translation="WELCOME.LASER_COLORS"/>
|
||||
<div position="relative" flex_direction="row" gap="16" margin="16" align_self="end" justify_self="end" align_items="center">
|
||||
<rectangle flex_direction="column" gap="8" padding="8" round="4" border_color="outline" border="2" >
|
||||
<label size="12" weight="bold" color="#00FFFF" translation="WELCOME.REGULAR_MODE_BLUE_LASER"/>
|
||||
<label size="12" weight="bold" color="#FFAA00" translation="WELCOME.RIGHT_CLICK_MODE_ORANGE_LASER"/>
|
||||
<label size="12" weight="bold" color="#FF88FF" translation="WELCOME.MIDDLE_CLICK_MODE_PURPLE_LASER"/>
|
||||
</rectangle>
|
||||
<label wrap="1" size="18" width="450" weight="bold" color="#ffffff" shadow="#000000" translation="WELCOME.LASER_FUNCTIONALITY"/>
|
||||
</div>
|
||||
</Video>
|
||||
</WelcomeVideo>
|
||||
</elements>
|
||||
</layout>
|
||||
@@ -1,20 +1,18 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<include src_builtin="welcome_common.xml"/>
|
||||
|
||||
<elements>
|
||||
<rectangle color="#0A2939" width="100%" height="100%" position="absolute"/>
|
||||
<Video macro="video_overlay_component" src_builtin="video/onboarding_center_marker.ivf" aspect_ratio="1.33333">
|
||||
<div macro="video_overlay_content">
|
||||
<PageTitle icon="dashboard/panorama.svg" translation="WELCOME.MOVING_YOUR_SET"/>
|
||||
<div position="relative" align_self="end" padding="16" flex_direction="column" gap="4">
|
||||
<label shadow="#000000" size="14" weight="bold" wrap="1" color="#aaffcc" translation="WELCOME.GRAB_ONE_HAND"/>
|
||||
<label shadow="#000000" size="14" weight="bold" wrap="1" color="#ccaaff" translation="WELCOME.GRAB_BOTH_HANDS"/>
|
||||
<div align_items="center" gap="8">
|
||||
<sprite src_builtin="dashboard/info.svg" min_width="48" min_height="48" max_width="48" max_height="48" color="#ffff00"/>
|
||||
<label shadow="#000000" size="16" weight="bold" wrap="1" color="#ffff00" translation="WELCOME.CENTER_MARKER"/>
|
||||
</div>
|
||||
<WelcomeVideo src_builtin="@/video/onboarding_center_marker.ivf" aspect_ratio="1.33333">
|
||||
<PageTitle icon="@/dashboard/panorama.svg" translation="WELCOME.MOVING_YOUR_SET"/>
|
||||
<div position="relative" align_self="end" padding="16" flex_direction="column" gap="4">
|
||||
<label shadow="#000000" size="14" weight="bold" wrap="1" color="#aaffcc" translation="WELCOME.GRAB_ONE_HAND"/>
|
||||
<label shadow="#000000" size="14" weight="bold" wrap="1" color="#ccaaff" translation="WELCOME.GRAB_BOTH_HANDS"/>
|
||||
<div align_items="center" gap="8">
|
||||
<sprite src_builtin="@/dashboard/info.svg" min_width="48" min_height="48" max_width="48" max_height="48" color="#ffff00"/>
|
||||
<label shadow="#000000" size="16" weight="bold" wrap="1" color="#ffff00" translation="WELCOME.CENTER_MARKER"/>
|
||||
</div>
|
||||
</div>
|
||||
</Video>
|
||||
</WelcomeVideo>
|
||||
</elements>
|
||||
</layout>
|
||||
@@ -1,9 +1,9 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<include src_builtin="welcome_common.xml"/>
|
||||
|
||||
<elements>
|
||||
<div flex_direction="row" align_items="center">
|
||||
<image src_builtin="dashboard/check_3d.png" width="256" height="256"/>
|
||||
<image src_builtin="@/dashboard/check_3d.png" width="256" height="256"/>
|
||||
<div flex_direction="column" gap="16" max_width="480">
|
||||
<TextDescBig translation="WELCOME.ALL_SET" color="tertiary"/>
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
<label size="16" wrap="1" translation="WELCOME.BASICS"/>
|
||||
<label size="16" wrap="1" translation="WELCOME.FEATURES_DOCUMENTATION"/>
|
||||
<Button id="btn_wayvr_org" align_self="baseline" min_height="32">
|
||||
<sprite src_builtin="dashboard/globe.svg" width="24" height="24" margin="8"/>
|
||||
<sprite src_builtin="@/dashboard/globe.svg" width="24" height="24" margin="8"/>
|
||||
<label size="18" weight="bold" text="wayvr.org" margin_right="8" />
|
||||
</Button>
|
||||
|
||||
<rectangle color="#FFFFFF33" width="100%" min_height="2"/>
|
||||
|
||||
<Button id="btn_home_screen" min_height="48" >
|
||||
<sprite src_builtin="dashboard/check.svg" width="32" height="32" margin="8"/>
|
||||
<sprite src_builtin="@/dashboard/check.svg" width="32" height="32" margin="8"/>
|
||||
<label color="on_background" size="20" weight="bold" translation="WELCOME.FINISH_TUTORIAL" margin_right="8" />
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<template name="Subtext">
|
||||
<div flex_direction="row" gap="8" max_width="100%">
|
||||
<label weight="bold" text="${title}" wrap="1" />
|
||||
@@ -10,8 +10,8 @@
|
||||
<sprite src_ext="${path}" width="96" height="96" />
|
||||
</template>
|
||||
|
||||
<include src="../t_separator.xml" />
|
||||
<include src="../t_group_box.xml" />
|
||||
<include src="@/gui/t_separator.xml" />
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
|
||||
<elements>
|
||||
<div flex_direction="row" gap="16" flex_grow="1">
|
||||
@@ -45,15 +45,15 @@
|
||||
<CheckBox id="cb_autostart" translation="APP_LAUNCHER.AUTOSTART" align_self="baseline"/>
|
||||
<div flex_direction="row" align_items="end" justify_content="center" gap="8" margin_top="8">
|
||||
<Button id="btn_unpin" color="danger" padding_left="8" padding_right="8" round="8" min_height="40">
|
||||
<sprite src_builtin="dashboard/heart_minus.svg" width="32" height="32" />
|
||||
<sprite src_builtin="@/dashboard/heart_minus.svg" width="32" height="32" />
|
||||
<label translation="REMOVE_FROM_FAVOURITES" weight="bold" size="17" />
|
||||
</Button>
|
||||
<Button id="btn_pin" color="secondary" padding_left="8" padding_right="8" round="8" min_height="40" tooltip="ADD_TO_FAVOURITES_HINT">
|
||||
<sprite src_builtin="dashboard/heart_plus.svg" width="32" height="32" />
|
||||
<sprite src_builtin="@/dashboard/heart_plus.svg" width="32" height="32" />
|
||||
<label translation="ADD_TO_FAVOURITES" weight="bold" size="17" />
|
||||
</Button>
|
||||
<Button id="btn_launch" color="primary" padding_left="8" padding_right="8" round="8" min_width="200" min_height="40">
|
||||
<sprite src_builtin="dashboard/play.svg" width="32" height="32" />
|
||||
<sprite src_builtin="@/dashboard/play.svg" width="32" height="32" />
|
||||
<label translation="APP_LAUNCHER.LAUNCH" weight="bold" size="17" />
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<layout>
|
||||
<include src_builtin="../t_group_box.xml" />
|
||||
<layout version="2">
|
||||
<include src_builtin="@/gui/t_group_box.xml" />
|
||||
|
||||
<!-- device_name, device_icon -->
|
||||
<template name="DeviceSlider">
|
||||
<rectangle macro="group_box">
|
||||
<GroupBox>
|
||||
<div width="100%" align_items="center" justify_content="center" gap="8">
|
||||
<sprite src_builtin="${device_icon}" width="16" height="16" color="on_background" />
|
||||
<label text="${device_name}" margin_right="8" size="12" weight="bold" color="on_background" />
|
||||
@@ -13,23 +13,23 @@
|
||||
<Button sprite_src_builtin="${volume_icon}" id="btn_mute" width="32" />
|
||||
<Slider id="slider" flex_grow="1" height="16" min_value="0" max_value="150" margin_left="8" />
|
||||
</div>
|
||||
</rectangle>
|
||||
</GroupBox>
|
||||
</template>
|
||||
|
||||
<!-- card_name, profile_name -->
|
||||
<template name="Card">
|
||||
<rectangle macro="group_box">
|
||||
<GroupBox>
|
||||
<div width="100%" align_items="center" justify_content="center">
|
||||
<label text="${card_name}" size="12" weight="bold" color="on_background" />
|
||||
</div>
|
||||
<Button id="btn_card" text="${profile_name}" width="100%" height="32" />
|
||||
</rectangle>
|
||||
</GroupBox>
|
||||
</template>
|
||||
|
||||
<template name="SelectAudioProfileText">
|
||||
<div align_items="center" gap="8">
|
||||
<Button width="48" height="32" id="btn_back">
|
||||
<sprite src_builtin="dashboard/back.svg" width="24" height="24" color="on_background" />
|
||||
<sprite src_builtin="@/dashboard/back.svg" width="24" height="24" color="on_background" />
|
||||
</Button>
|
||||
<label translation="AUDIO.SELECT_AUDIO_CARD_PROFILE" size="14" weight="bold" />
|
||||
</div>
|
||||
@@ -55,16 +55,16 @@
|
||||
<div flex_direction="row" gap="4">
|
||||
<Button
|
||||
id="btn_auto"
|
||||
sprite_src_builtin="dashboard/magic_wand.svg"
|
||||
sprite_src_builtin="@/dashboard/magic_wand.svg"
|
||||
min_width="32"
|
||||
tooltip="AUDIO.AUTO_SWITCH_TO_VR_AUDIO"
|
||||
color="primary"
|
||||
sprite_color="on_primary"
|
||||
tooltip_side="right" />
|
||||
|
||||
<BottomButton id="btn_sinks" src_builtin="dashboard/volume.svg" translation="AUDIO.SPEAKERS" />
|
||||
<BottomButton id="btn_sources" src_builtin="dashboard/microphone.svg" translation="AUDIO.MICROPHONES" />
|
||||
<BottomButton id="btn_cards" src_builtin="dashboard/cpu.svg" translation="AUDIO.CARDS" />
|
||||
<BottomButton id="btn_sinks" src_builtin="@/dashboard/volume.svg" translation="AUDIO.SPEAKERS" />
|
||||
<BottomButton id="btn_sources" src_builtin="@/dashboard/microphone.svg" translation="AUDIO.MICROPHONES" />
|
||||
<BottomButton id="btn_cards" src_builtin="@/dashboard/cpu.svg" translation="AUDIO.CARDS" />
|
||||
</div>
|
||||
</div>
|
||||
</elements>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
|
||||
<!-- used at runtime [!!!] -->
|
||||
<include src="../t_dropdown_button.xml" />
|
||||
<include src="@/gui/t_dropdown_button.xml" />
|
||||
|
||||
<!-- id, min, max, step, value, value2, tooltip -->
|
||||
<template name="ThresholdSlider">
|
||||
@@ -14,7 +14,7 @@
|
||||
<rectangle macro="group_box" id="${id}">
|
||||
<!-- top row -->
|
||||
<div flex_direction="row" gap="8" align_items="center">
|
||||
<sprite src_builtin="dashboard/controller.svg" width="24" height="24" color="on_background"/>
|
||||
<sprite src_builtin="@/dashboard/controller.svg" width="24" height="24" color="on_background"/>
|
||||
<label translation="${translation}" color="primary" weight="bold" size="14" />
|
||||
</div>
|
||||
<!-- filled-in at runtime -->
|
||||
@@ -27,8 +27,8 @@
|
||||
<div id="list_parent" flex_direction="column" gap="6" width="100%"></div>
|
||||
</div>
|
||||
<rectangle color="background_contrast" flex_direction="row" gap="8" justify_content="end" padding="8">
|
||||
<Button id="btn_cancel" sprite_src_builtin="dashboard/cancel.svg" min_width="100" height="32" translation="APP_SETTINGS.CANCEL" />
|
||||
<Button id="btn_save" sprite_src_builtin="dashboard/check.svg" min_width="100" height="32" translation="APP_SETTINGS.SAVE" />
|
||||
<Button id="btn_cancel" sprite_src_builtin="@/dashboard/cancel.svg" min_width="100" height="32" translation="APP_SETTINGS.CANCEL" />
|
||||
<Button id="btn_save" sprite_src_builtin="@/dashboard/check.svg" min_width="100" height="32" translation="APP_SETTINGS.SAVE" />
|
||||
</rectangle>
|
||||
</div>
|
||||
</elements>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<template name="ColorPaletteButton">
|
||||
<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" margin="4" >
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<template name="DialogBoxButton">
|
||||
<Button id="btn" translation="CLOSE_WINDOW" align_self="start" sprite_src_builtin="${icon}"/>
|
||||
</template>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<layout>
|
||||
<include src="../t_separator.xml"/>
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_separator.xml"/>
|
||||
|
||||
<template name="btn_close">
|
||||
<Button id="btn" translation="CLOSE_WINDOW" align_self="start" sprite_src_builtin="dashboard/check.svg"/>
|
||||
<Button id="btn" translation="CLOSE_WINDOW" align_self="start" sprite_src_builtin="@/dashboard/check.svg"/>
|
||||
</template>
|
||||
|
||||
<elements>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div flex_direction="row" gap="16" align_items="center">
|
||||
<div id="cover_art_parent" />
|
||||
@@ -10,7 +10,7 @@
|
||||
</div>
|
||||
<label id="label_description" wrap="1" text="No description available" />
|
||||
<Button id="btn_launch" align_self="baseline" color="primary" border_color="primary(rgb-mult-0.5)" padding_top="4" padding_bottom="4" round="8" padding_right="12" min_width="200" min_height="40">
|
||||
<sprite src_builtin="dashboard/play.svg" width="32" height="32" />
|
||||
<sprite src_builtin="@/dashboard/play.svg" width="32" height="32" />
|
||||
<label text="Launch" weight="bold" size="17" />
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div flex_direction="column" padding_top="8" padding_bottom="8">
|
||||
<div id="list_parent" gap="8" flex_direction="row" flex_wrap="wrap" justify_content="center" />
|
||||
</div>
|
||||
<div align_items="center" justify_content="center" gap="16">
|
||||
<Button id="btn_prev" sprite_src_builtin="dashboard/arrow_left.svg" width="32" height="32" />
|
||||
<Button id="btn_prev" sprite_src_builtin="@/dashboard/arrow_left.svg" width="32" height="32" />
|
||||
<label id="label_page" text="Page X" weight="bold" />
|
||||
<Button id="btn_next" sprite_src_builtin="dashboard/arrow_right.svg" width="32" height="32" />
|
||||
<Button id="btn_next" sprite_src_builtin="@/dashboard/arrow_right.svg" width="32" height="32" />
|
||||
</div>
|
||||
</elements>
|
||||
</layout>
|
||||
</layout>
|
||||
@@ -1,8 +1,8 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<!-- id, text -->
|
||||
<template name="InputProfileButton">
|
||||
<Button id="${id}" width="350" gap="8" justify_content="start" >
|
||||
<sprite margin_left="8" src_builtin="dashboard/controller.svg" min_width="24" min_height="24" />
|
||||
<sprite margin_left="8" src_builtin="@/dashboard/controller.svg" min_width="24" min_height="24" />
|
||||
<label text="${text}" weight="bold"/>
|
||||
</Button>
|
||||
</template>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div
|
||||
consume_mouse_events="1"
|
||||
@@ -23,7 +23,7 @@
|
||||
<div gap="16" align_items="center">
|
||||
<!-- Back button -->
|
||||
<Button id="but_back" width="48" height="48" color="on_background_contrast(transparent)" border_color="on_background_contrast(transparent)">
|
||||
<sprite src_builtin="dashboard/back.svg" width="24" height="24" color="on_background_contrast" />
|
||||
<sprite src_builtin="@/dashboard/back.svg" width="24" height="24" color="on_background_contrast" />
|
||||
</Button>
|
||||
|
||||
<!-- Title -->
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
|
||||
<!--
|
||||
parameters:
|
||||
@@ -12,7 +12,7 @@
|
||||
<Button id="button" sprite_src_builtin="${sprite}" text="${text}"/>
|
||||
</template>
|
||||
|
||||
<include src="../t_separator.xml"/>
|
||||
<include src="@/gui/t_separator.xml"/>
|
||||
|
||||
<elements>
|
||||
<div gap="8" flex_direction="column" min_width="100%" overflow_y="scroll">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div id="list" gap="8" flex_wrap="wrap" align_self="baseline">
|
||||
<!-- filled-in at runtime -->
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
<layout version="2">
|
||||
<include src="@/gui/t_group_box.xml" />
|
||||
|
||||
<template name="RunningGameCell">
|
||||
<rectangle macro="group_box" flex_direction="row">
|
||||
<Button id="btn_stop" sprite_src_builtin="dashboard/remove_circle.svg" tooltip="PROCESS.STOP" />
|
||||
<Button id="btn_kill" sprite_src_builtin="dashboard/knife.svg" tooltip="PROCESS.FORCE_KILL" />
|
||||
<GroupBox>
|
||||
<Button id="btn_stop" sprite_src_builtin="@/dashboard/remove_circle.svg" tooltip="PROCESS.STOP" />
|
||||
<Button id="btn_kill" sprite_src_builtin="@/dashboard/knife.svg" tooltip="PROCESS.FORCE_KILL" />
|
||||
<label id="label_name" weight="bold" />
|
||||
</rectangle>
|
||||
</GroupBox>
|
||||
</template>
|
||||
|
||||
<elements>
|
||||
<div align_items="center" gap="8">
|
||||
<Button id="btn_refresh" tooltip="REFRESH" width="32" height="32" sprite_src_builtin="dashboard/refresh.svg" />
|
||||
<sprite src_builtin="dashboard/cpu.svg" width="24" height="24" />
|
||||
<Button id="btn_refresh" tooltip="REFRESH" width="32" height="32" sprite_src_builtin="@/dashboard/refresh.svg" />
|
||||
<sprite src_builtin="@/dashboard/cpu.svg" width="24" height="24" />
|
||||
<label translation="GAME_LIST.RUNNING_GAMES_LIST" />
|
||||
</div>
|
||||
<div id="list_parent" gap="8" />
|
||||
</elements>
|
||||
</layout>
|
||||
</layout>
|
||||
@@ -1,9 +1,9 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div flex_direction="column" gap="8" width="100%" align_items="center">
|
||||
<div flex_direction="row" gap="4" align_self="end">
|
||||
<Button id="btn_refresh" tooltip="RELOAD_FROM_DISK" width="32" height="32" sprite_src_builtin="dashboard/refresh.svg" />
|
||||
<Button id="btn_download_skymaps" height="32" translation="APP_SETTINGS.BROWSE_ONLINE_CATALOG" sprite_src_builtin="dashboard/download.svg"/>
|
||||
<Button id="btn_refresh" tooltip="RELOAD_FROM_DISK" width="32" height="32" sprite_src_builtin="@/dashboard/refresh.svg" />
|
||||
<Button id="btn_download_skymaps" height="32" translation="APP_SETTINGS.BROWSE_ONLINE_CATALOG" sprite_src_builtin="@/dashboard/download.svg"/>
|
||||
</div>
|
||||
<div id="list_parent" gap="8" flex_direction="row" flex_wrap="wrap" />
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
|
||||
<!--
|
||||
ids:
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
|
||||
<elements>
|
||||
<rectangle macro="group_box" flex_direction="row" align_items="center">
|
||||
<div id="list_parent" gap="8" flex_direction="row" flex_wrap="wrap" flex_grow="1" />
|
||||
</rectangle>
|
||||
</elements>
|
||||
</layout>
|
||||
@@ -1,16 +0,0 @@
|
||||
<layout>
|
||||
<include src="../t_group_box.xml" />
|
||||
|
||||
<elements>
|
||||
<div gap="16" flex_direction="column" width="100%" justify_self="center" align_items="center" justify_content="center">
|
||||
<rectangle macro="group_box" align_items="center">
|
||||
<div id="window_parent" />
|
||||
<div gap="8">
|
||||
<Button id="btn_show_hide" text="showhide" sprite_src_builtin="dashboard/eye.svg" />
|
||||
<Button id="btn_close" translation="CLOSE_WINDOW" sprite_src_builtin="dashboard/remove_circle.svg" />
|
||||
<Button id="btn_kill" translation="TERMINATE_PROCESS" sprite_src_builtin="dashboard/remove_circle.svg" />
|
||||
</div>
|
||||
</rectangle>
|
||||
</div>
|
||||
</elements>
|
||||
</layout>
|
||||
@@ -243,7 +243,11 @@
|
||||
"GRID_OPACITY_HELP": "Deckkraft des Bodengitters, wenn die Skymap aktiviert ist",
|
||||
"XWAYLAND_BY_DEFAULT": "Apps standardmäßig im Kompatibilitätsmodus starten",
|
||||
"SAVE": "Speichern",
|
||||
"CANCEL": "Abbrechen"
|
||||
"CANCEL": "Abbrechen",
|
||||
"STATISTICS": "Statistiken",
|
||||
"ROTATIONS": "HMD-Rotationen",
|
||||
"SESSION_TIME": "Sitzungszeit",
|
||||
"LENS_SEPARATION_MM": "Linsenabstand (mm)"
|
||||
},
|
||||
"APPLICATION_LAUNCHER": "Programmstarter",
|
||||
"APPLICATION_STARTED": "Anwendung gestartet",
|
||||
@@ -346,4 +350,4 @@
|
||||
"ADD_TO_FAVOURITES_HINT": "Voreinstellung speichern und an die App-Schublade anheften",
|
||||
"REMOVE_FROM_FAVOURITES": "Aus angehefteten Anwendungen entfernen",
|
||||
"EMPTY": "Leer"
|
||||
}
|
||||
}
|
||||
@@ -132,6 +132,7 @@ APP_SETTINGS.INPUT_PROFILES,Change Input Bindings,Button label in Settings > Con
|
||||
APP_SETTINGS.INPUT_PROFILES_HELP,OpenXR controller input bindings,Tooltip for the Change Input Bindings button.
|
||||
APP_SETTINGS.INVERT_SCROLL_DIRECTION_X,Invert horizontal scroll direction,Checkbox label in Settings > Features tab. Inverts the horizontal scroll direction.
|
||||
APP_SETTINGS.INVERT_SCROLL_DIRECTION_Y,Invert vertical scroll direction,Checkbox label in Settings > Features tab. Inverts the vertical scroll direction.
|
||||
APP_SETTINGS.LENS_SEPARATION_MM,Lens separation (mm),"Distance between lens, in milimeters."
|
||||
APP_SETTINGS.KEYBOARD_MIDDLE_CLICK,Keyboard middle click,Dropdown label in Settings > Features tab. Selects the modifier key used for middle-click when typing with the laser pointer.
|
||||
APP_SETTINGS.KEYBOARD_MIDDLE_CLICK_HELP,"Modifier to use when typing
|
||||
with purple laser",Tooltip for the keyboard middle-click setting.
|
||||
@@ -225,6 +226,9 @@ APP_SETTINGS.SPACE_GRAVITY_GROUND_FRICTION_HELP,"Amount of friction slowing you
|
||||
APP_SETTINGS.SPACE_GRAVITY_FLOOR_HEIGHT,Floor height,Setting in the space gravity physics panel. The Y position where the virtual floor is.
|
||||
APP_SETTINGS.SPACE_GRAVITY_FLOOR_HEIGHT_HELP,The Y position where the floor is. Gravity stops when you reach this height.,Tooltip for the floor height setting.
|
||||
APP_SETTINGS.SPACE_ROTATE_UNLOCKED,Allow space rotate on all axes,"Checkbox in Settings > Space Drag tab. Unlocks space rotate to work on all axes. ""Space"" in this context refers to ""Playspace"" which was translated as ""${DEFINITIONS.PLAYSPACE}""."
|
||||
APP_SETTINGS.ROTATIONS,HMD rotations,Number of full 360-degree rotations of the HMD since startup. Shown in Settings > Statistics.
|
||||
APP_SETTINGS.SESSION_TIME,Session time,Time since WayVR started. Shown in Settings > Statistics.
|
||||
APP_SETTINGS.STATISTICS,Statistics,Category header in Settings.
|
||||
APP_SETTINGS.TROUBLESHOOTING,Troubleshooting,"Category header in Settings. Groups diagnostic/reset actions like clearing tokens, wiping config, and restarting."
|
||||
APP_SETTINGS.UI_GRADIENT_INTENSITY,UI Gradient intensity,Slider in Settings > Look & Feel tab. Controls the intensity of gradient effects on the UI (range 0.0-1.0).
|
||||
APP_SETTINGS.UPRIGHT_SCREEN_FIX,Upright screen fix,Checkbox in Settings > Miscellaneous tab. Fixes upright screen orientation on some desktop environments.
|
||||
|
||||
|
@@ -146,6 +146,7 @@
|
||||
"INPUT_PROFILES_HELP": "OpenXR controller input bindings",
|
||||
"INVERT_SCROLL_DIRECTION_X": "Invert horizontal scroll direction",
|
||||
"INVERT_SCROLL_DIRECTION_Y": "Invert vertical scroll direction",
|
||||
"LENS_SEPARATION_MM": "Lens separation (mm)",
|
||||
"KEYBOARD_MIDDLE_CLICK": "Keyboard middle click",
|
||||
"KEYBOARD_MIDDLE_CLICK_HELP": "Modifier to use when typing\nwith purple laser",
|
||||
"KEYBOARD_SOUND_ENABLED": "Keyboard sounds",
|
||||
@@ -223,6 +224,9 @@
|
||||
"SPACE_GRAVITY_FLOOR_HEIGHT": "Floor height",
|
||||
"SPACE_GRAVITY_FLOOR_HEIGHT_HELP": "The Y position where the floor is. Gravity stops when you reach this height.",
|
||||
"SPACE_ROTATE_UNLOCKED": "Allow space rotate on all axes",
|
||||
"ROTATIONS": "HMD rotations",
|
||||
"SESSION_TIME": "Session time",
|
||||
"STATISTICS": "Statistics",
|
||||
"TROUBLESHOOTING": "Troubleshooting",
|
||||
"UI_GRADIENT_INTENSITY": "UI Gradient intensity",
|
||||
"UPRIGHT_SCREEN_FIX": "Upright screen fix",
|
||||
@@ -274,7 +278,7 @@
|
||||
"CURRENT_SUPPORTERS": "Current Supporters",
|
||||
"BROUGHT_TO_YOU_VARIANTS_OFTEN": "Supported by {USER}|Special thanks to {USER}|Sponsored by {USER}|Backed by {USER}|Driven by community members like {USER}|Made possible by {USER}|Sustained by {USER}|Contributed by {USER}|Funded by {USER}",
|
||||
"BROUGHT_TO_YOU_VARIANTS_RARE": "Coffee provided by {USER}|Fuelled by {USER}|Shoutout to {USER}!|Keeping us going: {USER}|Helping us grow: {USER}|Keeping the servers running: {USER}|With gratitude to {USER}|Powered by {USER}|Supported by friends like {USER}",
|
||||
"BROUGHT_TO_YOU_VARIANTS_VERY_RARE": "Supported by legends like {USER}|Caffeine supplied by {USER}|A true legend: {USER}|Our hero of the day: {USER}|An absolute superstar: {USER}|Paying for the electricity bill: {USER}|Leading the way: {USER}|Caffeine-to-code converter provided by {USER}|Keeping the production stable: {USER}|The one and only: {USER}|Passing dmabuf buffers: {USER}"
|
||||
"BROUGHT_TO_YOU_VARIANTS_VERY_RARE": "Supported by legends like {USER}|Caffeine supplied by {USER}|A true legend: {USER}|Our hero of the day: {USER}|An absolute superstar: {USER}|Paying for the electricity bill: {USER}|The savior of our sanity: {USER}|Leading the way: {USER}|Caffeine-to-code converter provided by {USER}|Keeping the production stable: {USER}|The one and only: {USER}|Passing dmabuf buffers: {USER}"
|
||||
},
|
||||
"DOWNLOAD": "Download",
|
||||
"DOWNLOADER": "Downloader",
|
||||
@@ -346,4 +350,4 @@
|
||||
"ADD_TO_FAVOURITES_HINT": "Save preset and pin it to the app drawer",
|
||||
"REMOVE_FROM_FAVOURITES": "Remove from pinned apps",
|
||||
"EMPTY": "Empty"
|
||||
}
|
||||
}
|
||||
@@ -243,7 +243,11 @@
|
||||
"GRID_OPACITY_HELP": "Opacidad de la rejilla del suelo cuando el skymap está activado",
|
||||
"XWAYLAND_BY_DEFAULT": "Ejecutar apps en modo de compatibilidad por defecto",
|
||||
"SAVE": "Guardar",
|
||||
"CANCEL": "Cancelar"
|
||||
"CANCEL": "Cancelar",
|
||||
"STATISTICS": "Estadísticas",
|
||||
"ROTATIONS": "Rotaciones del HMD",
|
||||
"SESSION_TIME": "Tiempo de sesión",
|
||||
"LENS_SEPARATION_MM": "Separación de lentes (mm)"
|
||||
},
|
||||
"APPLICATION_LAUNCHER": "Lanzador de aplicaciones",
|
||||
"APPLICATION_STARTED": "Aplicación iniciada",
|
||||
@@ -346,4 +350,4 @@
|
||||
"ADD_TO_FAVOURITES_HINT": "Guardar ajuste y fijarlo al cajón de aplicaciones",
|
||||
"REMOVE_FROM_FAVOURITES": "Quitar de aplicaciones fijadas",
|
||||
"EMPTY": "Vacío"
|
||||
}
|
||||
}
|
||||
@@ -243,7 +243,11 @@
|
||||
"GRID_OPACITY_HELP": "Opacità della griglia del pavimento quando lo skymap è attivo",
|
||||
"XWAYLAND_BY_DEFAULT": "Avvia le app in modalità compatibilità per impostazione predefinita",
|
||||
"SAVE": "Salva",
|
||||
"CANCEL": "Annulla"
|
||||
"CANCEL": "Annulla",
|
||||
"STATISTICS": "Statistiche",
|
||||
"ROTATIONS": "Rotazioni HMD",
|
||||
"SESSION_TIME": "Tempo sessione",
|
||||
"LENS_SEPARATION_MM": "Distanza lenti (mm)"
|
||||
},
|
||||
"APPLICATION_LAUNCHER": "Avvio applicazioni",
|
||||
"APPLICATION_STARTED": "Applicazione avviata",
|
||||
@@ -346,4 +350,4 @@
|
||||
"ADD_TO_FAVOURITES_HINT": "Salva il preset e fissalo al cassetto delle app",
|
||||
"REMOVE_FROM_FAVOURITES": "Rimuovi dalle app fissate",
|
||||
"EMPTY": "Vuoto"
|
||||
}
|
||||
}
|
||||
@@ -243,7 +243,11 @@
|
||||
"GRID_OPACITY_HELP": "スカイマップ有効時のフロアグリッドの不透明度",
|
||||
"XWAYLAND_BY_DEFAULT": "デフォルトで互換モードでアプリを起動",
|
||||
"SAVE": "保存",
|
||||
"CANCEL": "キャンセル"
|
||||
"CANCEL": "キャンセル",
|
||||
"STATISTICS": "統計",
|
||||
"ROTATIONS": "HMD回転数",
|
||||
"SESSION_TIME": "セッション時間",
|
||||
"LENS_SEPARATION_MM": "レンズ間隔 (mm)"
|
||||
},
|
||||
"APPLICATION_LAUNCHER": "アプリランチャー",
|
||||
"APPLICATION_STARTED": "アプリが起動しました",
|
||||
@@ -346,4 +350,4 @@
|
||||
"ADD_TO_FAVOURITES_HINT": "プリセットを保存し、アプリドロワーに固定する",
|
||||
"REMOVE_FROM_FAVOURITES": "固定済みアプリから外す",
|
||||
"EMPTY": "なし"
|
||||
}
|
||||
}
|
||||
@@ -243,7 +243,11 @@
|
||||
"GRID_OPACITY_HELP": "Przezroczystość siatki podłogi przy włączonym Skymapie",
|
||||
"XWAYLAND_BY_DEFAULT": "Uruchamiaj aplikacje domyślnie w trybie kompatybilności",
|
||||
"SAVE": "Zapisz",
|
||||
"CANCEL": "Anuluj"
|
||||
"CANCEL": "Anuluj",
|
||||
"STATISTICS": "Statystyki",
|
||||
"ROTATIONS": "Obroty HMD",
|
||||
"SESSION_TIME": "Czas sesji",
|
||||
"LENS_SEPARATION_MM": "Rozstaw soczewek (mm)"
|
||||
},
|
||||
"APPLICATION_LAUNCHER": "Launcher aplikacji",
|
||||
"APPLICATION_STARTED": "Uruchomiono aplikację",
|
||||
@@ -346,4 +350,4 @@
|
||||
"ADD_TO_FAVOURITES_HINT": "Zapisz preset i przypnij go do szuflady aplikacji",
|
||||
"REMOVE_FROM_FAVOURITES": "Usuń z przypiętych aplikacji",
|
||||
"EMPTY": "Puste"
|
||||
}
|
||||
}
|
||||
@@ -243,7 +243,11 @@
|
||||
"GRID_OPACITY_HELP": "启用天空盒时地面网格的不透明度",
|
||||
"XWAYLAND_BY_DEFAULT": "默认以兼容模式运行应用程序",
|
||||
"SAVE": "保存",
|
||||
"CANCEL": "取消"
|
||||
"CANCEL": "取消",
|
||||
"STATISTICS": "统计数据",
|
||||
"ROTATIONS": "HMD 旋转次数",
|
||||
"SESSION_TIME": "会话时间",
|
||||
"LENS_SEPARATION_MM": "瞳距 (mm)"
|
||||
},
|
||||
"APPLICATION_LAUNCHER": "应用启动器",
|
||||
"APPLICATION_STARTED": "应用程序已启动",
|
||||
@@ -346,4 +350,4 @@
|
||||
"ADD_TO_FAVOURITES_HINT": "保存预设并将其固定到应用抽屉",
|
||||
"REMOVE_FROM_FAVOURITES": "从固定应用中移除",
|
||||
"EMPTY": "暂无"
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ use chrono::Timelike;
|
||||
use glam::Vec2;
|
||||
use strum::EnumCount;
|
||||
use wgui::{
|
||||
assets::{AssetPath, AssetProvider},
|
||||
assets::{AssetPathRef, AssetProvider},
|
||||
components::button::ComponentButton,
|
||||
event::{CallbackDataCommon, StyleSetRequest},
|
||||
font_config::WguiFontConfig,
|
||||
@@ -151,7 +151,7 @@ impl<T: 'static> Frontend<T> {
|
||||
let (layout, state) = wgui::parser::new_layout_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/dashboard.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/dashboard.xml"),
|
||||
extra: Default::default(),
|
||||
},
|
||||
LayoutParams {
|
||||
@@ -401,7 +401,10 @@ impl<T: 'static> Frontend<T> {
|
||||
.cast_as::<WidgetSprite>(self.widgets.id_sprite_titlebar_icon)?;
|
||||
sprite.set_content(
|
||||
common.alterables,
|
||||
Some(CustomGlyphData::from_assets(&self.globals, AssetPath::BuiltIn(icon))?),
|
||||
Some(CustomGlyphData::from_assets(
|
||||
&self.globals,
|
||||
AssetPathRef::BuiltIn(icon),
|
||||
)?),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::{cell::RefCell, collections::VecDeque, marker::PhantomData, rc::Rc};
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::{ButtonClickCallback, ComponentButton},
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
@@ -170,7 +170,7 @@ fn on_app_click(
|
||||
fn doc_params(globals: WguiGlobals) -> ParseDocumentParams<'static> {
|
||||
ParseDocumentParams {
|
||||
globals,
|
||||
path: AssetPath::BuiltIn("gui/tab/apps.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/apps.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -359,7 +359,7 @@ fn mount_entry<T>(
|
||||
params.insert(
|
||||
"src",
|
||||
if entry.icon_path.is_none() {
|
||||
"dashboard/terminal.svg"
|
||||
"@/dashboard/terminal.svg"
|
||||
} else {
|
||||
""
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::{marker::PhantomData, rc::Rc};
|
||||
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::{AssetPathRef},
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
layout::{Layout, WidgetID},
|
||||
@@ -53,7 +53,7 @@ impl<T> Tab<T> for TabDonate<T> {
|
||||
fn doc_params(globals: &WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/donate.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/donate.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::marker::PhantomData;
|
||||
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
layout::WidgetID,
|
||||
parser::{Fetchable, ParseDocumentParams, ParserState},
|
||||
};
|
||||
@@ -53,7 +53,7 @@ impl<T> TabGames<T> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/games.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/games.xml"),
|
||||
extra: Default::default(),
|
||||
},
|
||||
&mut frontend.layout,
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::{marker::PhantomData, rc::Rc};
|
||||
|
||||
use wgui::{
|
||||
animation::{Animation, AnimationEasing},
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
color::{WguiColor, WguiColorName, WguiNamedColor},
|
||||
components::{ComponentTrait, button::ComponentButton},
|
||||
event::CallbackDataCommon,
|
||||
@@ -142,7 +142,7 @@ impl<T> TabHome<T> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: frontend.layout.state.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/home.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/home.xml"),
|
||||
extra: Default::default(),
|
||||
},
|
||||
&mut frontend.layout,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::{collections::HashMap, marker::PhantomData, rc::Rc};
|
||||
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::{AssetPathRef},
|
||||
components::{
|
||||
bar_graph::{ComponentBarGraph, ValueCell},
|
||||
button::ComponentButton,
|
||||
@@ -229,7 +229,7 @@ impl<T> Tab<T> for TabMonado<T> {
|
||||
fn doc_params_monado(globals: &'_ WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/monado.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/monado.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -237,7 +237,7 @@ fn doc_params_monado(globals: &'_ WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
fn doc_params_tab_process_list(globals: &'_ WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/monado_tab_process_list.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/monado_tab_process_list.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -245,7 +245,7 @@ fn doc_params_tab_process_list(globals: &'_ WguiGlobals) -> ParseDocumentParams<
|
||||
fn doc_params_tab_general_settings(globals: &'_ WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/monado_tab_general_settings.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/monado_tab_general_settings.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -253,7 +253,7 @@ fn doc_params_tab_general_settings(globals: &'_ WguiGlobals) -> ParseDocumentPar
|
||||
fn doc_params_tab_debug_timings(globals: &'_ WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/monado_tab_debug_timings.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/monado_tab_debug_timings.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,20 @@ pub fn options_category(
|
||||
mp.parser_state.get_widget_id(&id)
|
||||
}
|
||||
|
||||
pub fn options_stat_row(mp: &mut MacroParams, parent: WidgetID, translation: &str) -> anyhow::Result<WidgetID> {
|
||||
let id = mp.idx.to_string();
|
||||
mp.idx += 1;
|
||||
|
||||
let mut params = TemplateParams::new();
|
||||
params.insert("id", &id);
|
||||
params.insert("translation", translation);
|
||||
|
||||
mp.parser_state
|
||||
.instantiate_template(mp.doc_params, "StatRow", mp.layout, parent, params)?;
|
||||
|
||||
mp.parser_state.get_widget_id(&id)
|
||||
}
|
||||
|
||||
pub fn options_checkbox(mp: &mut MacroParams, parent: WidgetID, setting: SettingType) -> anyhow::Result<()> {
|
||||
let id = mp.idx.to_string();
|
||||
mp.idx += 1;
|
||||
|
||||
@@ -2,7 +2,7 @@ use glam::Vec2;
|
||||
use std::{marker::PhantomData, rc::Rc, str::FromStr};
|
||||
use strum::{AsRefStr, EnumProperty, EnumString};
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::{AssetPathRef},
|
||||
color::WguiColorName,
|
||||
components::tabs::ComponentTabs,
|
||||
event::StyleSetRequest,
|
||||
@@ -23,7 +23,7 @@ use wgui::{
|
||||
use wlx_common::{
|
||||
config::GeneralConfig,
|
||||
config_io::ConfigRoot,
|
||||
dash_interface::{ConfigChangeKind, DashPlayspaceTask, InterfaceFeats},
|
||||
dash_interface::{ConfigChangeKind, DashPlayspaceTask, HmdStats, InterfaceFeats},
|
||||
};
|
||||
|
||||
use crate::{
|
||||
@@ -40,6 +40,7 @@ mod tab_look_and_feel;
|
||||
mod tab_misc;
|
||||
mod tab_skybox;
|
||||
mod tab_space_drag;
|
||||
mod tab_statistics;
|
||||
mod tab_troubleshooting;
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -51,6 +52,7 @@ pub(crate) enum TabNameEnum {
|
||||
Misc,
|
||||
Skybox,
|
||||
SpaceDrag,
|
||||
Statistics,
|
||||
Troubleshooting,
|
||||
}
|
||||
|
||||
@@ -64,6 +66,7 @@ impl TabNameEnum {
|
||||
"misc" => Some(TabNameEnum::Misc),
|
||||
"skybox" => Some(TabNameEnum::Skybox),
|
||||
"space_drag" => Some(TabNameEnum::SpaceDrag),
|
||||
"statistics" => Some(TabNameEnum::Statistics),
|
||||
"troubleshooting" => Some(TabNameEnum::Troubleshooting),
|
||||
_ => None,
|
||||
}
|
||||
@@ -101,8 +104,12 @@ struct SettingUpdatedParams<'a> {
|
||||
setting_type: SettingType,
|
||||
}
|
||||
|
||||
struct UpdateExtra {
|
||||
hmd_stats: HmdStats,
|
||||
}
|
||||
|
||||
trait SettingsTab {
|
||||
fn update(&mut self, _par: &mut ViewUpdateParams) -> anyhow::Result<()> {
|
||||
fn update(&mut self, _par: &mut ViewUpdateParams, _extra: &UpdateExtra) -> anyhow::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -144,12 +151,17 @@ impl<T> Tab<T> for TabSettings<T> {
|
||||
if let Some(tab) = &mut self.current_tab {
|
||||
let mut config_change_kind = None;
|
||||
|
||||
tab.update(&mut ViewUpdateParams {
|
||||
layout: &mut frontend.layout,
|
||||
executor: &frontend.executor,
|
||||
general_config: frontend.interface.general_config(data),
|
||||
config_change_kind: &mut config_change_kind,
|
||||
})?;
|
||||
let hmd_stats = frontend.interface.hmd_stats(data);
|
||||
|
||||
tab.update(
|
||||
&mut ViewUpdateParams {
|
||||
layout: &mut frontend.layout,
|
||||
executor: &frontend.executor,
|
||||
general_config: frontend.interface.general_config(data),
|
||||
config_change_kind: &mut config_change_kind,
|
||||
},
|
||||
&UpdateExtra { hmd_stats },
|
||||
)?;
|
||||
|
||||
if let Some(kind) = config_change_kind {
|
||||
frontend.interface.config_changed(data, kind);
|
||||
@@ -675,7 +687,7 @@ fn mount_requires_restart(layout: &mut Layout, parent: WidgetID) -> anyhow::Resu
|
||||
fn doc_params(globals: &'_ WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/settings.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/settings.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -734,6 +746,9 @@ impl<T> TabSettings<T> {
|
||||
TabNameEnum::Skybox => {
|
||||
self.current_tab = Some(Box::new(tab_skybox::State::mount(settings_mount_params)?));
|
||||
}
|
||||
TabNameEnum::Statistics => {
|
||||
self.current_tab = Some(Box::new(tab_statistics::State::mount(settings_mount_params)?));
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
@@ -742,7 +757,7 @@ impl<T> TabSettings<T> {
|
||||
pub fn new(frontend: &mut Frontend<T>, parent_id: WidgetID, data: &mut T) -> anyhow::Result<Self> {
|
||||
let doc_params = ParseDocumentParams {
|
||||
globals: frontend.layout.state.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/settings.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/settings.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ impl State {
|
||||
par.mp,
|
||||
par.id_parent,
|
||||
"APP_SETTINGS.AUTOSTART_APPS",
|
||||
"dashboard/apps.svg",
|
||||
"@/dashboard/apps.svg",
|
||||
)?;
|
||||
|
||||
// todo: prevent clone
|
||||
|
||||
@@ -4,7 +4,7 @@ use wgui::{
|
||||
components::button::ComponentButton, globals::WguiGlobals, layout::WidgetID, parser::Fetchable, task::Tasks,
|
||||
};
|
||||
|
||||
use crate::tab::settings::{horiz_cell, mount_requires_restart};
|
||||
use crate::tab::settings::{UpdateExtra, horiz_cell, mount_requires_restart};
|
||||
use crate::util::popup_manager::PopupHolder;
|
||||
|
||||
use crate::{
|
||||
@@ -29,7 +29,7 @@ pub struct State {
|
||||
}
|
||||
|
||||
impl SettingsTab for State {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams) -> anyhow::Result<()> {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams, _extra: &UpdateExtra) -> anyhow::Result<()> {
|
||||
self.popup_input_profiles.update(par)?;
|
||||
|
||||
for task in self.tasks.drain() {
|
||||
@@ -62,7 +62,7 @@ fn create_input_profiles_button(
|
||||
let mut params = TemplateParams::new();
|
||||
params.insert("id", &id);
|
||||
params.insert("translation", "APP_SETTINGS.INPUT_PROFILES");
|
||||
params.insert("icon", "dashboard/controller.svg");
|
||||
params.insert("icon", "@/dashboard/controller.svg");
|
||||
|
||||
mp.parser_state
|
||||
.instantiate_template(mp.doc_params, "ButtonText", mp.layout, id_cell, params)?;
|
||||
@@ -90,7 +90,7 @@ impl State {
|
||||
par.mp,
|
||||
par.id_parent,
|
||||
"APP_SETTINGS.CONTROLS",
|
||||
"dashboard/controller.svg",
|
||||
"@/dashboard/controller.svg",
|
||||
)?;
|
||||
if par.feats.xr_backend.is_open_xr() {
|
||||
create_input_profiles_button(par.mp, c, tasks.clone(), &popup)?;
|
||||
|
||||
@@ -16,7 +16,7 @@ use wlx_common::{async_executor::AsyncExecutor, config::GeneralConfig, dash_inte
|
||||
use crate::{
|
||||
frontend::FrontendTasks,
|
||||
tab::settings::{
|
||||
SettingType, SettingsMountParams, SettingsTab, TabNameEnum, Task as ParentTask, horiz_cell,
|
||||
SettingType, SettingsMountParams, SettingsTab, TabNameEnum, Task as ParentTask, UpdateExtra, horiz_cell,
|
||||
macros::{MacroParams, options_category, options_checkbox, options_range_f32},
|
||||
},
|
||||
util::{
|
||||
@@ -50,7 +50,7 @@ pub struct State {
|
||||
}
|
||||
|
||||
impl SettingsTab for State {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams) -> anyhow::Result<()> {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams, _extra: &UpdateExtra) -> anyhow::Result<()> {
|
||||
self.popup_download.update(par)?;
|
||||
self.popup_dialog.update(par)?;
|
||||
|
||||
@@ -79,7 +79,7 @@ impl SettingsTab for State {
|
||||
par.general_config.whisper_model = model.file_name.into();
|
||||
par.config_change_kind.replace(ConfigChangeKind::Other);
|
||||
|
||||
// reload tab so that the downloaded checkmarks get populated
|
||||
// reload tab so that the downloaded check marks get populated
|
||||
self.parent_tasks.push(ParentTask::SetTab(TabNameEnum::Features));
|
||||
}
|
||||
}
|
||||
@@ -143,7 +143,12 @@ impl State {
|
||||
let popup_download = PopupHolder::<views::download_file::View>::default();
|
||||
let popup_dialog = PopupHolder::<views::dialog_box::View>::default();
|
||||
|
||||
let c = options_category(par.mp, par.id_parent, "APP_SETTINGS.FEATURES", "dashboard/options.svg")?;
|
||||
let c = options_category(
|
||||
par.mp,
|
||||
par.id_parent,
|
||||
"APP_SETTINGS.FEATURES",
|
||||
"@/dashboard/options.svg",
|
||||
)?;
|
||||
|
||||
if par.feats.whisper {
|
||||
whisper_models_dropdown(par.mp, c)?;
|
||||
@@ -213,12 +218,12 @@ impl State {
|
||||
entries: vec![
|
||||
views::dialog_box::ButtonEntry {
|
||||
content: Translation::from_translation_key("APP_SETTINGS.CANCEL"),
|
||||
icon: "dashboard/close.svg",
|
||||
icon: "@/dashboard/close.svg",
|
||||
action: ACTION_CANCEL,
|
||||
},
|
||||
views::dialog_box::ButtonEntry {
|
||||
content: Translation::from_translation_key("DOWNLOAD"),
|
||||
icon: "dashboard/download.svg",
|
||||
icon: "@/dashboard/download.svg",
|
||||
action: ACTION_DOWNLOAD,
|
||||
},
|
||||
],
|
||||
@@ -254,12 +259,12 @@ impl State {
|
||||
entries: vec![
|
||||
views::dialog_box::ButtonEntry {
|
||||
content: Translation::from_translation_key("APP_SETTINGS.CANCEL"),
|
||||
icon: "dashboard/close.svg",
|
||||
icon: "@/dashboard/close.svg",
|
||||
action: ACTION_CANCEL,
|
||||
},
|
||||
views::dialog_box::ButtonEntry {
|
||||
content: Translation::from_translation_key("REMOVE"),
|
||||
icon: "dashboard/trash.svg",
|
||||
icon: "@/dashboard/trash.svg",
|
||||
action: ACTION_REMOVE,
|
||||
},
|
||||
],
|
||||
|
||||
@@ -11,7 +11,7 @@ use wgui::{
|
||||
use crate::{
|
||||
frontend::FrontendTasks,
|
||||
tab::settings::{
|
||||
SettingType, SettingsMountParams, SettingsTab, horiz_cell,
|
||||
SettingType, SettingsMountParams, SettingsTab, UpdateExtra, horiz_cell,
|
||||
macros::{options_category, options_checkbox, options_dropdown, options_slider_f32},
|
||||
mount_requires_restart,
|
||||
},
|
||||
@@ -32,7 +32,7 @@ pub struct State {
|
||||
}
|
||||
|
||||
impl SettingsTab for State {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams) -> anyhow::Result<()> {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams, _extra: &UpdateExtra) -> anyhow::Result<()> {
|
||||
self.popup_color_palettes.update(par)?;
|
||||
|
||||
for task in self.tasks.drain() {
|
||||
@@ -60,7 +60,7 @@ impl State {
|
||||
par.mp,
|
||||
par.id_parent,
|
||||
"APP_SETTINGS.LOOK_AND_FEEL",
|
||||
"dashboard/palette.svg",
|
||||
"@/dashboard/palette.svg",
|
||||
)?;
|
||||
create_color_palettes_button(par.mp, c, tasks.clone(), &popup)?;
|
||||
options_dropdown::<wlx_common::locale::Language>(par.mp, c, &SettingType::Language)?;
|
||||
@@ -100,7 +100,7 @@ fn create_color_palettes_button(
|
||||
let mut params = TemplateParams::new();
|
||||
params.insert("id", &id);
|
||||
params.insert("translation", "APP_SETTINGS.COLOR_PALETTE");
|
||||
params.insert("icon", "dashboard/palette.svg");
|
||||
params.insert("icon", "@/dashboard/palette.svg");
|
||||
|
||||
mp.parser_state
|
||||
.instantiate_template(mp.doc_params, "ButtonText", mp.layout, id_cell, params)?;
|
||||
|
||||
@@ -9,7 +9,7 @@ impl SettingsTab for State {}
|
||||
|
||||
impl State {
|
||||
pub fn mount(par: SettingsMountParams) -> anyhow::Result<State> {
|
||||
let c = options_category(par.mp, par.id_parent, "APP_SETTINGS.MISC", "dashboard/blocks.svg")?;
|
||||
let c = options_category(par.mp, par.id_parent, "APP_SETTINGS.MISC", "@/dashboard/blocks.svg")?;
|
||||
options_dropdown::<wlx_common::config::InputEmulationMethod>(par.mp, c, &SettingType::InputEmulationMethod)?;
|
||||
options_dropdown::<wlx_common::config::InputCaptureMethod>(par.mp, c, &SettingType::InputCaptureMethod)?;
|
||||
options_dropdown::<wlx_common::config::CaptureMethod>(par.mp, c, &SettingType::CaptureMethod)?;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use wgui::{assets::AssetPath, i18n::Translation, layout::Layout, task::Tasks};
|
||||
use wgui::{assets::AssetPathRef, i18n::Translation, layout::Layout, task::Tasks};
|
||||
|
||||
use crate::{
|
||||
frontend::FrontendTasks,
|
||||
tab::settings::{
|
||||
SettingType, SettingsMountParams, SettingsTab,
|
||||
SettingType, SettingsMountParams, SettingsTab, UpdateExtra,
|
||||
macros::{options_category, options_checkbox, options_slider_f32},
|
||||
},
|
||||
util::{popup_manager::PopupHolder, wgui_simple},
|
||||
@@ -22,7 +22,7 @@ pub struct State {
|
||||
}
|
||||
|
||||
impl SettingsTab for State {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams) -> anyhow::Result<()> {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams, _extra: &UpdateExtra) -> anyhow::Result<()> {
|
||||
self.popup_skymap_list.update(par)?;
|
||||
|
||||
for task in self.tasks.drain() {
|
||||
@@ -37,7 +37,7 @@ impl SettingsTab for State {
|
||||
|
||||
impl State {
|
||||
pub fn mount(par: SettingsMountParams) -> anyhow::Result<Self> {
|
||||
let id_category = options_category(par.mp, par.id_parent, "APP_SETTINGS.SKYBOX", "dashboard/globe.svg")?;
|
||||
let id_category = options_category(par.mp, par.id_parent, "APP_SETTINGS.SKYBOX", "@/dashboard/globe.svg")?;
|
||||
options_checkbox(par.mp, id_category, SettingType::UseSkybox)?;
|
||||
options_checkbox(par.mp, id_category, SettingType::UsePassthrough)?;
|
||||
options_slider_f32(par.mp, id_category, SettingType::GridOpacity, 0.0, 1.0, 0.05)?;
|
||||
@@ -49,7 +49,7 @@ impl State {
|
||||
id_parent: id_category,
|
||||
layout: par.mp.layout,
|
||||
content: Translation::from_translation_key("APP_SETTINGS.BROWSE_SKYMAPS"),
|
||||
icon_builtin: AssetPath::BuiltIn("dashboard/globe.svg"),
|
||||
icon_builtin: AssetPathRef::BuiltIn("dashboard/globe.svg"),
|
||||
on_click: tasks.get_button_click_callback(Task::ShowSkymapList),
|
||||
})?;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
i18n::Translation,
|
||||
layout::{Layout, LayoutTask, WidgetID},
|
||||
parser::{Fetchable, ParseDocumentParams},
|
||||
@@ -36,14 +36,14 @@ impl SettingsTab for State {
|
||||
|
||||
impl State {
|
||||
pub fn mount(par: SettingsMountParams) -> anyhow::Result<State> {
|
||||
let c = options_category(par.mp, par.id_parent, "APP_SETTINGS.SPACE_DRAG", "dashboard/drag.svg")?;
|
||||
let c = options_category(par.mp, par.id_parent, "APP_SETTINGS.SPACE_DRAG", "@/dashboard/drag.svg")?;
|
||||
|
||||
let globals = par.mp.layout.state.globals.clone();
|
||||
|
||||
let tab_state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals,
|
||||
path: AssetPath::BuiltIn("gui/tab/settings_tab_space_drag.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/settings_tab_space_drag.xml"),
|
||||
extra: Default::default(),
|
||||
},
|
||||
par.mp.layout,
|
||||
@@ -61,7 +61,7 @@ impl State {
|
||||
par.mp,
|
||||
c,
|
||||
"APP_SETTINGS.RESET_PLAYSPACE",
|
||||
"dashboard/refresh.svg",
|
||||
"@/dashboard/refresh.svg",
|
||||
super::Task::ResetPlayspace,
|
||||
)?;
|
||||
|
||||
@@ -69,7 +69,7 @@ impl State {
|
||||
par.mp,
|
||||
c,
|
||||
"APP_SETTINGS.SAVE_PLAYSPACE_CENTER",
|
||||
"dashboard/recenter.svg",
|
||||
"@/dashboard/recenter.svg",
|
||||
super::Task::SavePlayspaceCenter,
|
||||
)?;
|
||||
|
||||
@@ -77,7 +77,7 @@ impl State {
|
||||
par.mp,
|
||||
c,
|
||||
"APP_SETTINGS.RESET_PLAYSPACE_CENTER",
|
||||
"dashboard/trash.svg",
|
||||
"@/dashboard/trash.svg",
|
||||
super::Task::ResetPlayspaceCenter,
|
||||
)?;
|
||||
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
use crate::{
|
||||
tab::settings::{
|
||||
SettingsMountParams, SettingsTab, UpdateExtra,
|
||||
macros::{options_category, options_stat_row},
|
||||
},
|
||||
views::ViewUpdateParams,
|
||||
};
|
||||
use std::f32::consts::TAU;
|
||||
use wgui::{i18n::Translation, layout::WidgetID, widget::label::WidgetLabel};
|
||||
|
||||
pub struct State {
|
||||
id_label_rotations: WidgetID,
|
||||
id_label_session_time: WidgetID,
|
||||
id_label_lens_separation: WidgetID,
|
||||
last_rotations: f32,
|
||||
last_session_time_ms: u64,
|
||||
last_ipd: f32,
|
||||
}
|
||||
|
||||
impl SettingsTab for State {
|
||||
fn update(&mut self, par: &mut ViewUpdateParams, extra: &UpdateExtra) -> anyhow::Result<()> {
|
||||
let hmd_stats = &extra.hmd_stats;
|
||||
|
||||
let mut common = par.layout.common();
|
||||
|
||||
// 1 - one rotation, 2 - two rotations
|
||||
// accuracy up to 0.01 rotations
|
||||
let rotations = (hmd_stats.rotations_rad / TAU * 100.0).round() / 100.0;
|
||||
|
||||
if rotations != self.last_rotations {
|
||||
self.last_rotations = rotations;
|
||||
|
||||
let mut label = common.state.widgets.cast_as::<WidgetLabel>(self.id_label_rotations)?;
|
||||
label.set_text(&mut common, Translation::from_raw_text_string(rotations.to_string()));
|
||||
}
|
||||
|
||||
if hmd_stats.session_time_ms != self.last_session_time_ms {
|
||||
self.last_session_time_ms = hmd_stats.session_time_ms;
|
||||
|
||||
let mut label = common
|
||||
.state
|
||||
.widgets
|
||||
.cast_as::<WidgetLabel>(self.id_label_session_time)?;
|
||||
label.set_text(
|
||||
&mut common,
|
||||
Translation::from_raw_text_string(format_duration(hmd_stats.session_time_ms)),
|
||||
);
|
||||
}
|
||||
|
||||
if hmd_stats.ipd != self.last_ipd {
|
||||
self.last_ipd = hmd_stats.ipd;
|
||||
|
||||
let mut label = common
|
||||
.state
|
||||
.widgets
|
||||
.cast_as::<WidgetLabel>(self.id_label_lens_separation)?;
|
||||
label.set_text(
|
||||
&mut common,
|
||||
Translation::from_raw_text_string(format!("{:.2}", hmd_stats.ipd)),
|
||||
);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn format_duration(ms: u64) -> String {
|
||||
let total_secs = ms / 1000;
|
||||
let h = total_secs / 3600;
|
||||
let m = (total_secs % 3600) / 60;
|
||||
let s = total_secs % 60;
|
||||
|
||||
if h > 0 {
|
||||
format!("{h}:{m:02}:{s:02}")
|
||||
} else {
|
||||
format!("{m}:{s:02}")
|
||||
}
|
||||
}
|
||||
|
||||
impl State {
|
||||
pub fn mount(par: SettingsMountParams) -> anyhow::Result<State> {
|
||||
let c = options_category(
|
||||
par.mp,
|
||||
par.id_parent,
|
||||
"APP_SETTINGS.STATISTICS",
|
||||
"@/dashboard/barchart.svg",
|
||||
)?;
|
||||
|
||||
let id_label_rotations = options_stat_row(par.mp, c, "APP_SETTINGS.ROTATIONS")?;
|
||||
let id_label_session_time = options_stat_row(par.mp, c, "APP_SETTINGS.SESSION_TIME")?;
|
||||
let id_label_lens_separation = options_stat_row(par.mp, c, "APP_SETTINGS.LENS_SEPARATION_MM")?;
|
||||
|
||||
Ok(State {
|
||||
id_label_rotations,
|
||||
id_label_session_time,
|
||||
id_label_lens_separation,
|
||||
last_rotations: f32::MIN,
|
||||
last_session_time_ms: u64::MAX,
|
||||
last_ipd: f32::MIN,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -13,34 +13,34 @@ impl State {
|
||||
par.mp,
|
||||
par.id_parent,
|
||||
"APP_SETTINGS.TROUBLESHOOTING",
|
||||
"dashboard/cpu.svg",
|
||||
"@/dashboard/cpu.svg",
|
||||
)?;
|
||||
options_danger_button(
|
||||
par.mp,
|
||||
c,
|
||||
"APP_SETTINGS.CLEAR_PIPEWIRE_TOKENS",
|
||||
"dashboard/display.svg",
|
||||
"@/dashboard/display.svg",
|
||||
Task::ClearPipewireTokens,
|
||||
)?;
|
||||
options_danger_button(
|
||||
par.mp,
|
||||
c,
|
||||
"APP_SETTINGS.CLEAR_SAVED_STATE",
|
||||
"dashboard/binary.svg",
|
||||
"@/dashboard/binary.svg",
|
||||
Task::ClearSavedState,
|
||||
)?;
|
||||
options_danger_button(
|
||||
par.mp,
|
||||
c,
|
||||
"APP_SETTINGS.DELETE_ALL_CONFIGS",
|
||||
"dashboard/circle.svg",
|
||||
"@/dashboard/circle.svg",
|
||||
Task::DeleteAllConfigs,
|
||||
)?;
|
||||
options_danger_button(
|
||||
par.mp,
|
||||
c,
|
||||
"APP_SETTINGS.RESTART_SOFTWARE",
|
||||
"dashboard/refresh.svg",
|
||||
"@/dashboard/refresh.svg",
|
||||
Task::RestartSoftware,
|
||||
)?;
|
||||
Ok(State {})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::{marker::PhantomData, rc::Rc};
|
||||
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
layout::{Layout, WidgetID},
|
||||
@@ -68,7 +68,7 @@ impl<T> Tab<T> for TabWelcome<T> {
|
||||
fn doc_params(globals: &WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/tab/welcome.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/tab/welcome.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -135,7 +135,7 @@ impl<T> TabWelcome<T> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals,
|
||||
path: AssetPath::BuiltIn(&format!("gui/tab/welcome_page_{}.xml", self.current_page)),
|
||||
path: AssetPathRef::BuiltIn(&format!("gui/tab/welcome_page_{}.xml", self.current_page)),
|
||||
extra: Default::default(),
|
||||
},
|
||||
layout,
|
||||
|
||||
@@ -4,7 +4,7 @@ use std::{
|
||||
};
|
||||
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
event::{EventAlterables, StyleSetRequest},
|
||||
globals::WguiGlobals,
|
||||
@@ -276,7 +276,7 @@ impl PopupManager {
|
||||
) -> anyhow::Result<(PopupHandle, WidgetID /* content widget ID */)> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/popup_window.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/popup_window.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
let state = wgui::parser::parse_from_assets(doc_params, layout, self.parent_id)?;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use glam::{Mat4, Vec2};
|
||||
use wgui::{
|
||||
animation::{Animation, AnimationEasing},
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
color::WguiColorName,
|
||||
components::{self, button::ButtonClickCallback},
|
||||
i18n::Translation,
|
||||
@@ -23,7 +23,7 @@ pub struct CreateButtonParams<'a> {
|
||||
pub id_parent: WidgetID,
|
||||
pub layout: &'a mut Layout,
|
||||
pub content: Translation,
|
||||
pub icon_builtin: AssetPath<'a>,
|
||||
pub icon_builtin: AssetPathRef<'a>,
|
||||
pub on_click: ButtonClickCallback,
|
||||
}
|
||||
|
||||
@@ -84,7 +84,12 @@ pub fn create_label_error(layout: &mut Layout, parent: WidgetID, content: String
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn create_icon(layout: &mut Layout, id_parent: WidgetID, size: Vec2, path: AssetPath) -> anyhow::Result<WidgetID> {
|
||||
pub fn create_icon(
|
||||
layout: &mut Layout,
|
||||
id_parent: WidgetID,
|
||||
size: Vec2,
|
||||
path: AssetPathRef,
|
||||
) -> anyhow::Result<WidgetID> {
|
||||
let widget_sprite = WidgetSprite::create(WidgetSpriteParams {
|
||||
color: Some(WguiColorName::OnBackground.into()),
|
||||
glyph_data: Some(CustomGlyphData::from_assets(&layout.state.globals, path)?),
|
||||
@@ -119,7 +124,7 @@ pub struct CreateLoadingParams<'a> {
|
||||
pub fn create_loading(par: CreateLoadingParams) -> anyhow::Result<WidgetID> {
|
||||
let doc_params = ParseDocumentParams {
|
||||
globals: par.layout.state.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/t_loading.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/t_loading.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::{collections::HashMap, rc::Rc, str::FromStr};
|
||||
use strum::VariantNames;
|
||||
use wayvr_ipc::packet_client::{PositionMode, WvrProcessLaunchParams};
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::{
|
||||
ComponentTrait, button::ComponentButton, checkbox::ComponentCheckbox, radio_group::ComponentRadioGroup,
|
||||
},
|
||||
@@ -100,7 +100,7 @@ impl View {
|
||||
pub fn new(params: Params) -> anyhow::Result<Self> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/app_launcher.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/app_launcher.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::rc::Rc;
|
||||
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
color::{WguiColor, WguiColorName},
|
||||
components::{
|
||||
self,
|
||||
@@ -124,7 +124,7 @@ fn mount_multi_selector(params: MultiSelectorParams) -> anyhow::Result<()> {
|
||||
params.ess,
|
||||
components::button::Params {
|
||||
text: Some(Translation::from_raw_text(&cell.display_text)),
|
||||
sprite_src: Some(AssetPath::BuiltIn(cell.icon_path)),
|
||||
sprite_src: Some(AssetPathRef::BuiltIn(cell.icon_path)),
|
||||
color,
|
||||
..Default::default()
|
||||
},
|
||||
@@ -211,7 +211,7 @@ fn get_profile_display_name(profile_name: &str, card: &pactl_wrapper::Card) -> P
|
||||
// fallback
|
||||
return ProfileDisplayName {
|
||||
name: profile_name.into(),
|
||||
icon_path: "dashboard/binary.svg",
|
||||
icon_path: "@/dashboard/binary.svg",
|
||||
is_vr: false,
|
||||
};
|
||||
};
|
||||
@@ -221,26 +221,26 @@ fn get_profile_display_name(profile_name: &str, card: &pactl_wrapper::Card) -> P
|
||||
|
||||
let prof = profile_name.to_lowercase();
|
||||
if prof.contains("analog") {
|
||||
out_icon_path = "dashboard/minijack.svg";
|
||||
out_icon_path = "@/dashboard/minijack.svg";
|
||||
} else if prof.contains("iec" /* digital */) {
|
||||
out_icon_path = "dashboard/binary.svg";
|
||||
out_icon_path = "@/dashboard/binary.svg";
|
||||
} else if prof.contains("hdmi") {
|
||||
out_icon_path = "dashboard/displayport.svg";
|
||||
out_icon_path = "@/dashboard/displayport.svg";
|
||||
} else if prof.contains("off") {
|
||||
out_icon_path = "dashboard/sleep.svg";
|
||||
out_icon_path = "@/dashboard/sleep.svg";
|
||||
} else if prof.contains("input") {
|
||||
out_icon_path = "dashboard/microphone.svg";
|
||||
out_icon_path = "@/dashboard/microphone.svg";
|
||||
} else {
|
||||
out_icon_path = "dashboard/volume.svg"; // Default fallback
|
||||
out_icon_path = "@/dashboard/volume.svg"; // Default fallback
|
||||
}
|
||||
|
||||
// All ports are tied to this VR headset, assign all of them to the VR icon
|
||||
if is_card_mentioning_hmd(card) {
|
||||
if prof.contains("mic") {
|
||||
// Probably microphone
|
||||
out_icon_path = "dashboard/microphone.svg";
|
||||
out_icon_path = "@/dashboard/microphone.svg";
|
||||
} else {
|
||||
out_icon_path = "dashboard/vr.svg";
|
||||
out_icon_path = "@/dashboard/vr.svg";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,11 +266,11 @@ fn get_profile_display_name(profile_name: &str, card: &pactl_wrapper::Card) -> P
|
||||
|
||||
if does_string_mention_hmd_sink(product_name) {
|
||||
// VR icon
|
||||
out_icon_path = "dashboard/vr.svg";
|
||||
out_icon_path = "@/dashboard/vr.svg";
|
||||
is_vr = true;
|
||||
} else {
|
||||
// Monitor icon
|
||||
out_icon_path = "dashboard/displayport.svg";
|
||||
out_icon_path = "@/dashboard/displayport.svg";
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -291,7 +291,7 @@ fn get_profile_display_name(profile_name: &str, card: &pactl_wrapper::Card) -> P
|
||||
fn doc_params(globals: &WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/audio_settings.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/audio_settings.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -776,9 +776,9 @@ impl View {
|
||||
par.insert("device_icon", disp.icon_path);
|
||||
} else {
|
||||
let icon_path = if params.alt_desc.contains("WiVRn") {
|
||||
"dashboard/wivrn_head_symbolic.svg"
|
||||
"@/dashboard/wivrn_head_symbolic.svg"
|
||||
} else {
|
||||
"dashboard/binary.svg"
|
||||
"@/dashboard/binary.svg"
|
||||
};
|
||||
|
||||
par.insert("device_name", ¶ms.alt_desc);
|
||||
@@ -788,9 +788,9 @@ impl View {
|
||||
par.insert(
|
||||
"volume_icon",
|
||||
if params.muted {
|
||||
"dashboard/volume_off.svg"
|
||||
"@/dashboard/volume_off.svg"
|
||||
} else {
|
||||
"dashboard/volume.svg"
|
||||
"@/dashboard/volume.svg"
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ use glam::Vec2;
|
||||
use std::rc::Rc;
|
||||
use strum::EnumProperty;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::{
|
||||
button::{ButtonClickEvent, ComponentButton},
|
||||
slider::ComponentSlider,
|
||||
@@ -157,7 +157,7 @@ impl View {
|
||||
pub fn new(params: Params) -> anyhow::Result<Self> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/bindings.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/bindings.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
@@ -228,7 +228,7 @@ impl View {
|
||||
parser_state: &mut self.parser_state,
|
||||
doc_params: &ParseDocumentParams {
|
||||
globals: self.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/bindings.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/bindings.xml"),
|
||||
extra: Default::default(),
|
||||
},
|
||||
layout,
|
||||
@@ -501,7 +501,7 @@ fn subpath_dropdown(
|
||||
mp.layout,
|
||||
parent,
|
||||
Vec2::new(32.0, 32.0),
|
||||
AssetPath::BuiltIn(&format!("dashboard/hand_{}.svg", side.as_ref())),
|
||||
AssetPathRef::BuiltIn(&format!("@/dashboard/hand_{}.svg", side.as_ref())),
|
||||
)?;
|
||||
|
||||
let current_text = current
|
||||
|
||||
@@ -7,7 +7,7 @@ use crate::{
|
||||
use std::{rc::Rc, sync::Arc};
|
||||
use wgui::color::WguiColorName;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
@@ -93,7 +93,7 @@ impl View {
|
||||
pub fn new(params: Params) -> anyhow::Result<Self> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/color_palettes.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/color_palettes.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use crate::{
|
||||
views::{ViewTrait, ViewUpdateParams},
|
||||
};
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
@@ -45,7 +45,7 @@ pub struct View {
|
||||
fn doc_params(globals: &WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/dialog_box.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/dialog_box.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ use crate::{
|
||||
use glam::Vec2;
|
||||
use std::path::PathBuf;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
@@ -59,7 +59,7 @@ pub struct View {
|
||||
fn doc_params(globals: &WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/download_file.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/download_file.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -92,7 +92,7 @@ impl ViewTrait for View {
|
||||
par.layout,
|
||||
self.id_loading_parent,
|
||||
Vec2::splat(32.0),
|
||||
AssetPath::BuiltIn("dashboard/check.svg"),
|
||||
AssetPathRef::BuiltIn("@/dashboard/check.svg"),
|
||||
)?;
|
||||
|
||||
// "Close window" button
|
||||
@@ -114,7 +114,7 @@ impl ViewTrait for View {
|
||||
par.layout,
|
||||
self.id_loading_parent,
|
||||
Vec2::splat(32.0),
|
||||
AssetPath::BuiltIn("dashboard/error.svg"),
|
||||
AssetPathRef::BuiltIn("@/dashboard/error.svg"),
|
||||
)?;
|
||||
}
|
||||
Task::Close => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::rc::Rc;
|
||||
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::{
|
||||
self,
|
||||
button::ComponentButton,
|
||||
@@ -311,7 +311,7 @@ impl ViewCommon {
|
||||
|
||||
fn get_placeholder_image(&mut self) -> anyhow::Result<&CustomGlyphData> {
|
||||
if self.img_placeholder.is_none() {
|
||||
let c = CustomGlyphData::from_assets(&self.globals, AssetPath::BuiltIn("dashboard/placeholder_cover.png"))?;
|
||||
let c = CustomGlyphData::from_assets(&self.globals, AssetPathRef::BuiltIn("dashboard/placeholder_cover.png"))?;
|
||||
self.img_placeholder = Some(c);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ use crate::{
|
||||
views::{ViewTrait, ViewUpdateParams, game_cover},
|
||||
};
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
@@ -82,7 +82,7 @@ impl View {
|
||||
pub fn new(params: Params) -> anyhow::Result<Self> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/game_launcher.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/game_launcher.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::{collections::HashMap, rc::Rc};
|
||||
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
@@ -92,7 +92,7 @@ impl View {
|
||||
pub fn new(params: Params) -> anyhow::Result<Self> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/game_list.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/game_list.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::rc::Rc;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
@@ -59,7 +59,7 @@ impl View {
|
||||
pub fn new(params: Params) -> anyhow::Result<Self> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/input_profiles.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/input_profiles.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ use crate::{
|
||||
};
|
||||
use anyhow::Context;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
color::WguiColorName,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
@@ -78,8 +78,8 @@ fn mount_resolution_button(
|
||||
t.insert(
|
||||
"sprite",
|
||||
match already_downloaded {
|
||||
true => "dashboard/check.svg",
|
||||
false => "dashboard/download.svg",
|
||||
true => "@/dashboard/check.svg",
|
||||
false => "@/dashboard/download.svg",
|
||||
},
|
||||
);
|
||||
let data = parser_state.realize_template(doc_params, "ResolutionButton", layout, parent_id, t)?;
|
||||
@@ -135,7 +135,7 @@ impl ViewTrait for View {
|
||||
fn doc_params(globals: &WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/remote_skymap_downloader.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/remote_skymap_downloader.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
@@ -264,17 +264,17 @@ impl View {
|
||||
entries: vec![
|
||||
views::dialog_box::ButtonEntry {
|
||||
content: Translation::from_translation_key("REMOVE"),
|
||||
icon: "dashboard/trash.svg",
|
||||
icon: "@/dashboard/trash.svg",
|
||||
action: ACTION_REMOVE,
|
||||
},
|
||||
views::dialog_box::ButtonEntry {
|
||||
content: Translation::from_translation_key("DOWNLOAD_AGAIN"),
|
||||
icon: "dashboard/download.svg",
|
||||
icon: "@/dashboard/download.svg",
|
||||
action: ACTION_DOWNLOAD_AGAIN,
|
||||
},
|
||||
views::dialog_box::ButtonEntry {
|
||||
content: Translation::from_translation_key("APPLY"),
|
||||
icon: "dashboard/check.svg",
|
||||
icon: "@/dashboard/check.svg",
|
||||
action: ACTION_APPLY,
|
||||
},
|
||||
],
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::rc::Rc;
|
||||
|
||||
use uuid::Uuid;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
layout::{Layout, WidgetID},
|
||||
@@ -178,7 +178,7 @@ impl View {
|
||||
) -> anyhow::Result<()> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: self.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/remote_skymap_list.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/remote_skymap_list.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
event::StyleSetRequest,
|
||||
globals::WguiGlobals,
|
||||
@@ -44,7 +44,7 @@ pub struct View {
|
||||
fn doc_params(globals: WguiGlobals) -> ParseDocumentParams<'static> {
|
||||
ParseDocumentParams {
|
||||
globals,
|
||||
path: AssetPath::BuiltIn("gui/view/running_games_list.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/running_games_list.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use anyhow::Context;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::ComponentButton,
|
||||
globals::WguiGlobals,
|
||||
i18n::Translation,
|
||||
@@ -89,7 +89,7 @@ impl View {
|
||||
pub fn new(params: Params) -> anyhow::Result<Self> {
|
||||
let doc_params = &ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/skymap_list.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/skymap_list.xml"),
|
||||
extra: Default::default(),
|
||||
};
|
||||
|
||||
@@ -162,7 +162,7 @@ impl View {
|
||||
if entry.is_downloaded(resolution).unwrap_or(false) {
|
||||
entries.push(views::dialog_box::ButtonEntry {
|
||||
content: Translation::from_raw_text(resolution.get_display_str()),
|
||||
icon: "dashboard/globe.svg",
|
||||
icon: "@/dashboard/globe.svg",
|
||||
action: resolution.get_display_str_simple(),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::button::{ButtonClickCallback, ComponentButton},
|
||||
event::EventAlterables,
|
||||
globals::WguiGlobals,
|
||||
@@ -37,7 +37,7 @@ pub struct View {
|
||||
fn doc_params(globals: &'_ WguiGlobals) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/view/skymap_list_cell.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/view/skymap_list_cell.xml"),
|
||||
extra: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,10 +15,10 @@ cd "$(dirname "$0")"
|
||||
bun install
|
||||
|
||||
# model URL:
|
||||
# https://huggingface.co/unsloth/gemma-4-26B-A4B-it-GGUF
|
||||
# https://huggingface.co/unsloth/gemma-4-31B-it-GGUF
|
||||
# you can specify your own if you want to.
|
||||
if [ -z "${MODEL}" ]; then
|
||||
export MODEL="gemma-4-26B-A4B-it-UD-Q3_K_M"
|
||||
export MODEL="gemma-4-31B-it-Q4_K_M"
|
||||
fi
|
||||
|
||||
if [ -z "${LLAMA_BASE_URL}" ]; then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<!-- TODO -->
|
||||
</elements>
|
||||
</layout>
|
||||
</layout>
|
||||
@@ -1,9 +1,9 @@
|
||||
<layout>
|
||||
<theme>
|
||||
<layout version="2">
|
||||
<vars>
|
||||
<var key="aqua1" value="#00AAFF" />
|
||||
<var key="aqua2" value="#00CCFF" />
|
||||
<var key="aqua3" value="#00FFFF" />
|
||||
</theme>
|
||||
</vars>
|
||||
|
||||
<elements>
|
||||
<rectangle width="750" height="550" color="#FFFFFF" flex_direction="column" overflow_y="scroll">
|
||||
@@ -33,7 +33,7 @@
|
||||
</rectangle>
|
||||
|
||||
<!-- Embed sprites -->
|
||||
<sprite width="64" height="64" src="raster.png" />
|
||||
<sprite width="64" height="64" src="@/raster.png" />
|
||||
</rectangle>
|
||||
<!-- 2/3 green rects -->
|
||||
<div flex_direction="column">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<sprite width="32" height="32" src="/usr/share/icons/nvtop.svg" />
|
||||
<sprite width="64" height="64" src="/usr/share/icons/nvtop.svg" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<macro name="rect"
|
||||
color="#000000aa"
|
||||
round="4" border="2"
|
||||
@@ -18,6 +18,8 @@
|
||||
</context_menu>
|
||||
</blueprint>
|
||||
|
||||
<include src="various_widgets_inc.xml"/>
|
||||
|
||||
<elements>
|
||||
<rectangle position="absolute" width="100%" height="100%" color="#1e3a3eee" />
|
||||
<div
|
||||
@@ -26,11 +28,33 @@
|
||||
flex_direction="column"
|
||||
overflow_y="scroll">
|
||||
|
||||
<ElementWithChildren>
|
||||
<label text="Foo bar"/>
|
||||
<BoxRight>
|
||||
<BoldText text="1"/>
|
||||
<BoldText text="2"/>
|
||||
<BoldText text="3"/>
|
||||
</BoxRight>
|
||||
</ElementWithChildren>
|
||||
|
||||
<rectangle macro="rect">
|
||||
<label text="Raw text" color="#FFFFFF" />
|
||||
<label translation="TESTBED.HELLO_WORLD" color="#FFFFFF" />
|
||||
|
||||
<div>
|
||||
<!-- find from expanded path -->
|
||||
<sprite width="64" height="64" src="@/raster.png">
|
||||
<label size="9" weight="bold" color="#000000" text="@/raster.png"/>
|
||||
</sprite>
|
||||
|
||||
<!-- find from upper dir -->
|
||||
<sprite width="64" height="64" src="../raster.png">
|
||||
<label size="9" weight="bold" color="#000000" text="../raster.png"/>
|
||||
</sprite>
|
||||
</div>
|
||||
</rectangle>
|
||||
|
||||
|
||||
<rectangle macro="rect">
|
||||
<label id="label_current_option" text="Click any of these buttons" size="20" weight="bold" />
|
||||
<div gap="4">
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<layout version="2">
|
||||
<!-- text -->
|
||||
<template name="BoldText">
|
||||
<label text="${text}" weight="bold"/>
|
||||
</template>
|
||||
|
||||
<template name="BoxRight">
|
||||
<div gap="16">
|
||||
<CHILDREN/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- children support! -->
|
||||
<template name="ElementWithChildren">
|
||||
<rectangle color="#2299FF" padding="8" align_self="start" round="4" border="2" border_color="#ffffff" flex_direction="column">
|
||||
<CHILDREN/>
|
||||
</rectangle>
|
||||
</template>
|
||||
</layout>
|
||||
@@ -1,24 +1,24 @@
|
||||
<layout>
|
||||
<theme>
|
||||
<layout version="2">
|
||||
<vars>
|
||||
<var key="width" value="426.666" />
|
||||
<var key="height" value="133.333" />
|
||||
</theme>
|
||||
</vars>
|
||||
<elements>
|
||||
<rectangle position="absolute" width="10000" height="10000" color="#112233"/>
|
||||
<div flex_direction="row">
|
||||
<div margin="16" gap="8" flex_direction="column" overflow_y="scroll" >
|
||||
<label text="640x200, looping"/>
|
||||
<Video src_builtin="video.ivf" width="~width" height="~height" looping="1"/>
|
||||
<Video src_builtin="@/video.ivf" width="~width" height="~height" looping="1"/>
|
||||
<label text="640x200, non-looping "/>
|
||||
<Video src_builtin="video.ivf" width="~width" height="~height" looping="0"/>
|
||||
<Video src_builtin="@/video.ivf" width="~width" height="~height" looping="0"/>
|
||||
</div>
|
||||
<div margin="16" gap="8" flex_direction="column" overflow_y="scroll" >
|
||||
<label text="640x200, looping, speed 2x"/>
|
||||
<Video src_builtin="video.ivf" width="~width" height="~height" looping="1" speed="2"/>
|
||||
<Video src_builtin="@/video.ivf" width="~width" height="~height" looping="1" speed="2"/>
|
||||
<label text="640x200, looping, speed 0.5x"/>
|
||||
<Video src_builtin="video.ivf" width="~width" height="~height" looping="1" speed="0.5"/>
|
||||
<Video src_builtin="@/video.ivf" width="~width" height="~height" looping="1" speed="0.5"/>
|
||||
<label text="640x200, looping, speed 4x"/>
|
||||
<Video src_builtin="video.ivf" width="~width" height="~height" looping="1" speed="4"/>
|
||||
<Video src_builtin="@/video.ivf" width="~width" height="~height" looping="1" speed="4"/>
|
||||
</div>
|
||||
</div>
|
||||
</elements>
|
||||
|
||||
@@ -6,12 +6,12 @@ use crate::{
|
||||
};
|
||||
use glam::Vec2;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
font_config::WguiFontConfig,
|
||||
globals::WguiGlobals,
|
||||
layout::{Layout, LayoutParams, LayoutUpdateParams},
|
||||
palette::WguiColorPalette,
|
||||
parser::{ParseDocumentParams, ParserState},
|
||||
parser::{ParseDocumentExtra, ParseDocumentParams, ParserState},
|
||||
};
|
||||
use wlx_common::locale::WayVRLangProvider;
|
||||
|
||||
@@ -25,9 +25,9 @@ pub struct TestbedAny {
|
||||
impl TestbedAny {
|
||||
pub fn new(assets: Box<assets::Asset>, name: &str) -> anyhow::Result<Self> {
|
||||
let path = if name.ends_with(".xml") {
|
||||
AssetPath::FileOrBuiltIn(name)
|
||||
AssetPathRef::FileOrBuiltIn(name)
|
||||
} else {
|
||||
AssetPath::BuiltIn(&format!("gui/{name}.xml"))
|
||||
AssetPathRef::BuiltIn(&format!("gui/{name}.xml"))
|
||||
};
|
||||
|
||||
let lang_provider = WayVRLangProvider::default();
|
||||
@@ -45,7 +45,10 @@ impl TestbedAny {
|
||||
&ParseDocumentParams {
|
||||
globals,
|
||||
path,
|
||||
extra: Default::default(),
|
||||
extra: ParseDocumentExtra {
|
||||
root_dir: Some(path.to_rc().strip_filename()),
|
||||
..Default::default()
|
||||
},
|
||||
},
|
||||
LayoutParams::default(),
|
||||
)?;
|
||||
|
||||
@@ -6,7 +6,7 @@ use crate::{
|
||||
};
|
||||
use glam::Vec2;
|
||||
use wgui::{
|
||||
assets::AssetPath,
|
||||
assets::AssetPathRef,
|
||||
components::{
|
||||
Component,
|
||||
button::{ButtonClickCallback, ComponentButton},
|
||||
@@ -80,7 +80,7 @@ impl TestbedGeneric {
|
||||
fn doc_params(globals: &'_ WguiGlobals, extra: ParseDocumentExtra) -> ParseDocumentParams<'_> {
|
||||
ParseDocumentParams {
|
||||
globals: globals.clone(),
|
||||
path: AssetPath::BuiltIn("gui/various_widgets.xml"),
|
||||
path: AssetPathRef::BuiltIn("gui/various_widgets.xml"),
|
||||
extra,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div interactable="0">
|
||||
<rectangle
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div width="192" height="192" padding="8">
|
||||
<rectangle
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<macro name="window_button" min_width="40" min_height="40" padding="4" align_items="center" />
|
||||
<macro name="window_button_icon" width="32" height="32" />
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
<label id="title" text="~title" margin_left="8" color="on_background" size="22" weight="bold" />
|
||||
<div gap="4">
|
||||
<Button macro="window_button" _release="::EditToggle">
|
||||
<sprite macro="window_button_icon" src="watch/edit.svg" />
|
||||
<sprite macro="window_button_icon" src="@/watch/edit.svg" />
|
||||
</Button>
|
||||
|
||||
<Button macro="window_button" _release="::DecorCloseWindow"
|
||||
color="danger" border_color="danger(rgb-mult-0.5)"
|
||||
hover_color="danger(rgb-add-0.2)" hover_border_color="danger">
|
||||
<sprite macro="window_button_icon" src="edit/close.svg" />
|
||||
<sprite macro="window_button_icon" src="@/edit/close.svg" />
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<macro name="button_style"
|
||||
margin="2" overflow="hidden" box_sizing="border_box" align_items="center" justify_content="center"
|
||||
border="2" round="50%" padding="8" gradient="vertical" tooltip_side="bottom" />
|
||||
@@ -35,30 +35,30 @@
|
||||
<rectangle padding="16" gap="8" round="32" color="background(opacity-0.9)" border="2" border_color="outline" justify_content="center">
|
||||
<div flex_direction="column" gap="8">
|
||||
<div flex_direction="row" gap="4">
|
||||
<TopButton sticky="0" id="top_lock" src="edit/lock_open.svg" tooltip="EDIT_MODE.LOCK_INTERACTION" press="::EditModeToggleLock" />
|
||||
<TopButton sticky="1" id="top_grab" src="edit/disable-grab.svg" tooltip="EDIT_MODE.DISABLE_GRAB" press="::EditModeToggleGrab" />
|
||||
<TopButton sticky="0" id="top_pos" src="edit/anchor.svg" tooltip="EDIT_MODE.POSITIONING" press="::EditModeTab pos" />
|
||||
<TopButton sticky="0" id="top_alpha" src="edit/fade.svg" tooltip="EDIT_MODE.OPACITY" press="::EditModeTab alpha" />
|
||||
<TopButton sticky="0" id="top_curve" src="edit/curve.svg" tooltip="EDIT_MODE.ADJUST_CURVATURE" press="::EditModeTab curve" />
|
||||
<TopButton sticky="0" id="top_stereo" src="edit/3d.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.TITLE" press="::EditModeTab stereo" />
|
||||
<TopButton sticky="0" id="top_mouse" src="edit/normal.svg" tooltip="EDIT_MODE.MOUSE.TITLE" press="::EditModeTab mouse" />
|
||||
<!-- TopButton sticky="0" id="top_move" src="edit/move-all.svg" tooltip="EDIT_MODE.MOVE_PRESS_AND_DRAG" / -->
|
||||
<!-- TopButton sticky="0" id="top_resize" src="edit/resize.svg" tooltip="EDIT_MODE.RESIZE_PRESS_AND_DRAG" / -->
|
||||
<TopButtonDanger src="edit/delete.svg" tooltip="EDIT_MODE.DELETE" release="::EditModeDelete" />
|
||||
<TopButton sticky="0" id="top_lock" src="@/edit/lock_open.svg" tooltip="EDIT_MODE.LOCK_INTERACTION" press="::EditModeToggleLock" />
|
||||
<TopButton sticky="1" id="top_grab" src="@/edit/disable-grab.svg" tooltip="EDIT_MODE.DISABLE_GRAB" press="::EditModeToggleGrab" />
|
||||
<TopButton sticky="0" id="top_pos" src="@/edit/anchor.svg" tooltip="EDIT_MODE.POSITIONING" press="::EditModeTab pos" />
|
||||
<TopButton sticky="0" id="top_alpha" src="@/edit/fade.svg" tooltip="EDIT_MODE.OPACITY" press="::EditModeTab alpha" />
|
||||
<TopButton sticky="0" id="top_curve" src="@/edit/curve.svg" tooltip="EDIT_MODE.ADJUST_CURVATURE" press="::EditModeTab curve" />
|
||||
<TopButton sticky="0" id="top_stereo" src="@/edit/3d.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.TITLE" press="::EditModeTab stereo" />
|
||||
<TopButton sticky="0" id="top_mouse" src="@/edit/normal.svg" tooltip="EDIT_MODE.MOUSE.TITLE" press="::EditModeTab mouse" />
|
||||
<!-- TopButton sticky="0" id="top_move" src="@/edit/move-all.svg" tooltip="EDIT_MODE.MOVE_PRESS_AND_DRAG" / -->
|
||||
<!-- TopButton sticky="0" id="top_resize" src="@/edit/resize.svg" tooltip="EDIT_MODE.RESIZE_PRESS_AND_DRAG" / -->
|
||||
<TopButtonDanger src="@/edit/delete.svg" tooltip="EDIT_MODE.DELETE" release="::EditModeDelete" />
|
||||
<div width="8" height="100%" />
|
||||
<TopButtonTertiary src="edit/check.svg" tooltip="EDIT_MODE.LEAVE" press="::EditToggle" />
|
||||
<TopButtonTertiary src="@/edit/check.svg" tooltip="EDIT_MODE.LEAVE" press="::EditToggle" />
|
||||
</div>
|
||||
<div id="tab_none" display="none" height="100">
|
||||
<label align="center" translation="EDIT_MODE.HINT_POINT_WINDOW" />
|
||||
</div>
|
||||
<div id="tab_pos" display="none" height="100" flex_direction="column">
|
||||
<div padding="8" gap="8" justify_content="center" align_items="center">
|
||||
<PosButton id="pos_static" src="edit/pin.svg" tooltip="EDIT_MODE.POS_STATIC" press="::EditModeSetPos static" />
|
||||
<PosButton id="pos_anchored" src="edit/anchor.svg" tooltip="EDIT_MODE.POS_ANCHORED" press="::EditModeSetPos anchored" />
|
||||
<PosButton id="pos_floating" src="edit/float.svg" tooltip="EDIT_MODE.POS_FLOATING" press="::EditModeSetPos floating" />
|
||||
<PosButton id="pos_hmd" src="watch/hmd.svg" tooltip="EDIT_MODE.POS_HMD" press="::EditModeSetPos hmd" />
|
||||
<PosButton id="pos_hand_l" src="watch/controller_l.svg" tooltip="EDIT_MODE.POS_HAND_L" press="::EditModeSetPos hand_l" />
|
||||
<PosButton id="pos_hand_r" src="watch/controller_r.svg" tooltip="EDIT_MODE.POS_HAND_R" press="::EditModeSetPos hand_r" />
|
||||
<PosButton id="pos_static" src="@/edit/pin.svg" tooltip="EDIT_MODE.POS_STATIC" press="::EditModeSetPos static" />
|
||||
<PosButton id="pos_anchored" src="@/edit/anchor.svg" tooltip="EDIT_MODE.POS_ANCHORED" press="::EditModeSetPos anchored" />
|
||||
<PosButton id="pos_floating" src="@/edit/float.svg" tooltip="EDIT_MODE.POS_FLOATING" press="::EditModeSetPos floating" />
|
||||
<PosButton id="pos_hmd" src="@/watch/hmd.svg" tooltip="EDIT_MODE.POS_HMD" press="::EditModeSetPos hmd" />
|
||||
<PosButton id="pos_hand_l" src="@/watch/controller_l.svg" tooltip="EDIT_MODE.POS_HAND_L" press="::EditModeSetPos hand_l" />
|
||||
<PosButton id="pos_hand_r" src="@/watch/controller_r.svg" tooltip="EDIT_MODE.POS_HAND_R" press="::EditModeSetPos hand_r" />
|
||||
</div>
|
||||
<div flex_direction="row" gap="8" justify_content="center" align_items="center">
|
||||
<div id="pos_interpolation" gap="6">
|
||||
@@ -74,11 +74,11 @@
|
||||
</div>
|
||||
<div id="tab_stereo" display="none" height="100" flex_direction="column">
|
||||
<div padding="8" gap="8" justify_content="center" align_items="center">
|
||||
<PosButton id="stereo_none" src="edit/close.svg" tooltip="DISABLED" press="::EditModeSetStereo none" />
|
||||
<PosButton id="stereo_leftright" src="edit/3d_leftright.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.SPLIT_LEFT_RIGHT" press="::EditModeSetStereo leftright" />
|
||||
<PosButton id="stereo_rightleft" src="edit/3d_rightleft.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.SPLIT_RIGHT_LEFT" press="::EditModeSetStereo rightleft" />
|
||||
<PosButton id="stereo_topbottom" src="edit/3d_topbottom.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.SPLIT_TOP_BOTTOM" press="::EditModeSetStereo topbottom" />
|
||||
<PosButton id="stereo_bottomtop" src="edit/3d_bottomtop.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.SPLIT_BOTTOM_TOP" press="::EditModeSetStereo bottomtop" />
|
||||
<PosButton id="stereo_none" src="@/edit/close.svg" tooltip="DISABLED" press="::EditModeSetStereo none" />
|
||||
<PosButton id="stereo_leftright" src="@/edit/3d_leftright.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.SPLIT_LEFT_RIGHT" press="::EditModeSetStereo leftright" />
|
||||
<PosButton id="stereo_rightleft" src="@/edit/3d_rightleft.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.SPLIT_RIGHT_LEFT" press="::EditModeSetStereo rightleft" />
|
||||
<PosButton id="stereo_topbottom" src="@/edit/3d_topbottom.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.SPLIT_TOP_BOTTOM" press="::EditModeSetStereo topbottom" />
|
||||
<PosButton id="stereo_bottomtop" src="@/edit/3d_bottomtop.svg" tooltip="EDIT_MODE.STEREO_3D_MODE.SPLIT_BOTTOM_TOP" press="::EditModeSetStereo bottomtop" />
|
||||
</div>
|
||||
<div justify_content="center" align_items="center" flex_direction="row" gap="16">
|
||||
<CheckBox id="stereo_full_frame_box" translation="EDIT_MODE.STEREO_3D_MODE.FULL_FRAME" tooltip_side="top" />
|
||||
@@ -87,15 +87,15 @@
|
||||
</div>
|
||||
<div id="tab_mouse" display="none" height="100" flex_direction="column">
|
||||
<div padding_left="8" padding_right="8" gap="8" justify_content="center" align_items="center">
|
||||
<PosButton id="mouse_default" src="edit/close.svg" tooltip="DEFAULT" press="::EditModeSetMouse default" />
|
||||
<PosButton id="mouse_normal" src="edit/normal.svg" tooltip="EDIT_MODE.MOUSE.NORMAL" press="::EditModeSetMouse normal" />
|
||||
<PosButton id="mouse_rotate90" src="edit/rotate90.svg" tooltip="EDIT_MODE.MOUSE.ROTATE90" press="::EditModeSetMouse rotate90" />
|
||||
<PosButton id="mouse_rotate180" src="edit/rotate180.svg" tooltip="EDIT_MODE.MOUSE.ROTATE180" press="::EditModeSetMouse rotate180" />
|
||||
<PosButton id="mouse_rotate270" src="edit/rotate270.svg" tooltip="EDIT_MODE.MOUSE.ROTATE270" press="::EditModeSetMouse rotate270" />
|
||||
<PosButton id="mouse_flipped" src="edit/flipped.svg" tooltip="EDIT_MODE.MOUSE.FLIPPED" press="::EditModeSetMouse flipped" />
|
||||
<PosButton id="mouse_flip90" src="edit/flip90.svg" tooltip="EDIT_MODE.MOUSE.FLIP90" press="::EditModeSetMouse flip90" />
|
||||
<PosButton id="mouse_flip180" src="edit/flip180.svg" tooltip="EDIT_MODE.MOUSE.FLIP180" press="::EditModeSetMouse flip180" />
|
||||
<PosButton id="mouse_flip270" src="edit/flip270.svg" tooltip="EDIT_MODE.MOUSE.FLIP270" press="::EditModeSetMouse flip270" />
|
||||
<PosButton id="mouse_default" src="@/edit/close.svg" tooltip="DEFAULT" press="::EditModeSetMouse default" />
|
||||
<PosButton id="mouse_normal" src="@/edit/normal.svg" tooltip="EDIT_MODE.MOUSE.NORMAL" press="::EditModeSetMouse normal" />
|
||||
<PosButton id="mouse_rotate90" src="@/edit/rotate90.svg" tooltip="EDIT_MODE.MOUSE.ROTATE90" press="::EditModeSetMouse rotate90" />
|
||||
<PosButton id="mouse_rotate180" src="@/edit/rotate180.svg" tooltip="EDIT_MODE.MOUSE.ROTATE180" press="::EditModeSetMouse rotate180" />
|
||||
<PosButton id="mouse_rotate270" src="@/edit/rotate270.svg" tooltip="EDIT_MODE.MOUSE.ROTATE270" press="::EditModeSetMouse rotate270" />
|
||||
<PosButton id="mouse_flipped" src="@/edit/flipped.svg" tooltip="EDIT_MODE.MOUSE.FLIPPED" press="::EditModeSetMouse flipped" />
|
||||
<PosButton id="mouse_flip90" src="@/edit/flip90.svg" tooltip="EDIT_MODE.MOUSE.FLIP90" press="::EditModeSetMouse flip90" />
|
||||
<PosButton id="mouse_flip180" src="@/edit/flip180.svg" tooltip="EDIT_MODE.MOUSE.FLIP180" press="::EditModeSetMouse flip180" />
|
||||
<PosButton id="mouse_flip270" src="@/edit/flip270.svg" tooltip="EDIT_MODE.MOUSE.FLIP270" press="::EditModeSetMouse flip270" />
|
||||
</div>
|
||||
<div justify_content="center" align_items="center">
|
||||
<label align="center" translation="EDIT_MODE.MOUSE.WRONG_SCREEN_SELECTION_HELP" />
|
||||
@@ -123,7 +123,7 @@
|
||||
<div width="100%" justify_content="end" flex_direction="row">
|
||||
<div>
|
||||
<Button id="resize_corner" macro="button_style" tooltip="EDIT_MODE.RESIZE_CORNER" tooltip_side="left" _press="::EditModeResizeStart" _release="::EditModeResizeStop">
|
||||
<sprite width="48" height="48" src="edit/resize-corner.svg" />
|
||||
<sprite width="48" height="48" src="@/edit/resize-corner.svg" />
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<elements>
|
||||
<div interactable="0">
|
||||
<rectangle
|
||||
@@ -10,15 +10,15 @@
|
||||
|
||||
<div flex_direction="row" padding="8" justify_content="space_between">
|
||||
<div flex_direction="column" align_items="center" gap="8" max_width="160" min_width="160">
|
||||
<sprite src="grab-help/controller-grip-joy.svg" min_width="128" min_height="128" max_width="128" max_height="128" flex_grow="1" color="primary" />
|
||||
<sprite src="@/grab-help/controller-grip-joy.svg" min_width="128" min_height="128" max_width="128" max_height="128" flex_grow="1" color="primary" />
|
||||
<label wrap="1" size="25" padding_left="16" padding_right="16" translation="GRAB.ADJUST_DISTANCE" align="center" />
|
||||
</div>
|
||||
<div flex_direction="column" align_items="center" gap="8" max_width="160" min_width="160">
|
||||
<sprite src="grab-help/controller-grip-trigger-joy.svg" min_width="128" min_height="128" max_width="128" max_height="128" flex_grow="1" color="primary" />
|
||||
<sprite src="@/grab-help/controller-grip-trigger-joy.svg" min_width="128" min_height="128" max_width="128" max_height="128" flex_grow="1" color="primary" />
|
||||
<label wrap="1" size="25" padding_left="16" padding_right="16" translation="GRAB.ADJUST_SIZE" align="center" />
|
||||
</div>
|
||||
<div flex_direction="column" align_items="center" gap="8" max_width="160" min_width="160">
|
||||
<sprite src="grab-help/controller-grip-b.svg" min_width="128" min_height="128" max_width="128" max_height="128" flex_grow="1" color="primary" />
|
||||
<sprite src="@/grab-help/controller-grip-b.svg" min_width="128" min_height="128" max_width="128" max_height="128" flex_grow="1" color="primary" />
|
||||
<label wrap="1" size="25" padding_left="16" padding_right="16" translation="GRAB.UNRESTRICTED_MOVEMENT" align="center" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout version="2">
|
||||
<macro name="keycap_rect"
|
||||
margin="2" width="100%" overflow="hidden" box_sizing="border_box"
|
||||
border_color="outline" border="2" round="6" color="background_variant" color2="background" gradient="vertical"
|
||||
@@ -13,9 +13,9 @@
|
||||
width="${width}" height="${height}" min_width="${width}" min_height="${height}" max_width="${width}" max_height="${height}"
|
||||
/>
|
||||
|
||||
<theme>
|
||||
<vars>
|
||||
<var key="text_size" value="20" />
|
||||
</theme>
|
||||
</vars>
|
||||
|
||||
<template name="VerticalSeparator">
|
||||
<rectangle width="2" height="100%" color="primary" />
|
||||
@@ -28,7 +28,7 @@
|
||||
<template name="KeySpecial">
|
||||
<div macro="keycap_div">
|
||||
<rectangle id="${id}" macro="keycap_rect">
|
||||
<sprite color="on_background" width="24" height="24" src="keyboard/${text}.svg" />
|
||||
<sprite color="on_background" width="24" height="24" src="@/keyboard/${text}.svg" />
|
||||
</rectangle>
|
||||
</div>
|
||||
</template>
|
||||
@@ -127,7 +127,7 @@
|
||||
<!-- A screen with a shortened connector name, e.g. "H1" for HDMI-A-1 or "D2" for DP-2 -->
|
||||
<template name="Screen">
|
||||
<Button macro="button_style" id="overlay_${idx}" tooltip_str="${name}" _context_name="${name}" _press_left="::ContextMenuOpen menu_screen" _press_right="::OverlayToggle ${name}">
|
||||
<sprite width="38" height="38" src_builtin="edit/screen.svg" />
|
||||
<sprite width="38" height="38" src_builtin="@/edit/screen.svg" />
|
||||
<div position="absolute" margin_top="-7" margin_left="-1">
|
||||
<label text="${display}" size="~text_size" weight="bold" parent_color="background" />
|
||||
</div>
|
||||
@@ -160,7 +160,7 @@
|
||||
|
||||
<template name="Mirror">
|
||||
<Button macro="button_style" id="overlay_${idx}" tooltip_str="${name}" _context_name="${name}" _press_left="::ContextMenuOpen menu_mirror" _press_right="::OverlayToggle ${name}">
|
||||
<sprite width="38" height="38" src_builtin="edit/mirror.svg" />
|
||||
<sprite width="38" height="38" src_builtin="@/edit/mirror.svg" />
|
||||
<div position="absolute" margin_top="5" margin_left="13">
|
||||
<label text="${display}" size="20" weight="bold" parent_color="background" />
|
||||
</div>
|
||||
@@ -170,7 +170,7 @@
|
||||
<!-- mirror with a different icon -->
|
||||
<template name="Passthru">
|
||||
<Button macro="button_style" id="overlay_${idx}" tooltip_str="${name}" _context_name="${name}" _press_left="::ContextMenuOpen menu_mirror" _press_right="::OverlayToggle ${name}">
|
||||
<sprite width="38" height="38" src_builtin="icons/landscape.svg" />
|
||||
<sprite width="38" height="38" src_builtin="@/icons/landscape.svg" />
|
||||
<div position="absolute" margin_top="5" margin_left="13">
|
||||
<label text="${display}" size="20" weight="bold" parent_color="background" />
|
||||
</div>
|
||||
@@ -200,7 +200,7 @@
|
||||
|
||||
<template name="Set">
|
||||
<Button macro="button_style" id="set_${idx}" _press="::SetSwitch ${idx}" tooltip="WATCH.SWITCH_TO_SET" tooltip_side="bottom">
|
||||
<sprite width="38" height="38" src_builtin="watch/set2.svg" />
|
||||
<sprite width="38" height="38" src_builtin="@/watch/set2.svg" />
|
||||
<div position="absolute" margin_top="10" margin_left="-7">
|
||||
<label text="${display}" size="20" weight="bold" parent_color="background" />
|
||||
</div>
|
||||
@@ -220,7 +220,7 @@
|
||||
<rectangle macro="bg_rect" padding="10" align_items="center" justify_content="space_between">
|
||||
<div gap="10">
|
||||
<Button macro="button_style" id="btn_dashboard" _press="::DashToggle">
|
||||
<sprite width="38" height="38" src="watch/wayvr_dashboard_mono.svg" />
|
||||
<sprite width="38" height="38" src="@/watch/wayvr_dashboard_mono.svg" />
|
||||
</Button>
|
||||
<VerticalSeparator />
|
||||
<div id="panels_root" gap="6">
|
||||
@@ -231,7 +231,7 @@
|
||||
</div>
|
||||
<div id="tray_root" flex_direction="row" gap="10">
|
||||
<Button macro="button_style" _press="::ContextMenuOpen menu_burger">
|
||||
<sprite width="38" height="38" src_builtin="keyboard/burger.svg" />
|
||||
<sprite width="38" height="38" src_builtin="@/keyboard/burger.svg" />
|
||||
</Button>
|
||||
|
||||
<VerticalSeparator />
|
||||
|
||||
Loaded 100 of 148 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user