Compare commits
198 Commits
2.0.0-alph
...
master
Author | SHA1 | Date |
---|---|---|
LordGrey | cd22d4454d | |
dependabot[bot] | 33722c9a09 | |
dependabot[bot] | 41bffecc0b | |
dependabot[bot] | f49e1a2c0b | |
LordGrey | 08dc59c885 | |
LordGrey | 48cea4ad9b | |
LordGrey | 7909997398 | |
LordGrey | a5bb7e905b | |
LordGrey | d1879c2e39 | |
LordGrey | c0dc08b0c0 | |
LordGrey | 5bf25c98ad | |
LordGrey | da275dd448 | |
Paulchen-Panther | 1257cfff70 | |
LordGrey | 42c98da470 | |
LordGrey | 64642a4457 | |
Christoph Pohl | af1a31b842 | |
dependabot[bot] | a7ce0f8a4c | |
Paulchen-Panther | 00ce3ff089 | |
Paulchen-Panther | 54d03b8065 | |
lsellens | 2a17de37f1 | |
LordGrey | 5535b884bf | |
Hyperion-Bot | 79b31e16e0 | |
dependabot[bot] | e3496eb4dc | |
Paulchen-Panther | 08e7c7d8c2 | |
Paulchen-Panther | e0060eb406 | |
dependabot[bot] | 2f09f9a0b8 | |
Portisch | 85eb62f314 | |
Hyperion-Bot | c73f8623b8 | |
Harald | e59e456b00 | |
Rastafabisch | a393f6211c | |
LordGrey | b2fcea3bbd | |
LordGrey | 24a00e3b0b | |
Hyperion-Bot | bfba0d6137 | |
Hyperion-Bot | fd82f58269 | |
Michael Rochelle | acdf733936 | |
LordGrey | a1bfa63343 | |
Hyperion-Bot | 21c5c6a122 | |
LordGrey | 1ae37d151e | |
Hyperion-Bot | 093361d3e4 | |
Hyperion-Bot | f4391a512b | |
Hyperion-Bot | f062aa71c5 | |
Hyperion-Bot | 6251b58ff9 | |
Hyperion-Bot | dea0a17df4 | |
Hyperion-Bot | 22fa008c4b | |
LordGrey | bf418686e3 | |
LordGrey | a57bcbc2b8 | |
LordGrey | ef7ceb0bbf | |
dependabot[bot] | f327b5063e | |
LordGrey | fa7a5b6b56 | |
LordGrey | f665f1e1b6 | |
dependabot[bot] | e3a82b2890 | |
dependabot[bot] | 09d1ef4883 | |
LordGrey | 6fa7bab6f7 | |
LordGrey | 1189f86c1a | |
LordGrey | 2217135336 | |
LordGrey | 10b755b2ec | |
LordGrey | c4e681f6b3 | |
LordGrey | b109703189 | |
LordGrey | a2db590d2a | |
Hyperion-Bot | 46f996310d | |
Hyperion-Bot | dc8dc566e0 | |
Hyperion-Bot | 4d0c3723de | |
Hyperion-Bot | 29db3ba593 | |
Hyperion-Bot | 6b17123259 | |
Hyperion-Bot | 5098a7a11e | |
Hyperion-Bot | 905515c46f | |
Hyperion-Bot | 1d12fe45ca | |
Hyperion-Bot | 1127087b52 | |
LordGrey | 547a976000 | |
xkns | 7a31e2bb6d | |
LordGrey | 80aafa22ec | |
dependabot[bot] | 1848744e6e | |
dependabot[bot] | 97e5e01a27 | |
dependabot[bot] | b1fe042a9f | |
dependabot[bot] | 0ea1522000 | |
LordGrey | 06091b0786 | |
dependabot[bot] | 49b83abcdf | |
LordGrey | 9df21b9ddd | |
LordGrey | e8fc8a9855 | |
LordGrey | cb76afa4d9 | |
LordGrey | 9d23d9e2d6 | |
dependabot[bot] | d219dac36c | |
LordGrey | 95e53b4720 | |
LordGrey | 9f6704118e | |
Drzony | 2008e2c3d7 | |
xkns | 2fb2fc9dd7 | |
LordGrey | a2266b177f | |
dependabot[bot] | e17ce6cd4e | |
dependabot[bot] | cef70af78d | |
dependabot[bot] | ec553985b9 | |
LordGrey | c7a1fc6b32 | |
LordGrey | 8000c3e8b7 | |
tuxuser | abde114dc4 | |
dependabot[bot] | c47a3054d2 | |
dependabot[bot] | 19711f71fa | |
dependabot[bot] | 6946794680 | |
dependabot[bot] | 975f5cc309 | |
dependabot[bot] | e25d0a61a6 | |
James | de41f014ec | |
Hyperion-Bot | a608c336dc | |
LordGrey | 359618a4ee | |
LordGrey | 400fa78679 | |
LordGrey | ec496ed457 | |
tuxuser | 7c76322215 | |
LordGrey | fdab2586a5 | |
LordGrey | 5dc696b8dc | |
Hyperion-Bot | 858e2bbff0 | |
Hyperion-Bot | f0c0262dec | |
LordGrey | ec71772f98 | |
Hyperion-Bot | 2ac8f30bb1 | |
Hyperion-Bot | 62990974f5 | |
LordGrey | 8f65f34247 | |
imgbot[bot] | 988ea97346 | |
Hyperion-Bot | a4b7490ed1 | |
Hyperion-Bot | 3dc81e1a0c | |
Hyperion-Bot | 1311dc9d87 | |
Hyperion-Bot | 3a15f35740 | |
Hyperion-Bot | c7afa35127 | |
Hyperion-Bot | 83c5b7fb4a | |
Hyperion-Bot | d5e796208b | |
Hyperion-Bot | e055fb9e15 | |
LordGrey | e9936e131b | |
LordGrey | 3ef4ebc1a4 | |
Paulchen-Panther | f27010088d | |
Aaron Godfrey | f721240e58 | |
ShalokShalom | 613ae7c922 | |
Hyperion-Bot | 7f174b2872 | |
LordGrey | 2388044a93 | |
Markus | addff6f7ef | |
LordGrey | f32db90c12 | |
LordGrey | 62829d9bf8 | |
Paulchen Panther | c75c98e252 | |
LordGrey | 3e8c6f3b25 | |
Paulchen Panther | f9a5772aa5 | |
Hyperion-Bot | 4c472d50ca | |
Paulchen Panther | 15015a4257 | |
LordGrey | 320ec00108 | |
LordGrey | 5cd3881067 | |
tuxuser | 14b6a114bb | |
LordGrey | 160c5d0b3a | |
Hyperion-Bot | 0a3df596cf | |
Hyperion-Bot | 51a1044787 | |
Hyperion-Bot | f2d0857798 | |
Hyperion-Bot | 518e15a129 | |
Hyperion-Bot | a14d9d1af5 | |
Hyperion-Bot | 7651c71b63 | |
LordGrey | 5078688dc8 | |
Paulchen Panther | 9e4b58d5c6 | |
Paulchen Panther | da64ab58d5 | |
Markus | a8342b4a6a | |
LordGrey | 2efc03b612 | |
Markus | 98654e48f6 | |
LordGrey | 2f573a117f | |
Jamie Burchell | c38ec60208 | |
LordGrey | fcd0fb0c52 | |
LordGrey | 442fab9c59 | |
Paulchen Panther | a0d4efc10d | |
LordGrey | 17582ac38a | |
Markus | 7840317cc0 | |
LordGrey | e3b494428a | |
Markus | 926a58de9c | |
Markus | df149583d3 | |
LordGrey | 72d99a1121 | |
LordGrey | 7311c3e424 | |
Hyperion-Bot | f156f52123 | |
Hyperion-Bot | c7e91c8c6d | |
Hyperion-Bot | a5f970b975 | |
LordGrey | d395e0a3b1 | |
Hyperion-Bot | ac941aebe1 | |
Hyperion-Bot | 06d72adbca | |
Hyperion-Bot | 6181360785 | |
Hyperion-Bot | d8cb6b5479 | |
Hyperion-Bot | fbf6886dfe | |
Hyperion-Bot | 4c7ce6e509 | |
Hyperion-Bot | 7d33d93b32 | |
Hyperion-Bot | 3c361cb2a2 | |
Markus | dd3229d582 | |
LordGrey | 80ec037832 | |
LordGrey | ad293b2fb6 | |
Markus | b33466d392 | |
LordGrey | 67280b8566 | |
LordGrey | 25d79a9f3f | |
LordGrey | 3b1ca20b10 | |
LordGrey | b8bb1adbba | |
LordGrey | b0c529c05d | |
LordGrey | 954112a88e | |
Markus | ba32b875ab | |
LordGrey | e51a42dc14 | |
Markus | 8b1267d059 | |
Markus | 3761ff47d2 | |
Markus | a1dee08195 | |
LordGrey | c9a7258160 | |
LordGrey | 532ac7e330 | |
Markus | ac1dad77e3 | |
Markus | 23470ac90a | |
Markus | 084e28f0ca | |
Markus | 788e843846 | |
LordGrey | 4db8afda87 |
|
@ -3,6 +3,7 @@
|
|||
# detect CI
|
||||
if [ "$HOME" != "" ]; then
|
||||
# GitHub Actions
|
||||
echo "Github Actions detected"
|
||||
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
||||
CI_BUILD_DIR="$GITHUB_WORKSPACE"
|
||||
else
|
||||
|
@ -20,8 +21,11 @@ else
|
|||
PLATFORM=${PLATFORM}-dev
|
||||
fi
|
||||
|
||||
echo "Platform: ${PLATFORM}, build type: ${BUILD_TYPE}, CI_NAME: $CI_NAME, docker image: ${DOCKER_IMAGE}, docker type: ${DOCKER_TAG}"
|
||||
|
||||
# Build the package on osx or linux
|
||||
if [[ "$CI_NAME" == 'osx' || "$CI_NAME" == 'darwin' ]]; then
|
||||
echo "Compile Hyperion on OSX or Darwin"
|
||||
# compile prepare
|
||||
mkdir build || exit 1
|
||||
cd build
|
||||
|
@ -31,12 +35,13 @@ if [[ "$CI_NAME" == 'osx' || "$CI_NAME" == 'darwin' ]]; then
|
|||
exit 0;
|
||||
exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
|
||||
elif [[ $CI_NAME == *"mingw64_nt"* || "$CI_NAME" == 'windows_nt' ]]; then
|
||||
echo "Compile Hyperion on Windows"
|
||||
# compile prepare
|
||||
echo "Number of Cores $NUMBER_OF_PROCESSORS"
|
||||
mkdir build || exit 1
|
||||
cd build
|
||||
cmake -G "Visual Studio 16 2019" -A x64 -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ../ || exit 2
|
||||
cmake --build . --target package --config Release -- -nologo -v:m -maxcpucount || exit 3
|
||||
cmake -G "Visual Studio 17 2022" -A x64 -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE="Release" ../ || exit 2
|
||||
cmake --build . --target package --config "Release" -- -nologo -v:m -maxcpucount || exit 3
|
||||
exit 0;
|
||||
exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
|
||||
elif [[ "$CI_NAME" == 'linux' ]]; then
|
||||
|
|
76
.codedocs
76
.codedocs
|
@ -1,76 +0,0 @@
|
|||
# Hyperion.NG .codedocs Configuration File
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# CodeDocs Configuration
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# Include the Doxygen configuration from another file.
|
||||
# The file must be a relative path with respect to the root of the repository.
|
||||
|
||||
DOXYFILE =
|
||||
|
||||
# Specify external repository to link documentation with.
|
||||
# This is similar to Doxygen's TAGFILES option, but will automatically link to
|
||||
# tags of other repositories already using CodeDocs. List each repository to
|
||||
# link with by giving its location in the form of owner/repository.
|
||||
# For example:
|
||||
# TAGLINKS = doxygen/doxygen CodeDocs/osg
|
||||
# Note: these repositories must already be built on CodeDocs.
|
||||
|
||||
TAGLINKS =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Doxygen Configuration
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# Doxygen configuration may also be placed in this file.
|
||||
# Currently, the following Doxygen configuration options are available. Refer
|
||||
# to http://doxygen.org/manual/config.html for detailed explanation of the
|
||||
# options. To request support for more options, contact support@codedocs.xyz.
|
||||
#
|
||||
# ABBREVIATE_BRIEF =
|
||||
# ALIASES =
|
||||
# ALPHABETICAL_INDEX =
|
||||
# ALWAYS_DETAILED_SEC =
|
||||
# CASE_SENSE_NAMES =
|
||||
# CLASS_DIAGRAMS =
|
||||
# DISABLE_INDEX =
|
||||
# DISTRIBUTE_GROUP_DOC =
|
||||
# EXAMPLE_PATH =
|
||||
EXCLUDE = .ci/ \
|
||||
assets/ \
|
||||
bin/
|
||||
config/ \
|
||||
effects/ \
|
||||
test/ \
|
||||
# EXCLUDE_PATTERNS =
|
||||
# EXCLUDE_SYMBOLS =
|
||||
# EXTENSION_MAPPING =
|
||||
# EXTRACT_LOCAL_CLASSES =
|
||||
# FILE_PATTERNS =
|
||||
# GENERATE_TAGFILE =
|
||||
# GENERATE_TREEVIEW =
|
||||
# HIDE_COMPOUND_REFERENCE =
|
||||
# HIDE_SCOPE_NAMES =
|
||||
# HIDE_UNDOC_CLASSES =
|
||||
# HIDE_UNDOC_MEMBERS =
|
||||
# HTML_TIMESTAMP =
|
||||
# INLINE_GROUPED_CLASSES =
|
||||
# INPUT_ENCODING =
|
||||
# INTERNAL_DOCS =
|
||||
# OPTIMIZE_OUTPUT_FOR_C =
|
||||
PROJECT_BRIEF = "The successor to Hyperion aka Hyperion Next Generation"
|
||||
PROJECT_NAME = "Hyperion.NG"
|
||||
# PROJECT_NUMBER =
|
||||
# SHORT_NAMES =
|
||||
# SHOW_FILES =
|
||||
# SHOW_INCLUDE_FILES =
|
||||
# SHOW_NAMESPACES =
|
||||
# SORT_BRIEF_DOCS =
|
||||
# SORT_BY_SCOPE_NAME =
|
||||
# SORT_MEMBER_DOCS =
|
||||
# STRICT_PROTO_MATCHING =
|
||||
# TYPEDEF_HIDES_STRUCT =
|
||||
USE_MDFILE_AS_MAINPAGE = README.md
|
||||
# VERBATIM_HEADERS =
|
||||
#
|
|
@ -16,5 +16,5 @@
|
|||
},
|
||||
},
|
||||
"forwardPorts": [8090, 8092],
|
||||
"postCreateCommand": "git submodule update --recursive --init && sudo apt-get update && sudo apt-get install -y git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-image0-dev libxcb-util0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libssl-dev zlib1g-dev"
|
||||
"postCreateCommand": "git submodule update --recursive --init && sudo apt-get update && sudo apt-get install -y git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-image0-dev libxcb-util0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libssl-dev"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
name: "CodeQL config"
|
||||
paths-ignore:
|
||||
- 'dependencies/external/'
|
||||
- 'assets/webconfig/js/lib'
|
|
@ -0,0 +1,7 @@
|
|||
version: 2
|
||||
updates:
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
|
@ -1,17 +1,20 @@
|
|||
PullRequest:
|
||||
opened: |
|
||||
Hello @$AUTHOR :wave:
|
||||
Hello @$AUTHOR :wave:
|
||||
|
||||
I'm your friendly neighborhood bot and would like to say thank you for
|
||||
submitting a pull request to Hyperion!
|
||||
I'm the Hyperion Project Bot and I want to thank you for
|
||||
contributing to Hyperion with your pull requests!
|
||||
|
||||
So that you and other users can test your changes more quickly,
|
||||
you can find your workflow artifacts [here](https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID).
|
||||
To help you and other users test your pull requests faster,
|
||||
I'll create a link for you to your workflow artifacts.
|
||||
|
||||
If you make changes to your PR, i create a new link to your workflow artifacts.
|
||||
:link: https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID
|
||||
|
||||
Of course, if you make changes to your PR, I will create a new link.
|
||||
|
||||
Best regards,
|
||||
Hyperion-Project
|
||||
Hyperion Project
|
||||
synchronize: |
|
||||
[Here](https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID) is your new link to your workflow artifacts.
|
||||
|
||||
Hey @$AUTHOR I created a new link to your workflow artifacts:
|
||||
:link: https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID
|
||||
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
{
|
||||
"include":
|
||||
[
|
||||
{
|
||||
"distribution": "Bionic",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg, libcec4",
|
||||
"description": "Ubuntu 18.04 (Bionic Beaver) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Focal",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec4",
|
||||
"description": "Ubuntu 20.04 (Focal Fossa) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Groovy",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
|
||||
"description": "Ubuntu 20.10 (Groovy Gorilla) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Hirsute",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
|
||||
"description": "Ubuntu 21.04 (Hirsute Hippo) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Impish",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
|
||||
"description": "Ubuntu 21.10 (Impish Indri) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Stretch",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, zlib1g-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg0, libcec4",
|
||||
"description": "Debian 9.x (Stretch) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Stretch",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg0, libcec4",
|
||||
"description":"Debian 9.x (Stretch) (armhf)"
|
||||
},
|
||||
{
|
||||
"distribution": "Buster",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec4",
|
||||
"description": "Debian 10.x (Buster) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Buster",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec4",
|
||||
"description": "Debian 10.x (Buster) (armhf)"
|
||||
},
|
||||
{
|
||||
"distribution": "Bullseye",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
|
||||
"description": "Debian 11.x (Bullseye) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Bullseye",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
|
||||
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
|
||||
"description": "Debian 11.x (Bullseye) (armhf)"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,22 +1,48 @@
|
|||
name: Hyperion APT Build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
tags:
|
||||
- '*'
|
||||
workflow_call:
|
||||
inputs:
|
||||
head_sha:
|
||||
type: string
|
||||
description: The branch, tag or SHA to checkout
|
||||
required: true
|
||||
secrets:
|
||||
APT_GPG:
|
||||
required: true
|
||||
APT_USER:
|
||||
required: true
|
||||
APT_PASSWORD:
|
||||
required: true
|
||||
APT_DRAFT:
|
||||
required: true
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
head_sha:
|
||||
type: string
|
||||
description: The branch, tag or SHA to checkout
|
||||
required: true
|
||||
secrets:
|
||||
APT_GPG:
|
||||
required: true
|
||||
APT_USER:
|
||||
required: true
|
||||
APT_PASSWORD:
|
||||
required: true
|
||||
APT_DRAFT:
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
setup:
|
||||
name: Setup APT build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set APT matrix
|
||||
id: apt-ppa
|
||||
run: |
|
||||
APT=$(echo $(cat .github/workflows/apt.json) | jq --compact-output .)
|
||||
echo "::set-output name=apt::$APT"
|
||||
APT=$(jq -n '.include |= [ inputs[] | select(.["exclude"] != true)]' .github/workflows/apt/*.json --compact-output)
|
||||
echo "apt=$APT" >> $GITHUB_OUTPUT
|
||||
|
||||
outputs:
|
||||
apt-matrix: ${{ steps.apt-ppa.outputs.apt }}
|
||||
|
||||
|
@ -28,49 +54,67 @@ jobs:
|
|||
matrix: ${{ fromJson(needs.setup.outputs.apt-matrix) }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.inputs.head_sha || github.event.client_payload.head_sha }}
|
||||
submodules: true
|
||||
|
||||
- name: Generate environment variables
|
||||
run: |
|
||||
tr -d '\n' < .version > temp && mv temp .version
|
||||
VERSION=$(cat .version)
|
||||
echo VERSION=${VERSION} >> $GITHUB_ENV
|
||||
if [[ $VERSION == *"-"* ]]; then
|
||||
echo STANDARDS_VERSION=$(echo ${VERSION%-*}) >> $GITHUB_ENV
|
||||
echo TARBALL_VERSION=$(echo ${VERSION%-*}) >> $GITHUB_ENV
|
||||
echo DEBIAN_FORMAT='3.0 (quilt)' >> $GITHUB_ENV
|
||||
else
|
||||
echo STANDARDS_VERSION=$(echo ${VERSION%+*}) >> $GITHUB_ENV
|
||||
echo TARBALL_VERSION=${VERSION}~$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
||||
echo DEBIAN_FORMAT='3.0 (native)' >> $GITHUB_ENV
|
||||
fi
|
||||
echo DISTRIBUTION=$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
||||
|
||||
- name: Build package
|
||||
shell: bash
|
||||
run: |
|
||||
tr -d '\n' < .version > temp && mv temp .version
|
||||
mkdir -p "${GITHUB_WORKSPACE}/deploy"
|
||||
docker run --rm \
|
||||
-v "${GITHUB_WORKSPACE}/deploy:/deploy" \
|
||||
-v "${GITHUB_WORKSPACE}:/source:rw" \
|
||||
ghcr.io/hyperion-project/${{ matrix.architecture }}:$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') \
|
||||
ghcr.io/hyperion-project/${{ matrix.architecture }}:${{ env.DISTRIBUTION }} \
|
||||
/bin/bash -c "cd /source && \
|
||||
mkdir -p debian/source && echo '3.0 (quilt)' > debian/source/format && \
|
||||
dch --create --distribution $(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') --package 'hyperion' -v '$(cat .version)~$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]')' '${{ github.event.commits[0].message }}' && \
|
||||
mkdir -p debian/source && echo '${{ env.DEBIAN_FORMAT }}' > debian/source/format && \
|
||||
dch --create --distribution ${{ env.DISTRIBUTION }} --package 'hyperion' -v '${{ env.VERSION }}~${{ env.DISTRIBUTION }}' '${{ github.event.commits[0].message }}' && \
|
||||
cp -fr LICENSE debian/copyright && \
|
||||
sed 's/@BUILD_DEPENDS@/${{ matrix.build-depends }}/g; s/@DEPENDS@/${{ matrix.package-depends }}/g; s/@ARCHITECTURE@/${{ matrix.architecture }}/g' debian/control.in > debian/control && \
|
||||
tar cf ../hyperion_2.0.0.orig.tar . && \
|
||||
xz -9 ../hyperion_2.0.0.orig.tar && \
|
||||
sed 's/@BUILD_DEPENDS@/${{ matrix.build-depends }}/g; s/@DEPENDS@/${{ matrix.package-depends }}/g; s/@ARCHITECTURE@/${{ matrix.architecture }}/g; s/@STANDARDS_VERSION@/${{ env.STANDARDS_VERSION }}/g' debian/control.in > debian/control && \
|
||||
sed 's/@CMAKE_ENVIRONMENT@/${{ matrix.cmake-environment }}/g' debian/rules.in > debian/rules && \
|
||||
tar -cJf ../hyperion_${{ env.TARBALL_VERSION }}.orig.tar.xz . && \
|
||||
debuild --no-lintian -uc -us && \
|
||||
cp ../hyperion_* /deploy"
|
||||
cp ../hyperion_*.deb /deploy"
|
||||
|
||||
- name: Upload package artifact
|
||||
if: startsWith(github.event.ref, 'refs/tags')
|
||||
uses: actions/upload-artifact@v2.2.4
|
||||
if: ${{ startsWith(github.event.ref, 'refs/tags') || github.event_name == 'workflow_dispatch' }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: deploy
|
||||
retention-days: 1
|
||||
|
||||
publish:
|
||||
name: Publish APT packages
|
||||
if: startsWith(github.event.ref, 'refs/tags')
|
||||
if: ${{ startsWith(github.event.ref, 'refs/tags') || github.event_name == 'workflow_dispatch' }}
|
||||
needs: [setup, build]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.inputs.head_sha || github.event.client_payload.head_sha }}
|
||||
|
||||
- name: Import GPG key
|
||||
uses: crazy-max/ghaction-import-gpg@v3.1.0
|
||||
uses: crazy-max/ghaction-import-gpg@v6.0.0
|
||||
with:
|
||||
gpg-private-key: ${{ secrets.APT_GPG }}
|
||||
gpg_private_key: ${{ secrets.APT_GPG }}
|
||||
|
||||
- name: Install reprepro
|
||||
run: sudo apt -y install reprepro
|
||||
|
@ -87,11 +131,11 @@ jobs:
|
|||
reprepro -Vb apt export
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v2.0.10
|
||||
uses: actions/download-artifact@v3.0.2
|
||||
|
||||
- name: Include artifacts into the package source
|
||||
run: |
|
||||
for file in artifact/*.deb; do
|
||||
for file in artifact/hyperion_*.deb; do
|
||||
if [ -f "$file" ]; then
|
||||
dist=${file#*~}
|
||||
dist=${dist%_*}
|
||||
|
@ -99,26 +143,12 @@ jobs:
|
|||
fi
|
||||
done
|
||||
|
||||
- name: Upload packages to APT server
|
||||
uses: SamKirkland/FTP-Deploy-Action@4.0.0
|
||||
- name: Upload packages to APT server (DRAFT)
|
||||
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
|
||||
with:
|
||||
server: apt.hyperion-project.org
|
||||
username: ${{ secrets.APT_USER }}
|
||||
password: ${{ secrets.APT_PASSWORD }}
|
||||
local-dir: "./apt/"
|
||||
server-dir: "./"
|
||||
|
||||
hyperbian:
|
||||
name: Update HyperBian Release
|
||||
if: startsWith(github.event.ref, 'refs/tags')
|
||||
needs: [setup, build, publish]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Dispatch event to build new HyperBian image
|
||||
- name: Dispatch HyperBian build
|
||||
uses: peter-evans/repository-dispatch@v1
|
||||
if: ${{ github.repository_owner == 'hyperion-project'}}
|
||||
with:
|
||||
repository: hyperion-project/HyperBian
|
||||
token: ${{ secrets.HYPERION_BOT_TOKEN }}
|
||||
event-type: hyperion_push
|
||||
server-dir: ${{ secrets.APT_DRAFT }}
|
||||
dangerous-clean-slate: true
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
[
|
||||
{
|
||||
"distribution": "Focal",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.8, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg, libcec4",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 20.04 (Focal Fossa) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Jammy",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.10, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 22.04 (Jammy Jellyfish) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Kinetic",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.10, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 22.10 (Kinetic Kudu) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Lunar",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.11, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 23.04 (Lunar Lobster) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Buster",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.7, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg0, libcec4",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 10.x (Buster) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Bullseye",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg0, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 11.x (Bullseye) (amd64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Bookworm",
|
||||
"architecture": "amd64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.11, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg0, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 12.x (Bookworm) (amd64)"
|
||||
}
|
||||
]
|
|
@ -0,0 +1,51 @@
|
|||
[
|
||||
{
|
||||
"distribution": "Focal",
|
||||
"architecture": "arm64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.8, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg, libcec4",
|
||||
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 20.04 (Focal Fossa) (arm64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Jammy",
|
||||
"architecture": "arm64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.10, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg, libcec6",
|
||||
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 22.04 (Jammy Jellyfish) (arm64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Kinetic",
|
||||
"architecture": "arm64",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.10, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg, libcec6",
|
||||
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 22.10 (Kinetic Kudu) (arm64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Buster",
|
||||
"architecture": "arm64",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libssl-dev, libraspberrypi-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.7, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg0, libcec4",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 10.x (Buster) (arm64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Bullseye",
|
||||
"architecture": "arm64",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libssl-dev, libraspberrypi-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg0, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 11.x (Bullseye) (arm64)"
|
||||
},
|
||||
{
|
||||
"distribution": "Bookworm",
|
||||
"architecture": "arm64",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libssl-dev, libraspberrypi-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.11, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg0, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 12.x (Bookworm) (arm64)",
|
||||
"exclude" : true
|
||||
}
|
||||
]
|
|
@ -0,0 +1,51 @@
|
|||
[
|
||||
{
|
||||
"distribution": "Focal",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.8, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg, libcec4",
|
||||
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 20.04 (Focal Fossa) (armhf)"
|
||||
},
|
||||
{
|
||||
"distribution": "Jammy",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.10, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg, libcec6",
|
||||
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 22.04 (Jammy Jellyfish) (armhf)"
|
||||
},
|
||||
{
|
||||
"distribution": "Kinetic",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libssl-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.10, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg, libcec6",
|
||||
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Ubuntu 22.10 (Kinetic Kudu) (armhf)"
|
||||
},
|
||||
{
|
||||
"distribution": "Buster",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libssl1.0-dev, libraspberrypi-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.7, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg0, libcec4",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 10.x (Buster) (armhf)"
|
||||
},
|
||||
{
|
||||
"distribution": "Bullseye",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libssl-dev, libraspberrypi-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls12, libasound2, libturbojpeg0, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 11.x (Bullseye) (armhf)"
|
||||
},
|
||||
{
|
||||
"distribution": "Bookworm",
|
||||
"architecture": "armhf",
|
||||
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libssl-dev, libraspberrypi-dev, libasound2-dev, libturbojpeg0-dev, libjpeg-dev, libmbedtls-dev",
|
||||
"package-depends": "libpython3.11, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libmbedtls14, libasound2, libturbojpeg0, libcec6",
|
||||
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
|
||||
"description": "Debian 12.x (Bookworm) (armhf)",
|
||||
"exclude" : true
|
||||
}
|
||||
]
|
|
@ -1,5 +1,6 @@
|
|||
name: Clean artifacts
|
||||
|
||||
# Run cleanup workflow at the end of every day
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
schedule:
|
||||
- cron: "36 18 * * 4"
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ python, javascript, cpp ]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Packages (cpp)
|
||||
if: ${{ matrix.language == 'cpp' }}
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install --yes git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-image0-dev libxcb-util0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libasound2-dev libturbojpeg0-dev libjpeg-dev libssl-dev
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
queries: +security-and-quality
|
||||
config-file: ./.github/config/codeql.yml
|
||||
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
with:
|
||||
category: "/language:${{ matrix.language }}"
|
||||
upload: False
|
||||
output: sarif-results
|
||||
|
||||
- name: Filter SARIF
|
||||
uses: advanced-security/filter-sarif@v1
|
||||
with:
|
||||
patterns: |
|
||||
-**/dependencies/**
|
||||
-**/moc_*.cpp
|
||||
-**/libsrc/flatbufserver/hyperion_request_generated.h
|
||||
-**/libsrc/protoserver/message.pb.cc
|
||||
-**/libsrc/protoserver/message.pb.h
|
||||
input: sarif-results/${{ matrix.language }}.sarif
|
||||
output: sarif-results/${{ matrix.language }}.sarif
|
||||
|
||||
- name: Upload SARIF
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: sarif-results/${{ matrix.language }}.sarif
|
||||
- name: Upload loc as a Build Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: sarif-results
|
||||
path: sarif-results
|
||||
retention-days: 1
|
||||
|
|
@ -0,0 +1,187 @@
|
|||
name: Nightly build
|
||||
|
||||
# Create nightly builds at the end of every day
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
repository_dispatch:
|
||||
types: [hyperion_nightly_push]
|
||||
|
||||
jobs:
|
||||
update:
|
||||
name: Update Submodule rpi_ws281x
|
||||
if: github.repository_owner == 'hyperion-project'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
|
||||
- name: Update Submodule rpi_ws281x
|
||||
id: update
|
||||
run: git submodule update --remote --recursive dependencies/external/rpi_ws281x
|
||||
|
||||
- name: Check git status
|
||||
id: status
|
||||
run: echo "status=$(git status -s)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Add and commit changes
|
||||
if: ${{ steps.status.outputs.status }}
|
||||
run: |
|
||||
git config --local user.email "20935312+Hyperion-Bot@users.noreply.github.com"
|
||||
git config --local user.name "Hyperion-Bot"
|
||||
git config --local diff.ignoreSubmodules dirty
|
||||
git commit -am "Update submodule rpi_ws281x"
|
||||
|
||||
- name: Push changes
|
||||
if: ${{ steps.status.outputs.status }}
|
||||
uses: ad-m/github-push-action@master
|
||||
with:
|
||||
github_token: ${{ secrets.HYPERION_BOT_TOKEN }}
|
||||
branch: ${{ github.ref }}
|
||||
|
||||
check:
|
||||
name: Compare local <-> nightly
|
||||
needs: [update]
|
||||
if: github.repository_owner == 'hyperion-project'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Check if commit has changed
|
||||
id: build-necessary
|
||||
run: |
|
||||
if wget --spider "https://nightly.apt.hyperion-project.org/$(git rev-parse --short HEAD)" 2>/dev/null; then
|
||||
echo "commit-has-changed=false" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "commit-has-changed=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
outputs:
|
||||
build-nightly: ${{ steps.build-necessary.outputs.commit-has-changed }}
|
||||
|
||||
setup:
|
||||
name: Setup nightly build
|
||||
needs: [check]
|
||||
if: ${{ needs.check.outputs.build-nightly == 'true' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set nightly matrix
|
||||
id: nightly-ppa
|
||||
run: |
|
||||
NIGHTLY=$(jq -n '.include |= [ inputs[] | select(.["exclude"] != true)]' .github/workflows/apt/*.json --compact-output)
|
||||
echo "nightly=$NIGHTLY" >> $GITHUB_OUTPUT
|
||||
|
||||
outputs:
|
||||
nightly-matrix: ${{ steps.nightly-ppa.outputs.nightly }}
|
||||
|
||||
build:
|
||||
name: ${{ matrix.description }}
|
||||
needs: [setup]
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.setup.outputs.nightly-matrix) }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Generate environment variables
|
||||
run: |
|
||||
echo "$(tr -d '\n' < .version)+nightly$(date '+%Y%m%d')$(git rev-parse --short HEAD)" > .version
|
||||
VERSION=$(cat .version)
|
||||
echo VERSION=${VERSION} >> $GITHUB_ENV
|
||||
if [[ $VERSION == *"-"* ]]; then
|
||||
echo STANDARDS_VERSION=$(echo ${VERSION%-*}) >> $GITHUB_ENV
|
||||
echo TARBALL_VERSION=$(echo ${VERSION%-*}) >> $GITHUB_ENV
|
||||
echo DEBIAN_FORMAT='3.0 (quilt)' >> $GITHUB_ENV
|
||||
else
|
||||
echo STANDARDS_VERSION=$(echo ${VERSION%+*}) >> $GITHUB_ENV
|
||||
echo TARBALL_VERSION=${VERSION}~$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
||||
echo DEBIAN_FORMAT='3.0 (native)' >> $GITHUB_ENV
|
||||
fi
|
||||
echo DISTRIBUTION=$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
||||
|
||||
- name: Build package
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p "${GITHUB_WORKSPACE}/deploy"
|
||||
docker run --rm \
|
||||
-v "${GITHUB_WORKSPACE}/deploy:/deploy" \
|
||||
-v "${GITHUB_WORKSPACE}:/source:rw" \
|
||||
ghcr.io/hyperion-project/${{ matrix.architecture }}:${{ env.DISTRIBUTION }} \
|
||||
/bin/bash -c "cd /source && \
|
||||
mkdir -p debian/source && echo '${{ env.DEBIAN_FORMAT }}' > debian/source/format && \
|
||||
dch --create --distribution ${{ env.DISTRIBUTION }} --package 'hyperion' -v '${{ env.VERSION }}~${{ env.DISTRIBUTION }}' '${{ github.event.commits[0].message }}' && \
|
||||
cp -fr LICENSE debian/copyright && \
|
||||
sed 's/@BUILD_DEPENDS@/${{ matrix.build-depends }}/g; s/@DEPENDS@/${{ matrix.package-depends }}/g; s/@ARCHITECTURE@/${{ matrix.architecture }}/g; s/@STANDARDS_VERSION@/${{ env.STANDARDS_VERSION }}/g' debian/control.in > debian/control && \
|
||||
sed 's/@CMAKE_ENVIRONMENT@/${{ matrix.cmake-environment }}/g' debian/rules.in > debian/rules && \
|
||||
tar -cJf ../hyperion_${{ env.TARBALL_VERSION }}.orig.tar.xz . && \
|
||||
debuild --no-lintian -uc -us && \
|
||||
cp ../hyperion_*.deb /deploy"
|
||||
|
||||
- name: Upload package artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: deploy
|
||||
retention-days: 1
|
||||
|
||||
publish:
|
||||
name: Publish nightly packages
|
||||
needs: [setup, build]
|
||||
if: github.repository_owner == 'hyperion-project'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Import GPG key
|
||||
uses: crazy-max/ghaction-import-gpg@v6.0.0
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.APT_GPG }}
|
||||
|
||||
- name: Install reprepro
|
||||
run: sudo apt -y install reprepro
|
||||
|
||||
- name: Make build folders, export public GPG key, copy distributions file and create short sha file for nightly build check
|
||||
run: |
|
||||
mkdir -p nightly/{conf,dists,db}
|
||||
gpg --armor --output nightly/hyperion.pub.key --export 'admin@hyperion-project.org'
|
||||
cp debian/distributions nightly/conf/distributions
|
||||
touch "nightly/$(git rev-parse --short HEAD)"
|
||||
|
||||
- name: Create initial structure/packages files and symbolic links
|
||||
run: |
|
||||
reprepro -Vb nightly createsymlinks
|
||||
reprepro -Vb nightly export
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v3.0.2
|
||||
|
||||
- name: Include artifacts into the package source
|
||||
run: |
|
||||
for file in artifact/*.deb; do
|
||||
if [ -f "$file" ]; then
|
||||
dist=${file#*~}
|
||||
dist=${dist%_*}
|
||||
reprepro -Vb nightly/ includedeb "$dist" "$file"
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Upload packages to nightly server
|
||||
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
|
||||
with:
|
||||
server: nightly.apt.hyperion-project.org
|
||||
username: ${{ secrets.NIGHTLY_USER }}
|
||||
password: ${{ secrets.NIGHTLY_PASSWORD }}
|
||||
local-dir: "./nightly/"
|
||||
server-dir: "./"
|
||||
dangerous-clean-slate: true
|
||||
|
||||
- name: Remove intermediate artifacts
|
||||
uses: geekyeggo/delete-artifact@v2
|
||||
with:
|
||||
name: artifact
|
||||
failOnError: false
|
|
@ -18,23 +18,23 @@ jobs:
|
|||
dockerImage: [ x86_64, armv6l, armv7l, aarch64 ]
|
||||
include:
|
||||
- dockerImage: x86_64
|
||||
dockerName: Debian Stretch (x86_64)
|
||||
dockerName: Debian Buster (x86_64)
|
||||
platform: x11
|
||||
- dockerImage: armv6l
|
||||
dockerName: Debian Stretch (Raspberry Pi v1 & ZERO)
|
||||
dockerName: Debian Buster (Raspberry Pi v1 & ZERO)
|
||||
platform: rpi
|
||||
- dockerImage: armv7l
|
||||
dockerName: Debian Stretch (Raspberry Pi 2 & 3)
|
||||
dockerName: Debian Buster (Raspberry Pi 2 & 3)
|
||||
platform: rpi
|
||||
- dockerImage: aarch64
|
||||
dockerName: Debian Stretch (Generic AARCH64)
|
||||
dockerName: Debian Buster (Generic AARCH64)
|
||||
platform: amlogic
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
submodules: recursive
|
||||
|
||||
# Append PR number to .version
|
||||
- name: Append PR number to version
|
||||
|
@ -47,7 +47,7 @@ jobs:
|
|||
- name: Build packages
|
||||
env:
|
||||
DOCKER_IMAGE: ${{ matrix.dockerImage }}
|
||||
DOCKER_TAG: stretch
|
||||
DOCKER_TAG: buster
|
||||
DOCKER_NAME: ${{ matrix.dockerName }}
|
||||
PLATFORM: ${{ matrix.platform }}
|
||||
shell: bash
|
||||
|
@ -59,15 +59,13 @@ jobs:
|
|||
run: |
|
||||
mkdir -p ${{ matrix.dockerImage }}
|
||||
mv deploy/*.tar.gz ${{ matrix.dockerImage }}
|
||||
if: matrix.dockerImage != 'aarch64'
|
||||
|
||||
# Upload artifacts
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.dockerImage }}
|
||||
path: ${{ matrix.dockerImage }}
|
||||
if: matrix.dockerImage != 'aarch64'
|
||||
|
||||
######################
|
||||
###### macOS #########
|
||||
|
@ -78,9 +76,9 @@ jobs:
|
|||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
submodules: recursive
|
||||
|
||||
# Append PR number to .version
|
||||
- name: Append PR number to version
|
||||
|
@ -106,11 +104,11 @@ jobs:
|
|||
shell: bash
|
||||
run: |
|
||||
mkdir -p macOS
|
||||
mv build/*.tar.gz macOS
|
||||
mv build/*.dmg macOS
|
||||
|
||||
# Upload artifacts
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: macOS
|
||||
path: macOS
|
||||
|
@ -121,15 +119,15 @@ jobs:
|
|||
|
||||
windows:
|
||||
name: Windows
|
||||
runs-on: windows-latest
|
||||
runs-on: windows-2022
|
||||
env:
|
||||
VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC'
|
||||
QT_VERSION: 5.15.0
|
||||
VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC'
|
||||
QT_VERSION: 5.15.2
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
submodules: recursive
|
||||
|
||||
# Append PR number to .version
|
||||
- name: Append PR number to version
|
||||
|
@ -138,37 +136,31 @@ jobs:
|
|||
tr -d '\n' < .version > temp && mv temp .version
|
||||
echo -n "+PR${{ github.event.pull_request.number }}" >> .version
|
||||
|
||||
- name: Cache Qt
|
||||
uses: actions/cache@v2
|
||||
id: cache-qt-windows
|
||||
with:
|
||||
path: ${{ runner.workspace }}/Qt
|
||||
key: ${{ runner.os }}-Qt.${{ env.QT_VERSION }}
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
target: 'desktop'
|
||||
arch: 'win64_msvc2019_64'
|
||||
cached: ${{ steps.cache-qt-windows.outputs.cache-hit }}
|
||||
cache: 'true'
|
||||
cache-key-prefix: 'cache-qt-windows'
|
||||
|
||||
- name: Cache Chocolatey downloads
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
|
||||
key: ${{ runner.os }}-chocolatey
|
||||
|
||||
- name: "Remove Redistributable"
|
||||
shell: cmd
|
||||
run: |
|
||||
MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
|
||||
MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
|
||||
# - name: Install Python
|
||||
# shell: powershell
|
||||
# run: |
|
||||
# choco install --no-progress python -y
|
||||
|
||||
- name: Install Python, NSIS, OpenSSL, DirectX SDK
|
||||
- name: Install OpenSSL, DirectX SDK
|
||||
shell: powershell
|
||||
run: |
|
||||
choco install --no-progress python nsis openssl directx-sdk -y
|
||||
choco install --no-progress openssl --version=1.1.1.2100 -y
|
||||
choco install --no-progress directx-sdk -y
|
||||
|
||||
- name: Install libjpeg-turbo
|
||||
run: |
|
||||
|
@ -195,7 +187,7 @@ jobs:
|
|||
|
||||
# Upload artifacts
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: windows
|
||||
path: windows
|
||||
|
|
|
@ -8,9 +8,9 @@ on:
|
|||
|
||||
jobs:
|
||||
|
||||
######################
|
||||
###### Linux #########
|
||||
######################
|
||||
###################
|
||||
###### Linux ######
|
||||
###################
|
||||
|
||||
Linux:
|
||||
name: ${{ matrix.dockerName }}
|
||||
|
@ -20,118 +20,112 @@ jobs:
|
|||
dockerImage: [ x86_64, armv6l, armv7l, aarch64 ]
|
||||
include:
|
||||
- dockerImage: x86_64
|
||||
dockerName: Debian Stretch (x86_64)
|
||||
dockerName: Debian Buster (x86_64)
|
||||
platform: x11
|
||||
- dockerImage: armv6l
|
||||
dockerName: Debian Stretch (Raspberry Pi v1 & ZERO)
|
||||
dockerName: Debian Buster (Raspberry Pi v1 & ZERO)
|
||||
platform: rpi
|
||||
- dockerImage: armv7l
|
||||
dockerName: Debian Stretch (Raspberry Pi 2 & 3)
|
||||
dockerName: Debian Buster (Raspberry Pi 2 & 3)
|
||||
platform: rpi
|
||||
- dockerImage: aarch64
|
||||
dockerName: Debian Stretch (Generic AARCH64)
|
||||
dockerName: Debian Buster (Generic AARCH64)
|
||||
platform: amlogic
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
submodules: recursive
|
||||
|
||||
# build process
|
||||
# Build process
|
||||
- name: Build packages
|
||||
env:
|
||||
DOCKER_IMAGE: ${{ matrix.dockerImage }}
|
||||
DOCKER_TAG: stretch
|
||||
DOCKER_TAG: buster
|
||||
DOCKER_NAME: ${{ matrix.dockerName }}
|
||||
PLATFORM: ${{ matrix.platform }}
|
||||
shell: bash
|
||||
run: ./.ci/ci_build.sh
|
||||
|
||||
# upload artifacts (only on tagged commit)
|
||||
# Upload artifacts (only on tagged commit)
|
||||
- name: Upload artifacts
|
||||
if: startsWith(github.event.ref, 'refs/tags')
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: deploy/Hyperion-*
|
||||
|
||||
######################
|
||||
###### macOS #########
|
||||
######################
|
||||
###################
|
||||
###### macOS ######
|
||||
###################
|
||||
|
||||
macOS:
|
||||
name: macOS
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
submodules: recursive
|
||||
|
||||
# install dependencies
|
||||
# Install dependencies
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: ./.ci/ci_install.sh
|
||||
|
||||
# build process
|
||||
# Build process
|
||||
- name: Build packages
|
||||
env:
|
||||
PLATFORM: osx
|
||||
shell: bash
|
||||
run: ./.ci/ci_build.sh
|
||||
|
||||
# upload artifacts (only on tagged commit)
|
||||
# Upload artifacts (only on tagged commit)
|
||||
- name: Upload artifacts
|
||||
if: startsWith(github.event.ref, 'refs/tags')
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: build/Hyperion-*
|
||||
|
||||
######################
|
||||
###### Windows #######
|
||||
######################
|
||||
#####################
|
||||
###### Windows ######
|
||||
#####################
|
||||
|
||||
windows:
|
||||
name: Windows
|
||||
runs-on: windows-latest
|
||||
runs-on: windows-2022
|
||||
env:
|
||||
VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC'
|
||||
QT_VERSION: 5.15.0
|
||||
VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC'
|
||||
QT_VERSION: 5.15.2
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Cache Qt
|
||||
uses: actions/cache@v2
|
||||
id: cache-qt-windows
|
||||
with:
|
||||
path: ${{ runner.workspace }}/Qt
|
||||
key: ${{ runner.os }}-Qt.${{ env.QT_VERSION }}
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ env.QT_VERSION }}
|
||||
version: ${{env.QT_VERSION}}
|
||||
target: 'desktop'
|
||||
arch: 'win64_msvc2019_64'
|
||||
cached: ${{ steps.cache-qt-windows.outputs.cache-hit }}
|
||||
cache: 'true'
|
||||
cache-key-prefix: 'cache-qt-windows'
|
||||
|
||||
- name: Cache Chocolatey downloads
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
|
||||
key: ${{ runner.os }}-chocolatey
|
||||
|
||||
- name: "Remove Redistributable"
|
||||
shell: cmd
|
||||
run: |
|
||||
MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
|
||||
MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
|
||||
# - name: Install Python
|
||||
# shell: powershell
|
||||
# run: |
|
||||
# choco install --no-progress python -y
|
||||
|
||||
- name: Install Python, NSIS, OpenSSL, DirectX SDK
|
||||
- name: Install OpenSSL, DirectX SDK
|
||||
shell: powershell
|
||||
run: |
|
||||
choco install --no-progress python nsis openssl directx-sdk -y
|
||||
choco install --no-progress openssl --version=1.1.1.2100 -y
|
||||
choco install --no-progress directx-sdk -y
|
||||
|
||||
- name: Install libjpeg-turbo
|
||||
run: |
|
||||
|
@ -149,16 +143,17 @@ jobs:
|
|||
shell: bash
|
||||
run: ./.ci/ci_build.sh
|
||||
|
||||
# upload artifacts (only on tagged commit)
|
||||
# Upload artifacts (only on tagged commit)
|
||||
- name: Upload artifacts
|
||||
if: startsWith(github.event.ref, 'refs/tags')
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: build/Hyperion-*
|
||||
retention-days: 1
|
||||
|
||||
#######################################
|
||||
###### Publish GitHub Releases ########
|
||||
#######################################
|
||||
#####################################
|
||||
###### Publish GitHub Releases ######
|
||||
#####################################
|
||||
|
||||
github_publish:
|
||||
name: Publish GitHub Releases
|
||||
|
@ -167,27 +162,21 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# generate environment variables
|
||||
# Generate environment variables
|
||||
- name: Generate environment variables from .version and tag
|
||||
run: |
|
||||
echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
|
||||
echo "VERSION=$(tr -d '\n' < .version)" >> $GITHUB_ENV
|
||||
echo "preRelease=false" >> $GITHUB_ENV
|
||||
|
||||
# If version contains alpha or beta, mark draft release as pre-release
|
||||
- name: Mark release as pre-release
|
||||
if: contains(env.VERSION, 'alpha') || contains(env.VERSION, 'beta')
|
||||
run: echo "preRelease=true" >> $GITHUB_ENV
|
||||
|
||||
# Download artifacts from previous build process
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v2
|
||||
uses: actions/download-artifact@v3.0.2
|
||||
with:
|
||||
path: artifacts
|
||||
|
||||
# create draft release and upload artifacts
|
||||
# Create draft release and upload artifacts
|
||||
- name: Create draft release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
|
@ -195,6 +184,18 @@ jobs:
|
|||
tag_name: ${{ env.TAG }}
|
||||
files: "artifacts/**"
|
||||
draft: true
|
||||
prerelease: ${{ env.preRelease }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
##########################
|
||||
###### APT workflow ######
|
||||
##########################
|
||||
|
||||
apt_build:
|
||||
name: APT Build GitHub Releases
|
||||
if: startsWith(github.event.ref, 'refs/tags')
|
||||
needs: [Linux, macOS, windows]
|
||||
uses: ./.github/workflows/apt.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
head_sha: master
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
name: Release Actions
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
hyperbian:
|
||||
name: Let HyperBian create
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Dispatch event to build new HyperBian image
|
||||
- name: Dispatch HyperBian build
|
||||
uses: peter-evans/repository-dispatch@v2.1.2
|
||||
if: ${{ github.repository_owner == 'hyperion-project'}}
|
||||
with:
|
||||
repository: hyperion-project/HyperBian
|
||||
token: ${{ secrets.HYPERION_BOT_TOKEN }}
|
||||
event-type: hyperion_push
|
|
@ -30,8 +30,12 @@ libsrc/flatbufserver/hyperion_request_generated.h
|
|||
# Ignore
|
||||
.vs/*
|
||||
CMakeSettings.json
|
||||
/out
|
||||
# Allow
|
||||
!.vs/launch.vs.json
|
||||
|
||||
# LedDevice 'File' output
|
||||
NULL
|
||||
|
||||
# Docker deploy folder
|
||||
deploy/*
|
||||
|
|
|
@ -8,5 +8,10 @@
|
|||
branch = master
|
||||
[submodule "dependencies/external/protobuf"]
|
||||
path = dependencies/external/protobuf
|
||||
url = https://github.com/hyperion-project/protobuf.git
|
||||
branch = master
|
||||
url = https://github.com/protocolbuffers/protobuf
|
||||
[submodule "dependencies/external/qmdnsengine"]
|
||||
path = dependencies/external/qmdnsengine
|
||||
url = https://github.com/nitroshare/qmdnsengine.git
|
||||
[submodule "dependencies/external/mbedtls"]
|
||||
path = dependencies/external/mbedtls
|
||||
url = ../../Mbed-TLS/mbedtls.git
|
||||
|
|
27
.lgtm.yml
27
.lgtm.yml
|
@ -1,27 +0,0 @@
|
|||
extraction:
|
||||
cpp:
|
||||
prepare:
|
||||
packages:
|
||||
- "git"
|
||||
- "cmake"
|
||||
- "build-essential"
|
||||
- "qtbase5-dev"
|
||||
- "libqt5serialport5-dev"
|
||||
- "libqt5sql5-sqlite"
|
||||
- "libqt5svg5-dev"
|
||||
- "libqt5x11extras5-dev"
|
||||
- "libusb-1.0-0-dev"
|
||||
- "python3-dev"
|
||||
- "libcec-dev"
|
||||
- "libxcb-image0-dev"
|
||||
- "libxcb-util0-dev"
|
||||
- "libxcb-shm0-dev"
|
||||
- "libxcb-render0-dev"
|
||||
- "libxcb-randr0-dev"
|
||||
- "libxrandr-dev"
|
||||
- "libxrender-dev"
|
||||
- "libavahi-core-dev"
|
||||
- "libavahi-compat-libdnssd-dev"
|
||||
- "libturbojpeg0-dev"
|
||||
- "libssl-dev"
|
||||
- "zlib1g-dev"
|
|
@ -16,7 +16,6 @@
|
|||
"ms-vscode.cmake-tools",
|
||||
"spmeesseman.vscode-taskexplorer",
|
||||
"yzhang.markdown-all-in-one",
|
||||
"CoenraadS.bracket-pair-colorizer",
|
||||
"vscode-icons-team.vscode-icons",
|
||||
"editorconfig.editorconfig"
|
||||
]
|
||||
|
|
|
@ -33,6 +33,18 @@
|
|||
"cwd": "${workspaceFolder}",
|
||||
"environment": [],
|
||||
"console": "internalConsole"
|
||||
},
|
||||
{
|
||||
"name": "(macOS) Hyperion.app",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/build/bin/Hyperion.app/Contents/MacOS/Hyperion",
|
||||
"args": ["-d"],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${workspaceFolder}",
|
||||
"environment": [],
|
||||
"console": "internalConsole",
|
||||
"MIMode": "lldb"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -458,6 +458,44 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
===========
|
||||
Animate.css
|
||||
===========
|
||||
|
||||
Animate.css Copyright 2021 Daniel Eden (“Licensor”)
|
||||
|
||||
Hippocratic License Version Number: 2.1.
|
||||
|
||||
Purpose. The purpose of this License is for the Licensor named above to permit the Licensee (as defined below) broad permission, if consistent with Human Rights Laws and Human Rights Principles (as each is defined below), to use and work with the Software (as defined below) within the full scope of Licensor’s copyright and patent rights, if any, in the Software, while ensuring attribution and protecting the Licensor from liability.
|
||||
|
||||
Permission and Conditions. The Licensor grants permission by this license (“License”), free of charge, to the extent of Licensor’s rights under applicable copyright and patent law, to any person or entity (the “Licensee”) obtaining a copy of this software and associated documentation files (the “Software”), to do everything with the Software that would otherwise infringe (i) the Licensor’s copyright in the Software or (ii) any patent claims to the Software that the Licensor can license or becomes able to license, subject to all of the following terms and conditions:
|
||||
|
||||
* Acceptance. This License is automatically offered to every person and entity subject to its terms and conditions. Licensee accepts this License and agrees to its terms and conditions by taking any action with the Software that, absent this License, would infringe any intellectual property right held by Licensor.
|
||||
|
||||
* Notice. Licensee must ensure that everyone who gets a copy of any part of this Software from Licensee, with or without changes, also receives the License and the above copyright notice (and if included by the Licensor, patent, trademark and attribution notice). Licensee must cause any modified versions of the Software to carry prominent notices stating that Licensee changed the Software. For clarity, although Licensee is free to create modifications of the Software and distribute only the modified portion created by Licensee with additional or different terms, the portion of the Software not modified must be distributed pursuant to this License. If anyone notifies Licensee in writing that Licensee has not complied with this Notice section, Licensee can keep this License by taking all practical steps to comply within 30 days after the notice. If Licensee does not do so, Licensee’s License (and all rights licensed hereunder) shall end immediately.
|
||||
|
||||
* Compliance with Human Rights Principles and Human Rights Laws.
|
||||
|
||||
1. Human Rights Principles.
|
||||
|
||||
(a) Licensee is advised to consult the articles of the United Nations Universal Declaration of Human Rights and the United Nations Global Compact that define recognized principles of international human rights (the “Human Rights Principles”). Licensee shall use the Software in a manner consistent with Human Rights Principles.
|
||||
|
||||
(b) Unless the Licensor and Licensee agree otherwise, any dispute, controversy, or claim arising out of or relating to (i) Section 1(a) regarding Human Rights Principles, including the breach of Section 1(a), termination of this License for breach of the Human Rights Principles, or invalidity of Section 1(a) or (ii) a determination of whether any Law is consistent or in conflict with Human Rights Principles pursuant to Section 2, below, shall be settled by arbitration in accordance with the Hague Rules on Business and Human Rights Arbitration (the “Rules”); provided, however, that Licensee may elect not to participate in such arbitration, in which event this License (and all rights licensed hereunder) shall end immediately. The number of arbitrators shall be one unless the Rules require otherwise.
|
||||
|
||||
Unless both the Licensor and Licensee agree to the contrary: (1) All documents and information concerning the arbitration shall be public and may be disclosed by any party; (2) The repository referred to under Article 43 of the Rules shall make available to the public in a timely manner all documents concerning the arbitration which are communicated to it, including all submissions of the parties, all evidence admitted into the record of the proceedings, all transcripts or other recordings of hearings and all orders, decisions and awards of the arbitral tribunal, subject only to the arbitral tribunal's powers to take such measures as may be necessary to safeguard the integrity of the arbitral process pursuant to Articles 18, 33, 41 and 42 of the Rules; and (3) Article 26(6) of the Rules shall not apply.
|
||||
|
||||
2. Human Rights Laws. The Software shall not be used by any person or entity for any systems, activities, or other uses that violate any Human Rights Laws. “Human Rights Laws” means any applicable laws, regulations, or rules (collectively, “Laws”) that protect human, civil, labor, privacy, political, environmental, security, economic, due process, or similar rights; provided, however, that such Laws are consistent and not in conflict with Human Rights Principles (a dispute over the consistency or a conflict between Laws and Human Rights Principles shall be determined by arbitration as stated above). Where the Human Rights Laws of more than one jurisdiction are applicable or in conflict with respect to the use of the Software, the Human Rights Laws that are most protective of the individuals or groups harmed shall apply.
|
||||
|
||||
3. Indemnity. Licensee shall hold harmless and indemnify Licensor (and any other contributor) against all losses, damages, liabilities, deficiencies, claims, actions, judgments, settlements, interest, awards, penalties, fines, costs, or expenses of whatever kind, including Licensor’s reasonable attorneys’ fees, arising out of or relating to Licensee’s use of the Software in violation of Human Rights Laws or Human Rights Principles.
|
||||
|
||||
* Failure to Comply. Any failure of Licensee to act according to the terms and conditions of this License is both a breach of the License and an infringement of the intellectual property rights of the Licensor (subject to exceptions under Laws, e.g., fair use). In the event of a breach or infringement, the terms and conditions of this License may be enforced by Licensor under the Laws of any jurisdiction to which Licensee is subject. Licensee also agrees that the Licensor may enforce the terms and conditions of this License against Licensee through specific performance (or similar remedy under Laws) to the extent permitted by Laws. For clarity, except in the event of a breach of this License, infringement, or as otherwise stated in this License, Licensor may not terminate this License with Licensee.
|
||||
|
||||
* Enforceability and Interpretation. If any term or provision of this License is determined to be invalid, illegal, or unenforceable by a court of competent jurisdiction, then such invalidity, illegality, or unenforceability shall not affect any other term or provision of this License or invalidate or render unenforceable such term or provision in any other jurisdiction; provided, however, subject to a court modification pursuant to the immediately following sentence, if any term or provision of this License pertaining to Human Rights Laws or Human Rights Principles is deemed invalid, illegal, or unenforceable against Licensee by a court of competent jurisdiction, all rights in the Software granted to Licensee shall be deemed null and void as between Licensor and Licensee. Upon a determination that any term or provision is invalid, illegal, or unenforceable, to the extent permitted by Laws, the court may modify this License to affect the original purpose that the Software be used in compliance with Human Rights Principles and Human Rights Laws as closely as possible. The language in this License shall be interpreted as to its fair meaning and not strictly for or against any party.
|
||||
|
||||
* Disclaimer. TO THE FULL EXTENT ALLOWED BY LAW, THIS SOFTWARE COMES “AS IS,” WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, AND LICENSOR AND ANY OTHER CONTRIBUTOR SHALL NOT BE LIABLE TO ANYONE FOR ANY DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THIS LICENSE, UNDER ANY KIND OF LEGAL CLAIM.
|
||||
|
||||
This Hippocratic License is an Ethical Source license (https://ethicalsource.dev) and is offered for use by licensors and licensees at their own risk, on an “AS IS” basis, and with no warranties express or implied, to the maximum extent permitted by Laws.
|
||||
|
||||
===========
|
||||
Flatbuffers
|
||||
===========
|
||||
|
@ -704,9 +742,9 @@ trademarks does not indicate endorsement of the trademark holder by Font
|
|||
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
|
||||
to represent the company, product, or service to which they refer.**
|
||||
|
||||
============
|
||||
=====================
|
||||
Material Design Icons
|
||||
============
|
||||
=====================
|
||||
|
||||
Copyright (c) 2014, Austin Andrews (http://materialdesignicons.com/), with Reserved Font Name Material Design Icons.
|
||||
|
||||
|
@ -788,6 +826,58 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
==============
|
||||
PlainDraggable
|
||||
==============
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 anseki
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
==========
|
||||
LeaderLine
|
||||
==========
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 anseki
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
======
|
||||
HIDAPI
|
||||
======
|
||||
|
@ -802,6 +892,35 @@ HIDAPI
|
|||
long as the copyright notice in the source files
|
||||
remains intact.
|
||||
|
||||
========
|
||||
HyperHDR
|
||||
========
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 awawa-dev
|
||||
|
||||
Project homesite: https://github.com/awawa-dev/HyperHDR
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
|
||||
===========
|
||||
JSON-Editor
|
||||
===========
|
||||
|
@ -892,6 +1011,7 @@ all code is your original work. `</legalese>`
|
|||
|
||||
## Marked
|
||||
|
||||
Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/)
|
||||
Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
@ -932,7 +1052,7 @@ metismenu
|
|||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014-2018 Osman Nuri Okumuş
|
||||
Copyright (c) 2014-2021 Osman Nuri Okumuş
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
@ -1755,3 +1875,26 @@ POSSIBILITY OF SUCH DAMAGES.
|
|||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
==========================================
|
||||
Oklab Color Space Reference Implementation
|
||||
==========================================
|
||||
|
||||
Copyright (c) 2021 Björn Ottosson
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
202
CHANGELOG.md
202
CHANGELOG.md
|
@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased](https://github.com/hyperion-project/hyperion.ng/compare/2.0.0-alpha.10.1...HEAD)
|
||||
## [Unreleased](https://github.com/hyperion-project/hyperion.ng/compare/2.0.15...HEAD)
|
||||
|
||||
### Breaking
|
||||
|
||||
|
@ -13,10 +13,198 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
### Changed
|
||||
|
||||
### Fixed
|
||||
- Fixed missing Include limits in QJsonSchemaChecker
|
||||
- Fixed dependencies for deb packages in Debian Bookworm
|
||||
|
||||
### Removed
|
||||
## Removed
|
||||
|
||||
## [2.0.0-alpha.10.1](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.10.1) - 2021-10-03
|
||||
## [2.0.15](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.15) - 2023-02
|
||||
|
||||
### Added
|
||||
|
||||
- Audio Grabber to add audio visualization support for both Windows and Linux.
|
||||
- Support streaming to individual WLED segments (requires WLED 0.13.3+).
|
||||
To allow segment streaming, enable "Realtime - Use main segment only" in WLED's Sync Interfaces setup screen
|
||||
- Allow to keep WLED powered on after streaming and restoring state
|
||||
- Allow to Disable / Enable all instances (#970) by
|
||||
- Suspend/Resume support for Linux and Windows (#1493,#1282, #978).
|
||||
Suspend/Resume/Restart is supported via API, UI, Systray and hyperion-remote
|
||||
- Idle scenario via Screen Locking (Linux/Windows), Screensaver invokation (Linux), hyperion-remote or API
|
||||
In Idle, all instances, components will be disabled besides the output processing (LED-Devices, smoothing).
|
||||
The current priorities will be cleared and the background effect per instance will be executed, if enabled.
|
||||
- Commands toogleSuspend and toggleIdle allow to flip between modes, e.g. might be used to trigger modes by a remote
|
||||
- Reduced pixel processing to reduce resources on big assignment areas
|
||||
- Support for squared mean color processing
|
||||
- Support for dominant color processing on assigned LED areas (#1382). A simple and advanced way is provided. Advanced and high accuracy might be combined with reduced pixel processing to lower CPU usage.
|
||||
- Add instance# in API response (#1504)
|
||||
|
||||
### Changed
|
||||
|
||||
- REST API - Increased default timeout to address "Operation cancelled" errors
|
||||
- LED Devices: Allow to differentiate between recoverable/unrecoverable errors
|
||||
- Renamed LED area assignment naming to provide clarity on the processing algorithms
|
||||
|
||||
### Fixed
|
||||
|
||||
- Effects/Smoothing: Effects with dedicated smoothing settings will now run with those settings (even if general smoothing is off)
|
||||
- No interim color update after streaming and turning off WLED
|
||||
- LED-Matrix Layout: Add Cabling direction selection element again (#1566)
|
||||
- Restart correctly, if running as service (#1368)
|
||||
- Hue-Wizard: In case auto discovery failed, port 80 was not used as default (#1544)
|
||||
- Send only one reply per Start Instance request (#1551)
|
||||
- Add instance# in JSON-API replies (aligning to Add instance in websocket response to a subscription #1504 behaviour)
|
||||
- hyperion-remote: Extracting reply for a configGet request correctly (#1555)
|
||||
- Grabber fps setting was not applied correctly
|
||||
- Smoothing: No empty updates
|
||||
|
||||
### Technical
|
||||
- Add CodeQL for GitHub code scanning
|
||||
- Update to Protocol Buffers 3.21.12
|
||||
- Update to Mbed TLS 3.3.0
|
||||
- Qt6 alignments
|
||||
- cmake support of libcec without version in lib-name
|
||||
- Refactor for Python 3.11 deprecated functions
|
||||
|
||||
## Removed
|
||||
|
||||
## [2.0.14](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.14) - 2022-11
|
||||
|
||||
Hyperion's November release is not too big, but provides you with the latest updates and fixes. Many thanks to all contributors providing code (xkns, drzony) or translations.
|
||||
|
||||
### Added
|
||||
|
||||
- New color processing settings: Saturation gain and brightness/value gain. They allow compensating washed out HDR colors on LEDs (#822, #1092, #1142 partially).
|
||||
- New languages: Catalan & Greek
|
||||
- USB Capture: Support 3D processing for MJPEG
|
||||
- Forwarding: Support flat-/proto buffer input
|
||||
- Adalight: HyperSerial support (High speed protocol by awawa-dev) and support device feedback, show statistics provided by HyperSerial (modified by LordGrey) sketch
|
||||
- AtmoOrb: Firmware image for Particle/Photon
|
||||
|
||||
### Changed
|
||||
|
||||
- Serial LED-devices: Ability to select standard Baud rates, as well as defining a custom one
|
||||
- LED-devices: Do not switch-off device, if background effect is configured and will kick-in soon
|
||||
|
||||
### Fixed
|
||||
|
||||
- USB-Grabber: Fixed a SEGFAULT when compiled on Ubuntu Server 22.04
|
||||
- USB Grabber: Fixed memory leak when transforming MJPEG
|
||||
- ImageResampler: Apply only half crop for 3D to maintain crop ratio
|
||||
- Remote Control: Update Color calibration values when calibration settings were saved
|
||||
- Fixed Smoothing got out of sync when saving configuration
|
||||
- Smoothing: Removed "outputrate" as duplicate to update frequency
|
||||
- Queue LED-device on/off signals
|
||||
- UI: Correctly lookup current Instance Name
|
||||
- Fixed AtmoOrb firmware image
|
||||
|
||||
## [2.0.13](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.13) - 2022-05-22
|
||||
### Added
|
||||
|
||||
- Allow to build a "light" version of Hyperion, i.e. no grabbers, or services like flat-/proto buffers, boblight, CEC
|
||||
- Allow to restart Hyperion via Systray
|
||||
- mDNS support for all platforms inkl. Windows (#740)
|
||||
- Forwarder: mDNS discovery support and ease of configuration of other Hyperion instances
|
||||
- Grabber: mDNS discovery for standalone grabbers
|
||||
- Grabber: Dynamic loading of the Dispmanx Grabber (#1418)
|
||||
- Flatbuffer/Protobuf are now able to receive RGBA data
|
||||
- Added the instance number as part of the logline (#910). In the UI Log the instance is presented as a readable name.
|
||||
- New language: Japanese
|
||||
|
||||
##### LED-Devices
|
||||
- Support retry attempts enabling devices, e.g. to open devices after network or a device itself got available (#1302). Fixes that devices got "stuck", if initial open failed e.g. for WLED, Hue
|
||||
- New UDP-DDP (Distributed Display Protocol) device to overcome the 490 LEDs limitation of UDP-RAW
|
||||
- mDNS discovery support and ease of configuration (Cololight, Nanoleaf, Philips-Hue, WLED, Yeelight); removes the need to configure IP-Address, as address is resolved automatically.
|
||||
- Allow to disable switching LEDs on during startup (#1390)
|
||||
- Support additional Yeelight models
|
||||
- Show warning, if get properties failed (Network devices: indication that network device is not reachable)
|
||||
- LED Layout Classic: Support keystone correction via draggable corner LEDs
|
||||
- LED Layout Matrix: Support vertical cabling direction (#1420)
|
||||
|
||||
### Changed
|
||||
|
||||
- Color Smoothing is started in pause mode to save resources, when Hyperion starts with no active source
|
||||
- Boblight: Support multiple Boblight clients with different priorities
|
||||
- UI: LED Preview has been given a touch of Ambilight.
|
||||
- UI: Allow configuration of a Boblight server per LED-instance
|
||||
- UI: LED Layout - Removed limitations on indention
|
||||
- UI: Log output and LED preview window can be maximized
|
||||
- mDNS Publisher: Aligned Hyperion mDNS names to general conventions and simplified naming
|
||||
|
||||
##### LED-Devices
|
||||
- Refactored Philips Hue wizard and LED-Device
|
||||
- WLED's default streaming protocol is now UDP-DDP. More than 490 LEDs are supported now (requires minimum WLED 0.11.0). UDP-RAW is still supported in parallel (via expert settings).
|
||||
- Present all serial/TTY devices during discovery in expert mode; no filtering on existing vendor-identifier (Adalight serial USB does not show up in GUI #1458)
|
||||
|
||||
### Fixed
|
||||
|
||||
- UI: Ensure all configuration and system info response are there before reloading the page (#1430)
|
||||
- UI: Show all previous log lines in the Log UI (was only working for Debug before)
|
||||
- UI: Remote control: Treat duration=0 as endless
|
||||
- UI: Stop Web-Browser capture when user triggers other activities
|
||||
- Effects: Fix image URL in Matrix effect
|
||||
- Effects: Fix that start effect is stuck on UI
|
||||
- Effects: Fixed that effect specific smoothing setup was not applied when effect is started from available- or effects under configuration
|
||||
- Qt-Grabber: Fixed position handling of multiple monitors (#1320, #1403)
|
||||
- Standalone grabbers: Improved fps help/error text, fixed default address and port, fixed auto discovery of Hyperion server in hyperion-remote
|
||||
- hyperion-remote: Show image filename in UI for images sent
|
||||
- Reworked PriorityMuxer and Subscriptions
|
||||
- PriorityMuxer: Fix crash when running fore- and background effect in parallel during start-up
|
||||
- Update Priority, if first LED changes for COLOR update (to reflect color correctly in UI)
|
||||
- Start JSON and WebServer only, if Hyperion's instance 0 is available
|
||||
- Treat http headers case insensitive (RFC 2616)
|
||||
- Fixed: Signal detection does not switch off all instances (#1281)
|
||||
- Do not kill application on SIGILL-signal (#1435)
|
||||
- Fixed Qt version override, e.g. set via QTDIR
|
||||
- Update jsonschema and checkschema to allow checking hyperion.config.json.default on Windows
|
||||
|
||||
##### LED-Devices
|
||||
- Fixes that the Led-Device output flow was interrupted, by an enabling API request on an already enabled device (#967)
|
||||
- Yeelight - Workaround: Ignore error when setting music mode = off, but the music-mode is already off (#1372)
|
||||
- Fixed: Hue Entertainment mode does not resume after no signal (#930)
|
||||
|
||||
## Removed
|
||||
- UI: Removed sessions (of other Hyperions)
|
||||
- Replaced existing AVAHI/Bonjour code by QMdnsEngine
|
||||
|
||||
## [2.0.12](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.12) - 2021-11-20
|
||||
Hyperion's November release brings you some new features, removed IPv6 address related limitations, as well as fixing a couple of issues.
|
||||
|
||||
Hyperion packages can be installed now under Ubuntu (x64) and Debian (amd64/armhf) (incl. Raspberry Pi OS) via our own APT server.
|
||||
Details about the installation can be found in the installation.md and at apt.hyperion-project.org.
|
||||
|
||||
### Added
|
||||
|
||||
- New LED-device type: Razor Chroma.
|
||||
Note: Due to Chroma Razer API limitations, only one device can be configured.
|
||||
- APA102 - Support setting maximum brightness level (1-31)
|
||||
- New installation method (Drag'n Drop) for macOS.
|
||||
- hyperion-remote & standalone grabbers: IPv6 support
|
||||
- New languages: Danish & Hungarian
|
||||
|
||||
### Changed
|
||||
|
||||
- LED-Devices: Removed IPv6 limitations
|
||||
- Philips-Hue Wizard optimizations
|
||||
- JSON/Flatbuffer forwarder: Removed IPv6 limitations
|
||||
- Allow to import configurations from previous versions
|
||||
|
||||
Note: Existing configurations are migrated to new structures automatically
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed API Subscription (e.g. as used by HomeAssistant) (#1351)
|
||||
- Fixed APA102 protocol aligning to the standard defined, removed Latch-Time as not required by APA102 protocol (#1352, #1132)
|
||||
- Fixed hyperion-remote when sending multiple Hex-Colors with "Set Color" option
|
||||
- UI: Fixed "Selected Hyperion instance isn't running" issue (#1357)
|
||||
- Fixed Database migration version handling
|
||||
- Fixed Python ModuleNotFoundError (#1109)
|
||||
|
||||
### Technical
|
||||
|
||||
- Added Qt6 support
|
||||
- Migrated to MBEDTSL 3
|
||||
|
||||
## [2.0.0-alpha.11](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.11) - 2021-10-06
|
||||
|
||||
The release is primarily fixing issues introduced with alpha 10, but covering other findings too.
|
||||
Thanks to everybody highlighting real problem areas, as well as to those proactively providing fixes for integration via pull requests.
|
||||
|
@ -28,7 +216,7 @@ We did not weaken security, but provide you with an easy to use script to switch
|
|||
### Added:
|
||||
- Script to change the user Hyperion is executed with.
|
||||
To run Hyperion with root privileges (e.g. for WS281x) execute <br> `sudo updateHyperionUser -u root`
|
||||
- Gif effects can source Gifs via URLs in addition to local files as input
|
||||
- Gif effects can source Gifs via URLs in addition to local files as input
|
||||
|
||||
- System info screen: Added used config path and "is run under root/admin"
|
||||
- LED-Device enhancements
|
||||
|
@ -60,7 +248,7 @@ To run Hyperion with root privileges (e.g. for WS281x) execute <br> `sudo update
|
|||
- Escape XSS payload to avoid execution (#1292)
|
||||
- Include libqt5sql5-sqlite packaging dependency
|
||||
- Fixed embedded Python location (#1109)
|
||||
|
||||
|
||||
- LED-Devices
|
||||
- Fixed Philips Hue wizard (#1276)
|
||||
- Fixed AtmoOrb wizard
|
||||
|
@ -86,12 +274,12 @@ The refined color coding in the user-interfaces, helps you to quickly identify i
|
|||
|
||||
Of course, the release brings new features (e.g. USB Capture on Windows), as well as minor enhancements and a good number of fixes.
|
||||
|
||||
Note:
|
||||
Note:
|
||||
|
||||
- **IMPORTANT:** Due to the rework of the grabbers, both screen- and video grabbers are disabled after the upgrade to the new version.
|
||||
Please, re-enable the grabber of choice via the UI, validate the configuration and save the setup. The grabber should the restart.
|
||||
|
||||
- Hyperion packages can now be installed under Ubuntu (x64) and Debian (amd64/armhf) (incl. Raspberry Pi OS) via our own APT server.
|
||||
- Hyperion packages can now be installed under Ubuntu (x64) and Debian (amd64/armhf) (incl. Raspberry Pi OS) via our own APT server.
|
||||
Details about the installation can be found in the [installation.md](https://github.com/hyperion-project/hyperion.ng/blob/master/Installation.md) and at [apt.hyperion-project.org](apt.hyperion-project.org).
|
||||
- Find here more details on [supported platforms and configuration sets](https://github.com/hyperion-project/hyperion.ng/blob/master/doc/development/SupportedPlatforms.md)
|
||||
|
||||
|
|
622
CMakeLists.txt
622
CMakeLists.txt
|
@ -1,7 +1,19 @@
|
|||
cmake_minimum_required(VERSION 3.0.0)
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
message( STATUS "CMake Version: ${CMAKE_VERSION}" )
|
||||
|
||||
macro(addIndent text)
|
||||
if(${CMAKE_VERSION} VERSION_GREATER "3.16.0")
|
||||
list(APPEND CMAKE_MESSAGE_INDENT ${text})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(removeIndent)
|
||||
if(${CMAKE_VERSION} VERSION_GREATER "3.16.0")
|
||||
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
PROJECT(hyperion)
|
||||
|
||||
# Parse semantic version of version file and write version to config
|
||||
|
@ -19,10 +31,6 @@ set(CMAKE_AUTOMOC ON)
|
|||
# auto prepare .qrc files
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
if ( POLICY CMP0026 )
|
||||
CMAKE_POLICY( SET CMP0026 OLD )
|
||||
endif()
|
||||
|
||||
# Configure CCache if available
|
||||
find_program(CCACHE_FOUND ccache)
|
||||
if ( CCACHE_FOUND )
|
||||
|
@ -30,55 +38,90 @@ if ( CCACHE_FOUND )
|
|||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
||||
endif(CCACHE_FOUND)
|
||||
|
||||
if ("${CMAKE_VERSION}" VERSION_LESS "3.12.0")
|
||||
set(Python_ADDITIONAL_VERSIONS 3.5)
|
||||
find_package(PythonInterp 3.5 REQUIRED)
|
||||
else()
|
||||
find_package(Python3 3.5 COMPONENTS Interpreter Development REQUIRED)
|
||||
if(Python3_FOUND)
|
||||
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
||||
# enable C++17
|
||||
if(APPLE)
|
||||
include(CheckCXXCompilerFlag)
|
||||
CHECK_CXX_COMPILER_FLAG("Werror=unguarded-availability" REQUIRED_UNGUARDED_AVAILABILITY)
|
||||
if(REQUIRED_UNGUARDED_AVAILABILITY)
|
||||
list(APPEND CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "Werror=unguarded-availability")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "GNU")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-psabi")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
# Set build variables
|
||||
# Grabber
|
||||
SET ( DEFAULT_AMLOGIC OFF )
|
||||
SET ( DEFAULT_BOBLIGHT ON )
|
||||
SET ( DEFAULT_DISPMANX OFF )
|
||||
SET ( DEFAULT_DX OFF )
|
||||
SET ( DEFAULT_MF OFF )
|
||||
SET ( DEFAULT_OSX OFF )
|
||||
SET ( DEFAULT_QT ON )
|
||||
SET ( DEFAULT_V4L2 OFF )
|
||||
SET ( DEFAULT_AUDIO ON )
|
||||
SET ( DEFAULT_X11 OFF )
|
||||
SET ( DEFAULT_XCB OFF )
|
||||
SET ( DEFAULT_V4L2 OFF )
|
||||
SET ( DEFAULT_WS281XPWM OFF )
|
||||
SET ( DEFAULT_AVAHI ON )
|
||||
SET ( DEFAULT_USE_SHARED_AVAHI_LIBS ON )
|
||||
|
||||
# Input
|
||||
SET ( DEFAULT_BOBLIGHT_SERVER ON )
|
||||
SET ( DEFAULT_CEC OFF )
|
||||
SET ( DEFAULT_FLATBUF_SERVER ON )
|
||||
SET ( DEFAULT_PROTOBUF_SERVER ON )
|
||||
|
||||
# Output
|
||||
SET ( DEFAULT_FORWARDER ON )
|
||||
SET ( DEFAULT_FLATBUF_CONNECT ON )
|
||||
|
||||
# LED-Devices
|
||||
SET ( DEFAULT_DEV_NETWORK ON )
|
||||
SET ( DEFAULT_DEV_SERIAL ON )
|
||||
SET ( DEFAULT_DEV_SPI OFF )
|
||||
SET ( DEFAULT_DEV_TINKERFORGE OFF )
|
||||
SET ( DEFAULT_DEV_USB_HID OFF )
|
||||
SET ( DEFAULT_DEV_WS281XPWM OFF )
|
||||
|
||||
# Services
|
||||
SET ( DEFAULT_EFFECTENGINE ON )
|
||||
SET ( DEFAULT_EXPERIMENTAL OFF )
|
||||
SET ( DEFAULT_MDNS ON )
|
||||
SET ( DEFAULT_REMOTE_CTL ON )
|
||||
|
||||
# Build
|
||||
SET ( DEFAULT_JSONCHECKS ON )
|
||||
SET ( DEFAULT_DEPLOY_DEPENDENCIES ON )
|
||||
SET ( DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS OFF )
|
||||
SET ( DEFAULT_USE_SYSTEM_PROTO_LIBS OFF )
|
||||
SET ( DEFAULT_USE_SYSTEM_MBEDTLS_LIBS OFF )
|
||||
SET ( DEFAULT_USE_SYSTEM_QMDNS_LIBS OFF )
|
||||
SET ( DEFAULT_TESTS OFF )
|
||||
SET ( DEFAULT_EXPERIMENTAL OFF )
|
||||
SET ( DEFAULT_CEC OFF )
|
||||
SET ( DEFAULT_DEPLOY_DEPENDENCIES ON )
|
||||
|
||||
# Build Hyperion with a reduced set of functionality, overwrites other default values
|
||||
SET ( DEFAULT_HYPERION_LIGHT OFF )
|
||||
|
||||
IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
|
||||
SET ( DEFAULT_V4L2 ON )
|
||||
SET ( DEFAULT_SPIDEV ON )
|
||||
SET ( DEFAULT_TINKERFORGE ON )
|
||||
SET ( DEFAULT_FB ON )
|
||||
SET ( DEFAULT_USB_HID ON )
|
||||
SET ( DEFAULT_CEC ON )
|
||||
SET ( DEFAULT_FB ON )
|
||||
SET ( DEFAULT_V4L2 ON )
|
||||
SET ( DEFAULT_DEV_SPI ON )
|
||||
SET ( DEFAULT_DEV_TINKERFORGE ON )
|
||||
SET ( DEFAULT_DEV_USB_HID ON )
|
||||
SET ( DEFAULT_CEC ON )
|
||||
ELSEIF ( WIN32 )
|
||||
SET ( DEFAULT_DX ON )
|
||||
SET ( DEFAULT_MF ON )
|
||||
ELSE()
|
||||
SET ( DEFAULT_V4L2 OFF )
|
||||
SET ( DEFAULT_FB OFF )
|
||||
SET ( DEFAULT_SPIDEV OFF )
|
||||
SET ( DEFAULT_TINKERFORGE OFF )
|
||||
SET ( DEFAULT_USB_HID OFF )
|
||||
SET ( DEFAULT_CEC OFF )
|
||||
SET ( DEFAULT_FB OFF )
|
||||
SET ( DEFAULT_V4L2 OFF )
|
||||
SET ( DEFAULT_DEV_SPI OFF )
|
||||
SET ( DEFAULT_DEV_TINKERFORGE OFF )
|
||||
SET ( DEFAULT_DEV_USB_HID OFF )
|
||||
SET ( DEFAULT_CEC OFF )
|
||||
ENDIF()
|
||||
|
||||
if ( NOT DEFINED PLATFORM )
|
||||
|
@ -112,49 +155,50 @@ MACRO(FIRSTSUBDIR result curdir)
|
|||
FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
|
||||
SET(dirlist "")
|
||||
FOREACH(child ${children})
|
||||
IF(IS_DIRECTORY ${curdir}/${child})
|
||||
LIST(APPEND dirlist "${curdir}/${child}")
|
||||
BREAK()
|
||||
ENDIF()
|
||||
IF(IS_DIRECTORY ${curdir}/${child})
|
||||
LIST(APPEND dirlist "${curdir}/${child}")
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(${result} ${dirlist})
|
||||
ENDMACRO()
|
||||
|
||||
if ( "${PLATFORM}" MATCHES "osx" )
|
||||
# specify the min version of the target platform
|
||||
SET ( CMAKE_OSX_DEPLOYMENT_TARGET "10.15" )
|
||||
# add specific prefix paths
|
||||
FIRSTSUBDIR(SUBDIRQT "/usr/local/Cellar/qt")
|
||||
FIRSTSUBDIR(SUBDIRPY "/usr/local/opt/python3/Frameworks/Python.framework/Versions")
|
||||
SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${SUBDIRQT} ${SUBDIRPY} "/usr/local/opt/qt5" )
|
||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${SUBDIRPY})
|
||||
|
||||
include_directories("/opt/X11/include/")
|
||||
SET ( DEFAULT_OSX ON )
|
||||
SET ( DEFAULT_USB_HID ON )
|
||||
SET ( DEFAULT_OSX ON )
|
||||
SET ( DEFAULT_AUDIO OFF )
|
||||
SET ( DEFAULT_DEV_USB_HID ON )
|
||||
|
||||
elseif ( "${PLATFORM}" MATCHES "rpi" )
|
||||
SET ( DEFAULT_DISPMANX ON )
|
||||
SET ( DEFAULT_WS281XPWM ON )
|
||||
elseif ( "${PLATFORM}" STREQUAL "amlogic" )
|
||||
SET ( DEFAULT_DEV_WS281XPWM ON )
|
||||
elseif ( "${PLATFORM}" MATCHES "^amlogic" )
|
||||
SET ( DEFAULT_AMLOGIC ON )
|
||||
elseif ( "${PLATFORM}" STREQUAL "amlogic-dev" )
|
||||
SET ( DEFAULT_AMLOGIC ON )
|
||||
SET ( DEFAULT_DISPMANX OFF )
|
||||
SET ( DEFAULT_QT OFF )
|
||||
SET ( DEFAULT_CEC OFF )
|
||||
elseif ( "${PLATFORM}" STREQUAL "amlogic64" )
|
||||
SET ( DEFAULT_AMLOGIC ON )
|
||||
elseif ( "${PLATFORM}" MATCHES "x11" )
|
||||
if ( "${PLATFORM}" MATCHES "-dev$" )
|
||||
SET ( DEFAULT_AMLOGIC ON )
|
||||
SET ( DEFAULT_DISPMANX OFF )
|
||||
SET ( DEFAULT_QT OFF )
|
||||
SET ( DEFAULT_CEC OFF )
|
||||
endif()
|
||||
elseif ( "${PLATFORM}" MATCHES "^x11" )
|
||||
SET ( DEFAULT_X11 ON )
|
||||
SET ( DEFAULT_XCB ON )
|
||||
if ( "${PLATFORM}" STREQUAL "x11-dev" )
|
||||
if ( "${PLATFORM}" MATCHES "-dev$" )
|
||||
SET ( DEFAULT_AMLOGIC ON)
|
||||
SET ( DEFAULT_WS281XPWM ON )
|
||||
SET ( DEFAULT_DEV_WS281XPWM ON )
|
||||
endif()
|
||||
elseif ( "${PLATFORM}" STREQUAL "imx6" )
|
||||
SET ( DEFAULT_FB ON )
|
||||
elseif (WIN32)
|
||||
SET ( DEFAULT_AVAHI OFF)
|
||||
endif()
|
||||
|
||||
# enable tests for -dev builds
|
||||
if ( "${PLATFORM}" MATCHES "-dev" )
|
||||
if ( "${PLATFORM}" MATCHES "-dev$" )
|
||||
SET ( DEFAULT_TESTS ON )
|
||||
endif()
|
||||
|
||||
|
@ -164,114 +208,240 @@ ADD_DEFINITIONS( ${PLATFORM_DEFINE} )
|
|||
|
||||
# set the build options
|
||||
|
||||
option(ENABLE_BOBLIGHT "Enable BOBLIGHT server" ${DEFAULT_BOBLIGHT} )
|
||||
message(STATUS "ENABLE_BOBLIGHT = ${ENABLE_BOBLIGHT}")
|
||||
option(HYPERION_LIGHT "Build Hyperion with a reduced set of functionality" ${DEFAULT_HYPERION_LIGHT} )
|
||||
message(STATUS "HYPERION_LIGHT = ${HYPERION_LIGHT}")
|
||||
|
||||
if (HYPERION_LIGHT)
|
||||
message(STATUS "HYPERION_LIGHT: Hyperion is build with a reduced set of functionality.")
|
||||
# Disable Grabbers
|
||||
SET ( DEFAULT_AMLOGIC OFF )
|
||||
SET ( DEFAULT_DISPMANX OFF )
|
||||
SET ( DEFAULT_DX OFF )
|
||||
SET ( DEFAULT_FB OFF )
|
||||
SET ( DEFAULT_MF OFF )
|
||||
SET ( DEFAULT_OSX OFF )
|
||||
SET ( DEFAULT_QT OFF )
|
||||
SET ( DEFAULT_V4L2 OFF )
|
||||
SET ( DEFAULT_AUDIO OFF )
|
||||
SET ( DEFAULT_X11 OFF )
|
||||
SET ( DEFAULT_XCB OFF )
|
||||
|
||||
# Disable Input Servers
|
||||
SET ( DEFAULT_BOBLIGHT_SERVER OFF )
|
||||
SET ( DEFAULT_CEC OFF )
|
||||
SET ( DEFAULT_FLATBUF_SERVER OFF )
|
||||
SET ( DEFAULT_PROTOBUF_SERVER OFF )
|
||||
|
||||
# Disable Output Connectors
|
||||
SET ( DEFAULT_FORWARDER OFF )
|
||||
SET ( DEFAULT_FLATBUF_CONNECT OFF )
|
||||
|
||||
# Disable Services
|
||||
SET ( DEFAULT_EFFECTENGINE OFF )
|
||||
endif()
|
||||
|
||||
message(STATUS "Grabber options:")
|
||||
|
||||
addIndent(" - ")
|
||||
|
||||
option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC} )
|
||||
message(STATUS "ENABLE_AMLOGIC = ${ENABLE_AMLOGIC}")
|
||||
|
||||
if (ENABLE_AMLOGIC)
|
||||
SET(ENABLE_FB ON)
|
||||
else()
|
||||
option(ENABLE_FB "Enable the framebuffer grabber" ${DEFAULT_FB} )
|
||||
endif()
|
||||
|
||||
message(STATUS "ENABLE_FB = ${ENABLE_FB}")
|
||||
|
||||
option(ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ${DEFAULT_DISPMANX} )
|
||||
message(STATUS "ENABLE_DISPMANX = ${ENABLE_DISPMANX}")
|
||||
|
||||
option(ENABLE_OSX "Enable the OSX grabber" ${DEFAULT_OSX} )
|
||||
message(STATUS "ENABLE_OSX = ${ENABLE_OSX}")
|
||||
|
||||
option(ENABLE_SPIDEV "Enable the SPIDEV device" ${DEFAULT_SPIDEV} )
|
||||
message(STATUS "ENABLE_SPIDEV = ${ENABLE_SPIDEV}")
|
||||
|
||||
option(ENABLE_TINKERFORGE "Enable the TINKERFORGE device" ${DEFAULT_TINKERFORGE})
|
||||
message(STATUS "ENABLE_TINKERFORGE = ${ENABLE_TINKERFORGE}")
|
||||
|
||||
option(ENABLE_V4L2 "Enable the V4L2 grabber" ${DEFAULT_V4L2})
|
||||
message(STATUS "ENABLE_V4L2 = ${ENABLE_V4L2}")
|
||||
|
||||
option(ENABLE_MF "Enable the Media Foundation grabber" ${DEFAULT_MF})
|
||||
message(STATUS "ENABLE_MF = ${ENABLE_MF}")
|
||||
|
||||
option(ENABLE_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_WS281XPWM} )
|
||||
message(STATUS "ENABLE_WS281XPWM = ${ENABLE_WS281XPWM}")
|
||||
|
||||
option(ENABLE_AVAHI "Enable Zeroconf" ${DEFAULT_AVAHI})
|
||||
message(STATUS "ENABLE_AVAHI = " ${ENABLE_AVAHI})
|
||||
|
||||
option(ENABLE_USB_HID "Enable the libusb and hid devices" ${DEFAULT_USB_HID} )
|
||||
message(STATUS "ENABLE_USB_HID = ${ENABLE_USB_HID}")
|
||||
|
||||
option(ENABLE_CEC "Enable the libcec and CEC control" ${DEFAULT_CEC} )
|
||||
message(STATUS "ENABLE_CEC = ${ENABLE_CEC}")
|
||||
|
||||
option(ENABLE_X11 "Enable the X11 grabber" ${DEFAULT_X11})
|
||||
message(STATUS "ENABLE_X11 = ${ENABLE_X11}")
|
||||
|
||||
option(ENABLE_XCB "Enable the XCB grabber" ${DEFAULT_XCB})
|
||||
message(STATUS "ENABLE_XCB = ${ENABLE_XCB}")
|
||||
|
||||
option(ENABLE_QT "Enable the Qt grabber" ${DEFAULT_QT})
|
||||
message(STATUS "ENABLE_QT = ${ENABLE_QT}")
|
||||
|
||||
option(ENABLE_DX "Enable the DirectX grabber" ${DEFAULT_DX})
|
||||
message(STATUS "ENABLE_DX = ${ENABLE_DX}")
|
||||
|
||||
option(ENABLE_TESTS "Compile additional test applications" ${DEFAULT_TESTS})
|
||||
message(STATUS "ENABLE_TESTS = ${ENABLE_TESTS}")
|
||||
if (ENABLE_AMLOGIC)
|
||||
SET(ENABLE_FB ON)
|
||||
else()
|
||||
option(ENABLE_FB " Enable the framebuffer grabber" ${DEFAULT_FB} )
|
||||
endif()
|
||||
message(STATUS "ENABLE_FB = ${ENABLE_FB}")
|
||||
|
||||
option(ENABLE_PROFILER "enable profiler capabilities - not for release code" OFF)
|
||||
message(STATUS "ENABLE_PROFILER = ${ENABLE_PROFILER}")
|
||||
option(ENABLE_MF "Enable the Media Foundation grabber" ${DEFAULT_MF})
|
||||
message(STATUS "ENABLE_MF = ${ENABLE_MF}")
|
||||
|
||||
option(ENABLE_OSX "Enable the OSX grabber" ${DEFAULT_OSX} )
|
||||
message(STATUS "ENABLE_OSX = ${ENABLE_OSX}")
|
||||
|
||||
option(ENABLE_QT "Enable the Qt grabber" ${DEFAULT_QT})
|
||||
message(STATUS "ENABLE_QT = ${ENABLE_QT}")
|
||||
|
||||
option(ENABLE_V4L2 "Enable the V4L2 grabber" ${DEFAULT_V4L2})
|
||||
message(STATUS "ENABLE_V4L2 = ${ENABLE_V4L2}")
|
||||
|
||||
option(ENABLE_X11 "Enable the X11 grabber" ${DEFAULT_X11})
|
||||
message(STATUS "ENABLE_X11 = ${ENABLE_X11}")
|
||||
option(ENABLE_AUDIO "Enable the AUDIO grabber" ${DEFAULT_AUDIO})
|
||||
message(STATUS "ENABLE_AUDIO = ${ENABLE_AUDIO}")
|
||||
|
||||
option(ENABLE_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_WS281XPWM} )
|
||||
message(STATUS "ENABLE_WS281XPWM = ${ENABLE_WS281XPWM}")
|
||||
|
||||
option(ENABLE_XCB "Enable the XCB grabber" ${DEFAULT_XCB})
|
||||
message(STATUS "ENABLE_XCB = ${ENABLE_XCB}")
|
||||
|
||||
removeIndent()
|
||||
|
||||
message(STATUS "Input options:")
|
||||
addIndent(" - ")
|
||||
|
||||
option(ENABLE_BOBLIGHT_SERVER "Enable BOBLIGHT server" ${DEFAULT_BOBLIGHT_SERVER} )
|
||||
message(STATUS "ENABLE_BOBLIGHT_SERVER = ${ENABLE_BOBLIGHT_SERVER}")
|
||||
|
||||
option(ENABLE_CEC "Enable the libcec and CEC control" ${DEFAULT_CEC} )
|
||||
message(STATUS "ENABLE_CEC = ${ENABLE_CEC}")
|
||||
|
||||
option(ENABLE_FLATBUF_SERVER "Enable Flatbuffers server" ${DEFAULT_FLATBUF_SERVER} )
|
||||
message(STATUS "ENABLE_FLATBUF_SERVER = ${ENABLE_FLATBUF_SERVER}")
|
||||
|
||||
option(ENABLE_PROTOBUF_SERVER "Enable Protocol Buffers server" ${DEFAULT_PROTOBUF_SERVER} )
|
||||
message(STATUS "ENABLE_PROTOBUF_SERVER = ${ENABLE_PROTOBUF_SERVER}")
|
||||
|
||||
removeIndent()
|
||||
|
||||
message(STATUS "Output options:")
|
||||
addIndent(" - ")
|
||||
|
||||
option(ENABLE_FORWARDER "Enable Hyperion forwarding" ${DEFAULT_FORWARDER} )
|
||||
message(STATUS "ENABLE_FORWARDER = ${ENABLE_FORWARDER}")
|
||||
|
||||
if (ENABLE_FORWARDER)
|
||||
SET(ENABLE_FLATBUF_CONNECT ON)
|
||||
else()
|
||||
option(ENABLE_FLATBUF_CONNECT "Enable Flatbuffers connecting remotely" ${DEFAULT_FLATBUF_CONNECT} )
|
||||
endif()
|
||||
message(STATUS "ENABLE_FLATBUF_CONNECT = ${ENABLE_FLATBUF_CONNECT}")
|
||||
|
||||
removeIndent()
|
||||
|
||||
message(STATUS "LED-Device options:")
|
||||
addIndent(" - ")
|
||||
|
||||
option(ENABLE_DEV_NETWORK "Enable the Network devices" ${DEFAULT_DEV_NETWORK} )
|
||||
message(STATUS "ENABLE_DEV_NETWORK = ${ENABLE_DEV_NETWORK}")
|
||||
|
||||
option(ENABLE_DEV_SERIAL "Enable the Serial devices" ${DEFAULT_DEV_SERIAL} )
|
||||
message(STATUS "ENABLE_DEV_SERIAL = ${ENABLE_DEV_SERIAL}")
|
||||
|
||||
option(ENABLE_DEV_SPI "Enable the SPI device" ${DEFAULT_DEV_SPI} )
|
||||
message(STATUS "ENABLE_DEV_SPI = ${ENABLE_DEV_SPI}")
|
||||
|
||||
option(ENABLE_DEV_TINKERFORGE "Enable the TINKERFORGE device" ${DEFAULT_DEV_TINKERFORGE})
|
||||
message(STATUS "ENABLE_DEV_TINKERFORGE = ${ENABLE_DEV_TINKERFORGE}")
|
||||
|
||||
option(ENABLE_DEV_USB_HID "Enable the libusb and hid devices" ${DEFAULT_DEV_USB_HID} )
|
||||
message(STATUS "ENABLE_DEV_USB_HID = ${ENABLE_DEV_USB_HID}")
|
||||
|
||||
option(ENABLE_DEV_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_DEV_WS281XPWM} )
|
||||
message(STATUS "ENABLE_DEV_WS281XPWM = ${ENABLE_DEV_WS281XPWM}")
|
||||
|
||||
removeIndent()
|
||||
|
||||
message(STATUS "Services options:")
|
||||
addIndent(" - ")
|
||||
|
||||
option(ENABLE_EFFECTENGINE "Enable Effect-Engine" ${DEFAULT_EFFECTENGINE})
|
||||
message(STATUS "ENABLE_EFFECTENGINE = ${ENABLE_EFFECTENGINE}")
|
||||
|
||||
option(ENABLE_EXPERIMENTAL "Compile experimental features" ${DEFAULT_EXPERIMENTAL})
|
||||
message(STATUS "ENABLE_EXPERIMENTAL = ${ENABLE_EXPERIMENTAL}")
|
||||
|
||||
option(ENABLE_MDNS "Enable mDNS (aka Zeroconf)" ${DEFAULT_MDNS})
|
||||
message(STATUS "ENABLE_MDNS = ${ENABLE_MDNS}")
|
||||
|
||||
option(ENABLE_REMOTE_CTL "Enable Hyperion remote control" ${DEFAULT_REMOTE_CTL})
|
||||
message(STATUS "ENABLE_REMOTE_CTL = ${ENABLE_REMOTE_CTL}")
|
||||
|
||||
removeIndent()
|
||||
|
||||
message(STATUS "Build options:")
|
||||
addIndent(" - ")
|
||||
|
||||
option(ENABLE_JSONCHECKS "Validate json schema files" ${DEFAULT_JSONCHECKS})
|
||||
message(STATUS "ENABLE_JSONCHECKS = ${ENABLE_JSONCHECKS}")
|
||||
|
||||
option(ENABLE_DEPLOY_DEPENDENCIES "Deploy with dependencies" ${DEFAULT_DEPLOY_DEPENDENCIES})
|
||||
message(STATUS "ENABLE_DEPLOY_DEPENDENCIES = ${ENABLE_DEPLOY_DEPENDENCIES}")
|
||||
|
||||
if(ENABLE_FLATBUF_SERVER OR ENABLE_FLATBUF_CONNECT)
|
||||
message(STATUS "DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS = ${DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS}")
|
||||
endif()
|
||||
|
||||
if(ENABLE_PROTOBUF_SERVER)
|
||||
message(STATUS "DEFAULT_USE_SYSTEM_PROTO_LIBS = ${DEFAULT_USE_SYSTEM_PROTO_LIBS}")
|
||||
endif()
|
||||
|
||||
message(STATUS "DEFAULT_USE_SYSTEM_MBEDTLS_LIBS = ${DEFAULT_USE_SYSTEM_MBEDTLS_LIBS}")
|
||||
|
||||
if (ENABLE_MDNS)
|
||||
message(STATUS "DEFAULT_USE_SYSTEM_QMDNS_LIBS = ${DEFAULT_USE_SYSTEM_QMDNS_LIBS}")
|
||||
endif()
|
||||
|
||||
|
||||
option(ENABLE_PROFILER "enable profiler capabilities - not for release code" OFF)
|
||||
message(STATUS "ENABLE_PROFILER = ${ENABLE_PROFILER}")
|
||||
|
||||
option(ENABLE_TESTS "Compile additional test applications" ${DEFAULT_TESTS})
|
||||
message(STATUS "ENABLE_TESTS = ${ENABLE_TESTS}")
|
||||
|
||||
removeIndent()
|
||||
|
||||
SET ( FLATBUFFERS_INSTALL_BIN_DIR ${CMAKE_BINARY_DIR}/flatbuf )
|
||||
SET ( FLATBUFFERS_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/flatbuf )
|
||||
|
||||
SET ( PROTOBUF_INSTALL_BIN_DIR ${CMAKE_BINARY_DIR}/proto )
|
||||
SET ( PROTOBUF_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/proto )
|
||||
|
||||
# check all json files
|
||||
FILE ( GLOB_RECURSE HYPERION_SCHEMAS RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libsrc/*schema*.json )
|
||||
SET( JSON_FILES ${CMAKE_BINARY_DIR}/config/hyperion.config.json.default ${HYPERION_SCHEMAS})
|
||||
if(ENABLE_JSONCHECKS OR ENABLE_EFFECTENGINE)
|
||||
if ("${CMAKE_VERSION}" VERSION_LESS "3.12.0")
|
||||
set(Python_ADDITIONAL_VERSIONS 3.5)
|
||||
find_package(PythonInterp 3.5 REQUIRED)
|
||||
else()
|
||||
find_package(Python3 3.5 COMPONENTS Interpreter Development REQUIRED)
|
||||
if(Python3_FOUND)
|
||||
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkjson.py ${JSON_FILES}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE CHECK_JSON_FAILED
|
||||
)
|
||||
IF ( ${CHECK_JSON_FAILED} )
|
||||
MESSAGE (FATAL_ERROR "check of json files failed" )
|
||||
ENDIF ()
|
||||
if(ENABLE_JSONCHECKS)
|
||||
# check all json files
|
||||
FILE ( GLOB_RECURSE HYPERION_SCHEMAS RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libsrc/*schema*.json )
|
||||
SET( JSON_FILES ${CMAKE_BINARY_DIR}/config/hyperion.config.json.default ${HYPERION_SCHEMAS})
|
||||
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkeffects.py effects effects/schema
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE CHECK_EFFECTS_FAILED
|
||||
)
|
||||
IF ( ${CHECK_EFFECTS_FAILED} )
|
||||
MESSAGE (FATAL_ERROR "check of json effect files failed" )
|
||||
ENDIF ()
|
||||
|
||||
# for python 3 the checkschema.py file must be rewritten
|
||||
# TODO on windows it can't resolve the path inside the file (Das System kann den angegebenen Pfad nicht finden: '\\schema\\schema-general.json')
|
||||
IF (NOT WIN32)
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND python test/jsonchecks/checkschema.py ${CMAKE_BINARY_DIR}/config/hyperion.config.json.default libsrc/hyperion/hyperion.schema.json
|
||||
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkjson.py ${JSON_FILES}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE CHECK_JSON_FAILED
|
||||
)
|
||||
IF ( ${CHECK_JSON_FAILED} )
|
||||
MESSAGE (FATAL_ERROR "check of json files failed" )
|
||||
ENDIF ()
|
||||
|
||||
if(ENABLE_EFFECTENGINE)
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkeffects.py effects effects/schema
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE CHECK_EFFECTS_FAILED
|
||||
)
|
||||
IF ( ${CHECK_EFFECTS_FAILED} )
|
||||
MESSAGE (FATAL_ERROR "check of json effect files failed" )
|
||||
ENDIF ()
|
||||
endif()
|
||||
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkschema.py ${CMAKE_BINARY_DIR}/config/hyperion.config.json.default libsrc/hyperion/hyperion.schema.json
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE CHECK_CONFIG_FAILED
|
||||
)
|
||||
ENDIF()
|
||||
IF ( ${CHECK_CONFIG_FAILED} )
|
||||
MESSAGE (FATAL_ERROR "check of json default config failed" )
|
||||
ENDIF ()
|
||||
|
||||
IF ( ${CHECK_CONFIG_FAILED} )
|
||||
MESSAGE (FATAL_ERROR "check of json default config failed" )
|
||||
ENDIF ()
|
||||
endif(ENABLE_JSONCHECKS)
|
||||
|
||||
# Add project specific cmake modules (find, etc)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
@ -297,26 +467,6 @@ include_directories(${CMAKE_SOURCE_DIR}/include)
|
|||
# Prefer static linking over dynamic
|
||||
#set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so")
|
||||
|
||||
# enable C++11; MSVC doesn't have c++11 feature switch
|
||||
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
include(CheckCXXCompilerFlag)
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||
if (CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-psabi")
|
||||
endif()
|
||||
if(COMPILER_SUPPORTS_CXX11)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
elseif(COMPILER_SUPPORTS_CXX0X)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
else()
|
||||
message(STATUS "No support for C++11 detected. Compilation will most likely fail on your compiler")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# MSVC options
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
# Search for Windows SDK
|
||||
|
@ -324,44 +474,6 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
|||
message(STATUS "WINDOWS SDK: ${WINDOWSSDK_LATEST_DIR} ${WINDOWSSDK_LATEST_NAME}")
|
||||
message(STATUS "MSVC VERSION: ${MSVC_VERSION}")
|
||||
|
||||
# Qt5 default install path with msvc2017 64bit component
|
||||
# The Qt5_DIR should point to Qt5Config.cmake -> C:/Qt/5.xx/msvc2017_64/lib/cmake/Qt5
|
||||
# The CMAKE_PREFIX_PATH should point to the install directory -> C:/Qt/5.xx/msvc2017_64
|
||||
#
|
||||
# Alternatively, use Qt5_BASE_DIR environment variable to point to Qt version to be used
|
||||
# In MSVC19 add into CMakeSettings.json
|
||||
#
|
||||
# "environments": [
|
||||
# {
|
||||
# "Qt5_BASE_DIR": "D:/Qt/5.15.1/msvc2019_64"
|
||||
# }
|
||||
# ]
|
||||
|
||||
if (NOT DEFINED ENV{Qt5_BASE_DIR})
|
||||
FIRSTSUBDIR(SUBDIRQT "C:/Qt")
|
||||
SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${SUBDIRQT}/msvc2019_64")
|
||||
else()
|
||||
message(STATUS "Qt5_BASE_DIR: $ENV{Qt5_BASE_DIR}")
|
||||
message(STATUS "Add Qt5_BASE_DIR: $ENV{Qt5_BASE_DIR} to CMAKE_PREFIX_PATH")
|
||||
SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "$ENV{Qt5_BASE_DIR}")
|
||||
endif()
|
||||
|
||||
if (NOT DEFINED ENV{Qt5_DIR})
|
||||
if (NOT DEFINED ENV{Qt5_BASE_DIR})
|
||||
SET (qt_module_path "${SUBDIRQT}/msvc2019_64/lib/cmake/Qt5")
|
||||
else ()
|
||||
SET (qt_module_path "$ENV{Qt5_BASE_DIR}/lib/cmake/Qt5")
|
||||
endif()
|
||||
else()
|
||||
SET (qt_module_path "$ENV{Qt5_DIR}")
|
||||
endif()
|
||||
|
||||
message(STATUS "Add ${qt_module_path} to CMAKE_MODULE_PATH")
|
||||
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${qt_module_path}")
|
||||
|
||||
#message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}")
|
||||
#message(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
|
||||
|
||||
# Search for DirectX9
|
||||
if (ENABLE_DX)
|
||||
find_package(DirectX9 REQUIRED)
|
||||
|
@ -370,60 +482,90 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
|||
endif()
|
||||
|
||||
# Use GNU gold linker if available
|
||||
if (NOT WIN32)
|
||||
if (NOT WIN32 AND NOT APPLE)
|
||||
include (${CMAKE_CURRENT_SOURCE_DIR}/cmake/LDGold.cmake)
|
||||
endif()
|
||||
|
||||
if (ENABLE_DEPLOY_DEPENDENCIES)
|
||||
# Don't create new dynamic tags (RUNPATH)
|
||||
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
|
||||
endif()
|
||||
|
||||
# setup -rpath to search for shared libs in BINARY/../lib folder
|
||||
if (UNIX AND NOT APPLE)
|
||||
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
|
||||
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib")
|
||||
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
endif ()
|
||||
# Don't create new dynamic tags (RUNPATH) and setup -rpath to search for shared libs in BINARY/../lib folder (only for Unix)
|
||||
if (ENABLE_DEPLOY_DEPENDENCIES AND UNIX AND NOT APPLE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
|
||||
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
|
||||
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib")
|
||||
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
endif ()
|
||||
|
||||
# add QT5 dependency
|
||||
IF ( CMAKE_CROSSCOMPILING )
|
||||
|
||||
file(GLOB QT_BIN ${QT_BIN_PATH})
|
||||
|
||||
set(QT_MOC_EXECUTABLE ${QT_BIN}/moc)
|
||||
add_executable(Qt5::moc IMPORTED)
|
||||
set_property(TARGET Qt5::moc PROPERTY IMPORTED_LOCATION ${QT_MOC_EXECUTABLE})
|
||||
|
||||
set(QT_RCC_EXECUTABLE ${QT_BIN}/rcc)
|
||||
add_executable(Qt5::rcc IMPORTED)
|
||||
set_property(TARGET Qt5::rcc PROPERTY IMPORTED_LOCATION ${QT_RCC_EXECUTABLE})
|
||||
|
||||
message(STATUS "QT_BIN_PATH = ${QT_BIN}")
|
||||
message(STATUS "QT_MOC_EXECUTABLE = ${QT_MOC_EXECUTABLE}")
|
||||
message(STATUS "QT_RCC_EXECUTABLE = ${QT_RCC_EXECUTABLE}")
|
||||
|
||||
ENDIF()
|
||||
|
||||
SET(QT_MIN_VERSION "5.5.0")
|
||||
find_package(Qt5 COMPONENTS Core Gui Network SerialPort Sql REQUIRED)
|
||||
message( STATUS "Found Qt Version: ${Qt5Core_VERSION}" )
|
||||
IF ( "${Qt5Core_VERSION}" VERSION_LESS "${QT_MIN_VERSION}" )
|
||||
message( FATAL_ERROR "Your Qt version is to old! Minimum required ${QT_MIN_VERSION}" )
|
||||
ENDIF()
|
||||
|
||||
# Add libusb and pthreads
|
||||
find_package(libusb-1.0 REQUIRED)
|
||||
find_package(Threads REQUIRED)
|
||||
add_definitions(${QT_DEFINITIONS})
|
||||
|
||||
if(APPLE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-framework CoreGraphics")
|
||||
endif()
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
# Allow to overwrite QT base directory
|
||||
# Either supply QTDIR as -DQTDIR=<path> to cmake or set and environment variable QTDIR pointing to the Qt installation
|
||||
# For Windows and OSX, the default Qt installation path are tried to resolved automatically
|
||||
if (NOT DEFINED QTDIR)
|
||||
if (DEFINED ENV{QTDIR})
|
||||
set(QTDIR $ENV{QTDIR})
|
||||
else()
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
FIRSTSUBDIR(SUBDIRQT "C:/Qt")
|
||||
if (NOT ${SUBDIRQT} STREQUAL "")
|
||||
set(QTDIR "${SUBDIRQT}/msvc2019_64")
|
||||
endif()
|
||||
elseif ( "${PLATFORM}" MATCHES "osx" )
|
||||
# QT6 x86_64 location
|
||||
if (EXISTS /usr/local/opt/qt6)
|
||||
set(QTDIR "/usr/local/opt/qt6")
|
||||
# QT6 arm64 location
|
||||
elseif (EXISTS /opt/homebrew/opt/qt@6)
|
||||
set(QTDIR "/opt/homebrew/opt/qt@6")
|
||||
# QT5 x86_64 location
|
||||
elseif (EXISTS /usr/local/opt/qt5)
|
||||
set(QTDIR "/usr/local/opt/qt5")
|
||||
# QT5 arm64 location
|
||||
elseif (EXISTS /opt/homebrew/opt/qt@5)
|
||||
set(QTDIR "/opt/homebrew/opt/qt@5")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (DEFINED QTDIR)
|
||||
message(STATUS "Add QTDIR: ${QTDIR} to CMAKE_PREFIX_PATH")
|
||||
list(PREPEND CMAKE_PREFIX_PATH ${QTDIR} "${QTDIR}/lib")
|
||||
endif()
|
||||
|
||||
if (CMAKE_PREFIX_PATH)
|
||||
message( STATUS "CMAKE_PREFIX_PATH used: ${CMAKE_PREFIX_PATH}" )
|
||||
endif()
|
||||
|
||||
# find QT libs
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Gui Network Sql Widgets REQUIRED)
|
||||
message( STATUS "Found Qt Version: ${QT_VERSION}" )
|
||||
|
||||
if (${QT_VERSION_MAJOR} GREATER_EQUAL 6 )
|
||||
SET(QT_MIN_VERSION "6.2.2")
|
||||
else()
|
||||
SET(QT_MIN_VERSION "5.5.0")
|
||||
endif()
|
||||
|
||||
if ( "${QT_VERSION}" VERSION_LESS "${QT_MIN_VERSION}" )
|
||||
message( FATAL_ERROR "Your Qt version is to old! Minimum required ${QT_MIN_VERSION}" )
|
||||
endif()
|
||||
|
||||
find_package(Qt${QT_VERSION_MAJOR} ${QT_VERSION} COMPONENTS Core Gui Network Sql Widgets REQUIRED)
|
||||
|
||||
message( STATUS "Qt version used: ${QT_VERSION}" )
|
||||
|
||||
if (APPLE AND (${QT_VERSION_MAJOR} GREATER_EQUAL 6) )
|
||||
set(OPENSSL_ROOT_DIR /usr/local/opt/openssl)
|
||||
endif()
|
||||
|
||||
# Add libusb and pthreads
|
||||
find_package(libusb-1.0 REQUIRED)
|
||||
add_definitions(${QT_DEFINITIONS})
|
||||
|
||||
# Add the source/lib directories
|
||||
add_subdirectory(dependencies)
|
||||
add_subdirectory(libsrc)
|
||||
|
@ -437,10 +579,16 @@ add_subdirectory(resources)
|
|||
|
||||
# remove generated files on make cleaan too
|
||||
LIST( APPEND GENERATED_QRC
|
||||
${CMAKE_BINARY_DIR}/EffectEngine.qrc
|
||||
${CMAKE_BINARY_DIR}/WebConfig.qrc
|
||||
${CMAKE_BINARY_DIR}/HyperionConfig.h
|
||||
)
|
||||
|
||||
if(ENABLE_EFFECTENGINE)
|
||||
LIST( APPEND GENERATED_QRC
|
||||
${CMAKE_BINARY_DIR}/EffectEngine.qrc
|
||||
)
|
||||
endif ()
|
||||
|
||||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${GENERATED_QRC}" )
|
||||
|
||||
# uninstall target
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "x64-Debug",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${projectDir}\\build-${name}",
|
||||
"installRoot": "${projectDir}\\install-${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"variables": [
|
||||
// Replace path with your TurboJPEG installation path
|
||||
//{ "name": "TurboJPEG_INCLUDE_DIRS", "type": "PATH", "value": "YourTurboJPEGPath/libjpeg-turbo64/include" },
|
||||
//{ "name": "TurboJPEG_LIBRARY", "value": "YourTurboJPEGPath/libjpeg-turbo64/lib/turbojpeg.lib", "type": "FILEPATH" }
|
||||
],
|
||||
"environments": [
|
||||
// Replace path with your installation path
|
||||
//{ "QTDIR": "C:/Qt/6.2.2/msvc2019_64/" },
|
||||
//{ "VULKAN_SDK": "C:/VulkanSDK/1.2.182.0" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "x64-Release",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Release",
|
||||
"buildRoot": "${projectDir}\\build-${name}",
|
||||
"installRoot": "${projectDir}\\install-${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "package",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"variables": [
|
||||
// Replace path with your TurboJPEG installation path
|
||||
//{ "name": "TurboJPEG_INCLUDE_DIRS", "type": "PATH", "value": "YourTurboJPEGPath/libjpeg-turbo64/include" },
|
||||
//{ "name": "TurboJPEG_LIBRARY", "value": "YourTurboJPEGPath/libjpeg-turbo64/lib/turbojpeg.lib", "type": "FILEPATH" }
|
||||
],
|
||||
"environments": [
|
||||
// Replace path with your installation path
|
||||
//{ "QTDIR": "C:/Qt/6.2.2/msvc2019_64/" },
|
||||
//{ "VULKAN_SDK": "C:/VulkanSDK/1.2.182.0" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,62 +1,93 @@
|
|||
// Generated config file
|
||||
|
||||
// Define to enable the DispmanX grabber
|
||||
#cmakedefine ENABLE_DISPMANX
|
||||
|
||||
// Define to enable the V4L2 grabber
|
||||
#cmakedefine ENABLE_V4L2
|
||||
|
||||
// Define to enable the Media Foundation grabber
|
||||
#cmakedefine ENABLE_MF
|
||||
|
||||
// Define to enable the Framebuffer grabber
|
||||
#cmakedefine ENABLE_FB
|
||||
|
||||
// Define to enable the AMLogic grabber
|
||||
#cmakedefine ENABLE_AMLOGIC
|
||||
|
||||
// Define to enable the DispmanX grabber
|
||||
#cmakedefine ENABLE_DISPMANX
|
||||
|
||||
// Define to enable the DirectX grabber
|
||||
#cmakedefine ENABLE_DX
|
||||
|
||||
// Define to enable the framebuffer grabber
|
||||
// Define to enable the Audio grabber
|
||||
#cmakedefine ENABLE_AUDIO
|
||||
|
||||
// Define to enable the Framebuffer grabber
|
||||
#cmakedefine ENABLE_FB
|
||||
|
||||
// Define to enable the Media Foundation grabber
|
||||
#cmakedefine ENABLE_MF
|
||||
|
||||
// Define to enable the OSX grabber
|
||||
#cmakedefine ENABLE_OSX
|
||||
|
||||
// Define to enable the Qt grabber
|
||||
#cmakedefine ENABLE_QT
|
||||
|
||||
// Define to enable the V4L2 grabber
|
||||
#cmakedefine ENABLE_V4L2
|
||||
|
||||
// Define to enable the X11 grabber
|
||||
#cmakedefine ENABLE_X11
|
||||
|
||||
// Define to enable the XCB grabber
|
||||
#cmakedefine ENABLE_XCB
|
||||
|
||||
// Define to enable the Qt grabber
|
||||
#cmakedefine ENABLE_QT
|
||||
|
||||
// Define to enable the DirectX grabber
|
||||
#cmakedefine ENABLE_DX
|
||||
|
||||
// Define to enable the SPI-Device
|
||||
#cmakedefine ENABLE_SPIDEV
|
||||
|
||||
// Define to enable the WS281x-PWM-via-DMA-device using jgarff's library
|
||||
#cmakedefine ENABLE_WS281XPWM
|
||||
|
||||
// Define to enable the Tinkerforge device
|
||||
#cmakedefine ENABLE_TINKERFORGE
|
||||
|
||||
// Define to enable AVAHI
|
||||
#cmakedefine ENABLE_AVAHI
|
||||
// Define to enable boblight server
|
||||
#cmakedefine ENABLE_BOBLIGHT_SERVER
|
||||
|
||||
// Define to enable CEC
|
||||
#cmakedefine ENABLE_CEC
|
||||
|
||||
// Define to enable boblight server
|
||||
#cmakedefine ENABLE_BOBLIGHT
|
||||
// Define to enable flatbuffer server
|
||||
#cmakedefine ENABLE_FLATBUF_SERVER
|
||||
|
||||
// Define to enable protocol buffer server
|
||||
#cmakedefine ENABLE_PROTOBUF_SERVER
|
||||
|
||||
// Define to enable hyperion forwarding
|
||||
#cmakedefine ENABLE_FORWARDER
|
||||
|
||||
// Define to enable enable flatbuffer connect
|
||||
#cmakedefine ENABLE_FLATBUF_CONNECT
|
||||
|
||||
// Define to enable protocol buffer connect
|
||||
#cmakedefine ENABLE_PROTOBUF_CONNECT
|
||||
|
||||
// Define to enable the network devices
|
||||
#cmakedefine ENABLE_DEV_NETWORK
|
||||
|
||||
// Define to enable the Serial devices
|
||||
#cmakedefine ENABLE_DEV_SERIAL
|
||||
|
||||
// Define to enable the SPI devices
|
||||
#cmakedefine ENABLE_DEV_SPI
|
||||
|
||||
// Define to enable the Tinkerforge devices
|
||||
#cmakedefine ENABLE_DEV_TINKERFORGE
|
||||
|
||||
// Define to enable the USB / HID devices
|
||||
#cmakedefine ENABLE_USB_HID
|
||||
#cmakedefine ENABLE_DEV_USB_HID
|
||||
|
||||
// Define to enable profiler for development purpose
|
||||
#cmakedefine ENABLE_PROFILER
|
||||
// Define to enable the WS281x-PWM-via-DMA-device using jgarff's library
|
||||
#cmakedefine ENABLE_DEV_WS281XPWM
|
||||
|
||||
// Define to enable MDNS
|
||||
#cmakedefine ENABLE_MDNS
|
||||
|
||||
// Define to enable EFFECTENGINE
|
||||
#cmakedefine ENABLE_EFFECTENGINE
|
||||
|
||||
// Define to enable experimental features
|
||||
#cmakedefine ENABLE_EXPERIMENTAL
|
||||
|
||||
// Define to enable Hyperion remote control
|
||||
#cmakedefine ENABLE_REMOTE_CTL
|
||||
|
||||
// Define to enable profiler for development purpose
|
||||
#cmakedefine ENABLE_PROFILER
|
||||
|
||||
// Define to enable deploy dependencies to packages
|
||||
#cmakedefine ENABLE_DEPLOY_DEPENDENCIES
|
||||
|
||||
|
|
|
@ -1,28 +1,35 @@
|
|||
|
||||
# Installation
|
||||
This page contains general installation steps for Hyperion.
|
||||
|
||||
This page contains general installation steps for Hyperion. For Linux please follow the instructions below. For Windows is an installation file available on our [Release page](https://github.com/hyperion-project/hyperion.ng/releases).
|
||||
## Windows & macOS
|
||||
For Windows and macOS is an installation file available on our [Release page](https://github.com/hyperion-project/hyperion.ng/releases).
|
||||
|
||||
## Linux:
|
||||
On the following operating systems, Hyperion can currently be installed/updated using the method listed below:
|
||||
- Raspbian Stretch/Raspberry Pi OS and later (armhf)
|
||||
- Debian Stretch (9) and later (armhf/x64)
|
||||
- Ubuntu 18.04 and later (x64)
|
||||
- Raspbian Buster/Raspberry Pi OS and later (armhf/arm64)
|
||||
- Debian Buster(10) and later (armhf/arm64/x86_64)
|
||||
- Ubuntu 20.04 and later (armhf/arm64/x86_64)
|
||||
|
||||
***
|
||||
|
||||
### Install Hyperion:
|
||||
1. Add Hyperion’s official GPG key:
|
||||
1. Add necessary packages for the installation:
|
||||
```bash
|
||||
sudo apt-get update && sudo apt-get install wget gpg apt-transport-https lsb-release
|
||||
```
|
||||
|
||||
2. Add Hyperion’s official GPG key:
|
||||
```bash
|
||||
wget -qO- https://apt.hyperion-project.org/hyperion.pub.key | sudo gpg --dearmor -o /usr/share/keyrings/hyperion.pub.gpg
|
||||
```
|
||||
|
||||
2. Add Hyperion-Project to your APT sources:
|
||||
3. Add Hyperion-Project to your APT sources:
|
||||
```bash
|
||||
echo "deb [signed-by=/usr/share/keyrings/hyperion.pub.gpg] https://apt.hyperion-project.org/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hyperion.list
|
||||
```
|
||||
|
||||
3. Update your local package index and install Hyperion:
|
||||
4. Update your local package index and install Hyperion:
|
||||
```bash
|
||||
sudo apt-get update && sudo apt-get install hyperion
|
||||
```
|
||||
|
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2014-2021 Hyperion Project
|
||||
Copyright (c) 2014-2023 Hyperion Project
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
# Privacy Policy
|
||||
|
||||
Hyperion-Project takes your privacy seriously. To better protect your privacy we provide this privacy policy notice
|
||||
explaining the way your personal or technical information is collected and used.
|
||||
|
||||
|
||||
## Collection of Routine Information
|
||||
|
||||
This application does not collect or transmit any user's personally identifiable information.
|
||||
No personal information is used, stored, secured or disclosed by services this application works with.
|
||||
Limited technical information is sent (such as IP addresses included in the HTTP/S calls the application makes) but none of that is used or stored.
|
||||
|
||||
|
||||
## Cookies
|
||||
|
||||
Where necessary, this app uses cookies to store information about a visitor’s preferences and history
|
||||
in order to better serve the user and/or present the user with customized content.
|
||||
|
||||
|
||||
## Links to Third Party Websites
|
||||
|
||||
We have included links on this app for your use and reference. We are not responsible for the privacy policies on these websites.
|
||||
You should be aware that the privacy policies of these websites may differ from our own.
|
||||
|
||||
|
||||
## Security
|
||||
|
||||
The security of your personal information is important to us. That is the reason we do not collect any information,
|
||||
but remember that no method of transmission over the Internet, or method of electronic storage,
|
||||
is 100% secure. While we strive to use commercially acceptable means to protect your personal information,
|
||||
we cannot guarantee its absolute security.
|
||||
|
||||
|
||||
## Changes To This Privacy Policy
|
||||
|
||||
This Privacy Policy is effective as of February 2022 and will remain in effect except with respect to any changes in its provisions in the future,
|
||||
which will be in effect immediately after being posted on this page.
|
||||
|
||||
We reserve the right to update or change our Privacy Policy at any time and you should check this Privacy Policy periodically.
|
||||
If we make any material changes to this Privacy Policy, we will notify you by placing a prominent notice on our app.
|
||||
|
||||
|
||||
## Contact Information
|
||||
|
||||
For any questions or concerns regarding the privacy policy, please open up an issue on our GitHub
|
||||
https://github.com/hyperion-project/hyperion.ng
|
52
README.md
52
README.md
|
@ -1,14 +1,20 @@
|
|||
![Hyperion](doc/logo.png)
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="doc/logo_dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="doc/logo_light.png">
|
||||
<img alt="Hyperion" src="doc/logo_light.png">
|
||||
</picture>
|
||||
|
||||
[![Latest-Release](https://img.shields.io/github/v/release/hyperion-project/hyperion.ng?include_prereleases)](https://github.com/hyperion-project/hyperion.ng/releases)
|
||||
[![Latest-Release](https://img.shields.io/github/v/release/hyperion-project/hyperion.ng?include_prereleases&label=Latest%20Release&logo=github&logoColor=white&color=0f83e7)](https://github.com/hyperion-project/hyperion.ng/releases)
|
||||
[![GitHub Actions](https://github.com/hyperion-project/hyperion.ng/workflows/Hyperion%20CI%20Build/badge.svg?branch=master)](https://github.com/hyperion-project/hyperion.ng/actions)
|
||||
[![LGTM](https://img.shields.io/lgtm/alerts/g/hyperion-project/hyperion.ng.svg)](https://lgtm.com/projects/g/hyperion-project/hyperion.ng/alerts/)
|
||||
[![Documentation](https://codedocs.xyz/hyperion-project/hyperion.ng.svg)](https://codedocs.xyz/hyperion-project/hyperion.ng/)
|
||||
[![made-with-love](https://img.shields.io/badge/Made%20with-♥-ff0000.svg)](#)
|
||||
[![CodeQL Analysis](https://github.com/hyperion-project/hyperion.ng/actions/workflows/codeql.yml/badge.svg)](https://github.com/hyperion-project/hyperion.ng/actions/workflows/codeql.yml)
|
||||
[![Forum](https://img.shields.io/website/https/hyperion-project.org.svg?label=Forum&down_color=red&down_message=offline&up_color=4bc51d&up_message=online&logo=homeadvisor&logoColor=white)](https://www.hyperion-project.org)
|
||||
[![Documentation](https://img.shields.io/website/https/docs.hyperion-project.org.svg?label=Documentation&down_color=red&down_message=offline&up_color=4bc51d&up_message=online&logo=read-the-docs)](https://docs.hyperion-project.org)
|
||||
[![Discord](https://img.shields.io/discord/785578322167463937?label=Discord&logo=discord&logoColor=white&color=4bc51d)](https://discord.gg/XtVTb3HEKS)
|
||||
![made-with-love](https://img.shields.io/badge/Made%20With-♥-ff0000.svg)
|
||||
|
||||
## About Hyperion
|
||||
|
||||
[Hyperion](https://github.com/hyperion-project/hyperion.ng) is an opensource [Bias or Ambient Lighting](https://en.wikipedia.org/wiki/Bias_lighting) implementation which you might know from TV manufacturers. It supports many LED devices and video grabbers. The project is still in a alpha development stage (no stable release available).
|
||||
[Hyperion](https://github.com/hyperion-project/hyperion.ng) is an opensource [Bias or Ambient Lighting](https://en.wikipedia.org/wiki/Bias_lighting) implementation which you might know from TV manufacturers. It supports many LED devices and video grabbers.
|
||||
|
||||
![Screenshot](doc/screenshot.png)
|
||||
|
||||
|
@ -22,38 +28,48 @@
|
|||
* A scriptable (Python) effect engine with 39 build-in effects for your inspiration
|
||||
* A multi language web interface to configure and remote control hyperion
|
||||
|
||||
### Supported Hardware
|
||||
|
||||
You can find a list of supported hardware [here](https://docs.hyperion-project.org/en/user/leddevices/).
|
||||
|
||||
If you need further support please open a topic at the forum!<br>
|
||||
[![Hyperion webpage/forum](https://img.shields.io/website/https/hyperion-project.org.svg?down_color=red&down_message=offline&up_color=green&up_message=online)](https://www.hyperion-project.org)
|
||||
[![Forum](https://img.shields.io/website/https/hyperion-project.org.svg?label=Forum&down_color=red&down_message=offline&up_color=4bc51d&up_message=online&logo=homeadvisor&logoColor=white)](https://www.hyperion-project.org)
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Feel free to join us! We are looking always for people who wants to participate.<br>
|
||||
[![Contributors](https://img.shields.io/github/contributors/hyperion-project/hyperion.ng.svg)](https://github.com/hyperion-project/hyperion.ng/graphs/contributors)
|
||||
[![Contributors](https://img.shields.io/github/contributors/hyperion-project/hyperion.ng.svg?label=Contributors&logo=github&logoColor=white)](https://github.com/hyperion-project/hyperion.ng/graphs/contributors)
|
||||
|
||||
For an example, you can participate in the translation.<br>
|
||||
[![Join Translation](https://img.shields.io/badge/POEditor-translate-green.svg)](https://poeditor.com/join/project/Y4F6vHRFjA)
|
||||
[![Join Translation](https://img.shields.io/badge/POEditor-4bc51d.svg?label=Join%20Translation)](https://poeditor.com/join/project/Y4F6vHRFjA)
|
||||
|
||||
## Supported Platforms
|
||||
|
||||
Find here more details on [supported platforms and configuration sets](doc/development/SupportedPlatforms.md)
|
||||
|
||||
## Documentation
|
||||
Covers these topics (WorkInProgress)
|
||||
- Installation
|
||||
- Configuration
|
||||
- Effect development
|
||||
- JSON API
|
||||
Covers these topics:
|
||||
- [Installation](https://docs.hyperion-project.org/en/user/Installation.html)
|
||||
- [Configuration](https://docs.hyperion-project.org/en/user/Configuration.html)
|
||||
- [Effect development](https://docs.hyperion-project.org/en/effects/#effect-files)
|
||||
- [JSON API](https://docs.hyperion-project.org/en/json/)
|
||||
|
||||
[![Visit Documentation](https://img.shields.io/website?down_message=offline&label=Documentation%20%20&up_message=online&url=https%3A%2F%2Fdocs.hyperion-project.org)](https://docs.hyperion-project.org)
|
||||
[![Visit Documentation](https://img.shields.io/website/https/docs.hyperion-project.org.svg?label=Documentation&down_color=red&down_message=offline&up_color=4bc51d&up_message=online&logo=read-the-docs)](https://docs.hyperion-project.org)
|
||||
|
||||
## Changelog
|
||||
Released and unreleased changes at [Changelog.md](CHANGELOG.md)
|
||||
Released and unreleased changes at [CHANGELOG.md](CHANGELOG.md)
|
||||
|
||||
## Building
|
||||
See [CompileHowto](doc/development/CompileHowto.md).
|
||||
See [CompileHowto.md](doc/development/CompileHowto.md).
|
||||
|
||||
## Installation
|
||||
See [Documentation](https://docs.hyperion-project.org/en/user/Installation.html) or at [Installation.md](Installation.md).
|
||||
|
||||
## Download
|
||||
Alpha releases available from the [Hyperion release page](https://github.com/hyperion-project/hyperion.ng/releases)
|
||||
Releases available from the [Hyperion release page](https://github.com/hyperion-project/hyperion.ng/releases)
|
||||
|
||||
## Privacy Policy
|
||||
See [PRIVACY.md](PRIVACY.md).
|
||||
|
||||
## License
|
||||
The source is released under MIT-License (see https://opensource.org/licenses/MIT).<br>
|
||||
|
|
|
@ -0,0 +1,655 @@
|
|||
#include <NeoPixelBus.h>
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////// CONFIG SECTION STARTS /////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define THIS_IS_RGBW // RGBW SK6812, otherwise comment it
|
||||
#define COLD_WHITE // for RGBW (THIS_IS_RGBW enabled) select COLD version, comment it if NEUTRAL
|
||||
|
||||
const bool skipFirstLed = false; // if set the first led in the strip will be set to black (for level shifters using sacrifice LED)
|
||||
const int serialSpeed = 2000000; // serial port speed
|
||||
#define DATA_PIN 2 // PIN: data output for LED strip
|
||||
|
||||
const bool reportStats = false; // Send back processing statistics
|
||||
const int reportStatInterval_s = 10; // Send back processing every interval in seconds
|
||||
|
||||
/* Statistics breakdown:
|
||||
FPS: Updates to the LEDs per second
|
||||
F-FPS: Frames identified per second
|
||||
S: Shown (Done) updates to the LEDs per given interval
|
||||
F: Frames identified per interval (garbled grames cannot be counted)
|
||||
G: Good frames identified per interval
|
||||
B: Total bad frames of all types identified per interval
|
||||
BF: Bad frames identified per interval
|
||||
BS: Skipped incomplete frames
|
||||
BC: Frames failing CRC check per interval
|
||||
BFL Frames failing Fletcher content validation per interval
|
||||
*/
|
||||
|
||||
//Developer configs
|
||||
#define ENABLE_STRIP
|
||||
#define ENABLE_CHECK_FLETCHER
|
||||
|
||||
const int SERIAL_SIZE_RX = 4096;
|
||||
|
||||
#ifndef ENABLE_STRIP
|
||||
const int serial2Speed = 460800;
|
||||
const bool reportInput = false;
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////// CONFIG SECTION ENDS /////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const String version = "8.0";
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
float whiteLimit = 1.0f;
|
||||
#ifdef COLD_WHITE
|
||||
uint8_t rCorrection = 0xA0; // adjust red -> white in 0-0xFF range
|
||||
uint8_t gCorrection = 0xA0; // adjust green -> white in 0-0xFF range
|
||||
uint8_t bCorrection = 0xA0; // adjust blue -> white in 0-0xFF range
|
||||
#else
|
||||
uint8_t rCorrection = 0xB0; // adjust red -> white in 0-0xFF range
|
||||
uint8_t gCorrection = 0xB0; // adjust green -> white in 0-0xFF range
|
||||
uint8_t bCorrection = 0x70; // adjust blue -> white in 0-0xFF range
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int ledCount = 0; // This is dynamic, don't change it
|
||||
int pixelCount = 0; // This is dynamic, don't change it
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
#define LED_TYPE NeoGrbwFeature
|
||||
#if defined(ARDUINO_LOLIN_S2_MINI)
|
||||
#define LED_METHOD NeoEsp32I2s0Sk6812Method
|
||||
#else
|
||||
#define LED_METHOD NeoEsp32I2s1Sk6812Method
|
||||
#endif
|
||||
#else
|
||||
#define LED_TYPE NeoGrbFeature
|
||||
#if defined(ARDUINO_LOLIN_S2_MINI)
|
||||
#define LED_METHOD NeoEsp32I2s0Ws2812xMethod
|
||||
#else
|
||||
#define LED_METHOD NeoEsp32I2s1Ws2812xMethod
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define LED_DRIVER NeoPixelBus<LED_TYPE, LED_METHOD>
|
||||
|
||||
uint8_t* ledBuffer;
|
||||
int ledBufferSize;
|
||||
|
||||
#ifdef ENABLE_STRIP
|
||||
LED_DRIVER* strip = NULL;
|
||||
#endif
|
||||
|
||||
enum class AwaProtocol
|
||||
{
|
||||
HEADER_A,
|
||||
HEADER_w,
|
||||
HEADER_a,
|
||||
HEADER_HI,
|
||||
HEADER_LO,
|
||||
HEADER_CRC,
|
||||
CHANNELCALIB_GAIN,
|
||||
CHANNELCALIB_RED,
|
||||
CHANNELCALIB_GREEN,
|
||||
CHANNELCALIB_BLUE,
|
||||
PIXEL,
|
||||
FLETCHER1,
|
||||
FLETCHER2,
|
||||
FLETCHER_EXT
|
||||
};
|
||||
|
||||
AwaProtocol state = AwaProtocol::HEADER_A;
|
||||
|
||||
const int headerSize = 6;
|
||||
const int trailerSize = 3;
|
||||
const int calibInfoSize = 4;
|
||||
int bytesRead = 0;
|
||||
|
||||
bool isVersion2 = false;
|
||||
bool isChannelCalib = false;
|
||||
uint8_t CRC = 0;
|
||||
int count = 0;
|
||||
int currentPixel = 0;
|
||||
uint16_t fletcher1 = 0;
|
||||
uint16_t fletcher2 = 0;
|
||||
uint16_t fletcherExt = 0;
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
RgbwColor inputColor;
|
||||
uint8_t wChannel[256];
|
||||
uint8_t rChannel[256];
|
||||
uint8_t gChannel[256];
|
||||
uint8_t bChannel[256];
|
||||
#else
|
||||
RgbColor inputColor;
|
||||
#endif
|
||||
|
||||
bool ledsComplete = false;
|
||||
|
||||
// statistics
|
||||
const int reportStatInterval_ms = reportStatInterval_s * 1000;
|
||||
unsigned long curTime;
|
||||
unsigned long stat_start = 0;
|
||||
uint16_t stat_shown = 0;
|
||||
uint16_t stat_frames = 0;
|
||||
uint16_t stat_good = 0;
|
||||
uint16_t stat_bad = 0;
|
||||
|
||||
uint16_t stat_bad_frame = 0;
|
||||
uint16_t stat_bad_skip = 0;
|
||||
uint16_t stat_bad_crc = 0;
|
||||
uint16_t stat_bad_fletcher = 0;
|
||||
|
||||
uint16_t stat_final_shown = 0;
|
||||
uint16_t stat_final_frames = 0;
|
||||
uint16_t stat_final_good = 0;
|
||||
uint16_t stat_final_bad = 0;
|
||||
|
||||
uint16_t stat_final_bad_frame = 0;
|
||||
uint16_t stat_final_bad_skip = 0;
|
||||
uint16_t stat_final_bad_crc = 0;
|
||||
uint16_t stat_final_bad_fletcher = 0;
|
||||
|
||||
//Debugging
|
||||
String inputString;
|
||||
String inputErrorString;
|
||||
String debugString;
|
||||
|
||||
void printStringHex(String string)
|
||||
{
|
||||
#ifndef ENABLE_STRIP
|
||||
Serial2.println(string.length());
|
||||
for (int i = 0; i < string.length(); ++i)
|
||||
{
|
||||
if (i % 36 == 0)
|
||||
{
|
||||
Serial2.println();
|
||||
Serial2.print("[");
|
||||
Serial2.print(i);
|
||||
Serial2.print("] ");
|
||||
}
|
||||
|
||||
if (string[i] < 16)
|
||||
Serial2.print("0");
|
||||
Serial2.print(string[i], HEX);
|
||||
Serial2.print(":");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void showMe()
|
||||
{
|
||||
#ifdef ENABLE_STRIP
|
||||
if (strip != NULL && strip->CanShow())
|
||||
{
|
||||
stat_shown++;
|
||||
strip->Show();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// statistics
|
||||
inline void showStats()
|
||||
{
|
||||
if (reportStats)
|
||||
{
|
||||
if (stat_frames > 0)
|
||||
{
|
||||
stat_final_shown = stat_shown;
|
||||
stat_final_frames = stat_frames;
|
||||
stat_final_good = stat_good;
|
||||
stat_final_bad = stat_bad;
|
||||
|
||||
stat_final_bad_frame = stat_bad_frame;
|
||||
stat_final_bad_skip = stat_bad_skip;
|
||||
stat_final_bad_crc = stat_bad_crc;
|
||||
stat_final_bad_fletcher = stat_bad_fletcher;
|
||||
}
|
||||
|
||||
stat_start = curTime;
|
||||
stat_shown = 0;
|
||||
stat_frames = 0;
|
||||
stat_good = 0;
|
||||
stat_bad = 0;
|
||||
|
||||
stat_bad_frame = 0;
|
||||
stat_bad_skip = 0;
|
||||
stat_bad_crc = 0;
|
||||
stat_bad_fletcher = 0;
|
||||
|
||||
String summary = String("FPS: ") + (stat_final_shown / reportStatInterval_s) +
|
||||
" F-FPS: " + (stat_final_frames / reportStatInterval_s) +
|
||||
" S: " + stat_final_shown +
|
||||
" F: " + stat_final_frames +
|
||||
" G: " + stat_final_good +
|
||||
" B: " + stat_final_bad +
|
||||
" (BF: " + stat_final_bad_frame +
|
||||
" BS: " + stat_final_bad_skip +
|
||||
" BC: " + stat_final_bad_crc +
|
||||
" BFL: " + stat_final_bad_fletcher +
|
||||
")";
|
||||
#ifdef ENABLE_STRIP
|
||||
Serial.println(summary);
|
||||
#else
|
||||
Serial2.println(summary);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void InitLeds(uint16_t ledCount, int pixelCount, bool channelCalibration = false)
|
||||
{
|
||||
if (ledBuffer != NULL)
|
||||
delete ledBuffer;
|
||||
|
||||
ledBufferSize = pixelCount + (channelCalibration ? calibInfoSize : 0);
|
||||
ledBuffer = new uint8_t[ledBufferSize];
|
||||
|
||||
#ifdef ENABLE_STRIP
|
||||
if (strip != NULL)
|
||||
delete strip;
|
||||
|
||||
strip = new LED_DRIVER(ledCount, DATA_PIN);
|
||||
strip->Begin();
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void processSerialData()
|
||||
{
|
||||
while (Serial.available()) {
|
||||
|
||||
char input = Serial.read();
|
||||
++bytesRead;
|
||||
|
||||
#ifndef ENABLE_STRIP
|
||||
if (reportInput)
|
||||
inputString += input;
|
||||
#endif
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case AwaProtocol::HEADER_A:
|
||||
if (input == 'A')
|
||||
{
|
||||
state = AwaProtocol::HEADER_w;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_w:
|
||||
if (input == 'w')
|
||||
state = AwaProtocol::HEADER_a;
|
||||
else
|
||||
{
|
||||
state = AwaProtocol::HEADER_A;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_a:
|
||||
if (input == 'a')
|
||||
{
|
||||
isVersion2 = false;
|
||||
state = AwaProtocol::HEADER_HI;
|
||||
}
|
||||
else if (input == 'A')
|
||||
{
|
||||
state = AwaProtocol::HEADER_HI;
|
||||
isVersion2 = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
state = AwaProtocol::HEADER_A;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_HI:
|
||||
|
||||
stat_frames++;
|
||||
|
||||
count = input << 8;
|
||||
|
||||
CRC = input;
|
||||
fletcher1 = 0;
|
||||
fletcher2 = 0;
|
||||
fletcherExt = 0;
|
||||
state = AwaProtocol::HEADER_LO;
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_LO:
|
||||
count += input + 1;
|
||||
|
||||
if (ledCount != count || isChannelCalib != isVersion2)
|
||||
{
|
||||
ledCount = count;
|
||||
isChannelCalib = isVersion2;
|
||||
pixelCount = ledCount * 3;
|
||||
|
||||
if (isChannelCalib)
|
||||
prepareCalibration();
|
||||
|
||||
InitLeds(ledCount, pixelCount, isChannelCalib);
|
||||
}
|
||||
|
||||
CRC = CRC ^ input ^ 0x55;
|
||||
|
||||
state = AwaProtocol::HEADER_CRC;
|
||||
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_CRC:
|
||||
|
||||
// Check, if incomplete package information was skipped, set bytesread to headersize and skip wrong input
|
||||
if (bytesRead != headerSize)
|
||||
{
|
||||
stat_bad_skip++;
|
||||
bytesRead = headerSize;
|
||||
}
|
||||
|
||||
currentPixel = 0;
|
||||
if (CRC == input)
|
||||
{
|
||||
state = AwaProtocol::PIXEL;
|
||||
}
|
||||
else
|
||||
{
|
||||
// CRC failure
|
||||
stat_bad++;
|
||||
stat_bad_crc++;
|
||||
|
||||
state = AwaProtocol::HEADER_A;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::PIXEL:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
if (currentPixel == pixelCount)
|
||||
{
|
||||
if (isChannelCalib)
|
||||
state = AwaProtocol::CHANNELCALIB_GAIN;
|
||||
else
|
||||
state = AwaProtocol::FLETCHER1;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::CHANNELCALIB_GAIN:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
state = AwaProtocol::CHANNELCALIB_RED;
|
||||
break;
|
||||
|
||||
case AwaProtocol::CHANNELCALIB_RED:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
|
||||
state = AwaProtocol::CHANNELCALIB_GREEN;
|
||||
break;
|
||||
|
||||
case AwaProtocol::CHANNELCALIB_GREEN:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
|
||||
state = AwaProtocol::CHANNELCALIB_BLUE;
|
||||
break;
|
||||
|
||||
case AwaProtocol::CHANNELCALIB_BLUE:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
|
||||
state = AwaProtocol::FLETCHER1;
|
||||
break;
|
||||
|
||||
case AwaProtocol::FLETCHER1:
|
||||
fletcher1 = input;
|
||||
|
||||
state = AwaProtocol::FLETCHER2;
|
||||
break;
|
||||
|
||||
case AwaProtocol::FLETCHER2:
|
||||
fletcher2 = input;
|
||||
|
||||
state = AwaProtocol::FLETCHER_EXT;
|
||||
break;
|
||||
|
||||
case AwaProtocol::FLETCHER_EXT:
|
||||
fletcherExt = input;
|
||||
ledsComplete = true;
|
||||
|
||||
state = AwaProtocol::HEADER_A;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
// Init serial port
|
||||
int bufSize = Serial.setRxBufferSize(SERIAL_SIZE_RX);
|
||||
Serial.begin(serialSpeed);
|
||||
Serial.setTimeout(50);
|
||||
|
||||
#ifndef ENABLE_STRIP
|
||||
Serial2.begin(serial2Speed);
|
||||
|
||||
Serial2.println();
|
||||
Serial2.println("Welcome!");
|
||||
Serial2.println("Hyperion Awa driver " + version);
|
||||
Serial2.println("!!! Debug Output !!!");
|
||||
#endif
|
||||
|
||||
// Display config
|
||||
Serial.println();
|
||||
Serial.println("Welcome!");
|
||||
Serial.println("Hyperion Awa driver " + version);
|
||||
Serial.print("(Build: ");
|
||||
Serial.print(__DATE__);
|
||||
Serial.print(" ");
|
||||
Serial.print(__TIME__);
|
||||
Serial.println(")");
|
||||
|
||||
// first LED info
|
||||
if (skipFirstLed)
|
||||
Serial.println("First LED: disabled");
|
||||
else
|
||||
Serial.println("First LED: enabled");
|
||||
|
||||
// RGBW claibration info
|
||||
#ifdef THIS_IS_RGBW
|
||||
#ifdef COLD_WHITE
|
||||
Serial.println("Default color mode: RGBW cold");
|
||||
#else
|
||||
Serial.println("Default color mode: RGBW neutral");
|
||||
#endif
|
||||
prepareCalibration();
|
||||
#else
|
||||
Serial.println("Color mode: RGB");
|
||||
#endif
|
||||
|
||||
InitLeds(ledCount, pixelCount);
|
||||
}
|
||||
|
||||
void prepareCalibration()
|
||||
{
|
||||
#ifdef THIS_IS_RGBW
|
||||
// prepare LUT calibration table, cold white is much better than "neutral" white
|
||||
for (uint32_t i = 0; i < 256; i++)
|
||||
{
|
||||
// color calibration
|
||||
float red = rCorrection * i; // adjust red
|
||||
float green = gCorrection * i; // adjust green
|
||||
float blue = bCorrection * i; // adjust blue
|
||||
|
||||
wChannel[i] = (uint8_t)round(min(whiteLimit * i, 255.0f));
|
||||
rChannel[i] = (uint8_t)round(min(red / 0xFF, 255.0f));
|
||||
gChannel[i] = (uint8_t)round(min(green / 0xFF, 255.0f));
|
||||
bChannel[i] = (uint8_t)round(min(blue / 0xFF, 255.0f));
|
||||
}
|
||||
|
||||
Serial.write("RGBW calibration. White limit(%): ");
|
||||
Serial.print(whiteLimit * 100.0f);
|
||||
Serial.write(" %, red: ");
|
||||
Serial.print(rCorrection);
|
||||
Serial.write(" , green: ");
|
||||
Serial.print(gCorrection);
|
||||
Serial.write(" , blue: ");
|
||||
Serial.print(bCorrection);
|
||||
Serial.println();
|
||||
#endif
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
curTime = millis();
|
||||
|
||||
#ifdef __AVR__
|
||||
// nothing , USART Interrupt is implemented
|
||||
ESPserialEvent();
|
||||
#else
|
||||
// ESP8266 polling
|
||||
ESPserialEvent();
|
||||
#endif
|
||||
|
||||
if (ledsComplete)
|
||||
{
|
||||
#ifndef ENABLE_STRIP
|
||||
if (reportInput)
|
||||
{
|
||||
Serial2.println();
|
||||
Serial2.print("<input> L: ");
|
||||
printStringHex(inputString);
|
||||
Serial2.println("<\input>");
|
||||
inputString = "";
|
||||
|
||||
Serial2.print("bytesRead: ");
|
||||
Serial2.print(bytesRead);
|
||||
Serial2.print(" , currentPixel: ");
|
||||
Serial2.print(currentPixel);
|
||||
Serial2.print(" ,pixelCount: ");
|
||||
Serial2.print(pixelCount);
|
||||
Serial2.println();
|
||||
}
|
||||
#endif
|
||||
|
||||
int frameSize = headerSize + ledBufferSize + trailerSize;
|
||||
|
||||
if (bytesRead > frameSize)
|
||||
{
|
||||
//Add number of frames ignored on top of frame
|
||||
int frames = bytesRead / frameSize;
|
||||
stat_frames += frames;
|
||||
|
||||
//Count frame plus frames ignored as bad frames
|
||||
int badFrames = frames + 1;
|
||||
stat_bad += badFrames;
|
||||
stat_bad_frame += badFrames;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
#ifdef ENABLE_CHECK_FLETCHER
|
||||
//Test if content is valid
|
||||
uint16_t item = 0;
|
||||
uint16_t fletch1 = 0;
|
||||
uint16_t fletch2 = 0;
|
||||
uint16_t fletchExt = 0;
|
||||
|
||||
while (item < ledBufferSize)
|
||||
{
|
||||
fletch1 = (fletch1 + (uint16_t)ledBuffer[item]) % 255;
|
||||
fletch2 = (fletch2 + fletch1) % 255;
|
||||
fletcherExt = (fletcherExt + ((uint16_t)ledBuffer[item] ^ (item))) % 255;
|
||||
++item;
|
||||
}
|
||||
if ((fletch1 == fletcher1) && (fletch2 == fletcher2) && (ledBuffer[item-1] == (fletcherExt != 0x41) ? fletcherExt : 0xaa))
|
||||
{
|
||||
#endif
|
||||
stat_good++;
|
||||
|
||||
uint16_t startLed = 0;
|
||||
if (skipFirstLed)
|
||||
{
|
||||
#ifdef ENABLE_STRIP
|
||||
#ifdef THIS_IS_RGBW
|
||||
strip->SetPixelColor(startLed, RgbwColor(0, 0, 0, 0));
|
||||
#else
|
||||
strip->SetPixelColor(startLed, RgbColor(0, 0, 0));
|
||||
#endif
|
||||
#endif
|
||||
startLed = 1;
|
||||
}
|
||||
|
||||
for (uint16_t led = startLed; led < ledCount; ++led)
|
||||
{
|
||||
inputColor.R = ledBuffer[led * 3];
|
||||
inputColor.G = ledBuffer[led * 3 + 1];
|
||||
inputColor.B = ledBuffer[led * 3 + 2];
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
inputColor.W = min(rChannel[inputColor.R],
|
||||
min(gChannel[inputColor.G],
|
||||
bChannel[inputColor.B]));
|
||||
inputColor.R -= rChannel[inputColor.W];
|
||||
inputColor.G -= gChannel[inputColor.W];
|
||||
inputColor.B -= bChannel[inputColor.W];
|
||||
inputColor.W = wChannel[inputColor.W];
|
||||
#endif
|
||||
#ifdef ENABLE_STRIP
|
||||
strip->SetPixelColor(led, inputColor);
|
||||
#endif
|
||||
}
|
||||
|
||||
showMe();
|
||||
yield();
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
if (isChannelCalib)
|
||||
{
|
||||
uint8_t incoming_gain = ledBuffer[pixelCount];
|
||||
uint8_t incoming_red = ledBuffer[pixelCount + 1];
|
||||
uint8_t incoming_green = ledBuffer[pixelCount + 2];
|
||||
uint8_t incoming_blue = ledBuffer[pixelCount + 3];
|
||||
|
||||
float final_limit = (incoming_gain != 255) ? incoming_gain / 255.0f : 1.0f;
|
||||
if (rCorrection != incoming_red || gCorrection != incoming_green || bCorrection != incoming_blue || whiteLimit != final_limit)
|
||||
{
|
||||
rCorrection = incoming_red;
|
||||
gCorrection = incoming_green;
|
||||
bCorrection = incoming_blue;
|
||||
whiteLimit = final_limit;
|
||||
prepareCalibration();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_CHECK_FLETCHER
|
||||
}
|
||||
else
|
||||
{
|
||||
stat_bad++;
|
||||
stat_bad_fletcher++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bytesRead = 0;
|
||||
state = AwaProtocol::HEADER_A;
|
||||
|
||||
ledsComplete = false;
|
||||
}
|
||||
|
||||
if ((curTime - stat_start > reportStatInterval_ms))
|
||||
{
|
||||
if (stat_frames > 0)
|
||||
{
|
||||
showStats();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __AVR__
|
||||
void serialEvent()
|
||||
{
|
||||
processSerialData();
|
||||
}
|
||||
#elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
|
||||
void ESPserialEvent()
|
||||
{
|
||||
processSerialData();
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,646 @@
|
|||
#include <NeoPixelBus.h>
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////// CONFIG SECTION STARTS /////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define THIS_IS_RGBW // RGBW SK6812, otherwise comment it
|
||||
#define COLD_WHITE // for RGBW (THIS_IS_RGBW enabled) select COLD version, comment it if NEUTRAL
|
||||
|
||||
const bool skipFirstLed = false; // if set the first led in the strip will be set to black (for level shifters using sacrifice LED)
|
||||
const int serialSpeed = 2000000; // serial port speed
|
||||
|
||||
const bool reportStats = false; // Send back processing statistics
|
||||
const int reportStatInterval_s = 10; // Send back processing every interval in seconds
|
||||
|
||||
/* Statistics breakdown:
|
||||
FPS: Updates to the LEDs per second
|
||||
F-FPS: Frames identified per second
|
||||
S: Shown (Done) updates to the LEDs per given interval
|
||||
F: Frames identified per interval (garbled grames cannot be counted)
|
||||
G: Good frames identified per interval
|
||||
B: Total bad frames of all types identified per interval
|
||||
BF: Bad frames identified per interval
|
||||
BS: Skipped incomplete frames
|
||||
BC: Frames failing CRC check per interval
|
||||
BFL Frames failing Fletcher content validation per interval
|
||||
*/
|
||||
|
||||
//Developer configs
|
||||
#define ENABLE_STRIP
|
||||
#define ENABLE_CHECK_FLETCHER
|
||||
|
||||
const int SERIAL_SIZE_RX = 4096;
|
||||
|
||||
#ifndef ENABLE_STRIP
|
||||
const int serial2Speed = 460800;
|
||||
const bool reportInput = false;
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////// CONFIG SECTION ENDS /////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const String version = "8.0";
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
float whiteLimit = 1.0f;
|
||||
#ifdef COLD_WHITE
|
||||
uint8_t rCorrection = 0xA0; // adjust red -> white in 0-0xFF range
|
||||
uint8_t gCorrection = 0xA0; // adjust green -> white in 0-0xFF range
|
||||
uint8_t bCorrection = 0xA0; // adjust blue -> white in 0-0xFF range
|
||||
#else
|
||||
uint8_t rCorrection = 0xB0; // adjust red -> white in 0-0xFF range
|
||||
uint8_t gCorrection = 0xB0; // adjust green -> white in 0-0xFF range
|
||||
uint8_t bCorrection = 0x70; // adjust blue -> white in 0-0xFF range
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int ledCount = 0; // This is dynamic, don't change it
|
||||
int pixelCount = 0; // This is dynamic, don't change it
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
#define LED_TYPE NeoGrbwFeature
|
||||
#define LED_METHOD NeoEsp8266Uart1Sk6812Method
|
||||
#else
|
||||
#define LED_TYPE NeoGrbFeature
|
||||
#define LED_METHOD NeoEsp8266Uart1Ws2812xMethod
|
||||
#endif
|
||||
|
||||
#define LED_DRIVER NeoPixelBus<LED_TYPE, LED_METHOD>
|
||||
|
||||
uint8_t* ledBuffer;
|
||||
int ledBufferSize;
|
||||
|
||||
#ifdef ENABLE_STRIP
|
||||
LED_DRIVER* strip = NULL;
|
||||
#endif
|
||||
|
||||
enum class AwaProtocol
|
||||
{
|
||||
HEADER_A,
|
||||
HEADER_w,
|
||||
HEADER_a,
|
||||
HEADER_HI,
|
||||
HEADER_LO,
|
||||
HEADER_CRC,
|
||||
CHANNELCALIB_GAIN,
|
||||
CHANNELCALIB_RED,
|
||||
CHANNELCALIB_GREEN,
|
||||
CHANNELCALIB_BLUE,
|
||||
PIXEL,
|
||||
FLETCHER1,
|
||||
FLETCHER2,
|
||||
FLETCHER_EXT
|
||||
};
|
||||
|
||||
AwaProtocol state = AwaProtocol::HEADER_A;
|
||||
|
||||
const int headerSize = 6;
|
||||
const int trailerSize = 3;
|
||||
const int calibInfoSize = 4;
|
||||
int bytesRead = 0;
|
||||
|
||||
bool isVersion2 = false;
|
||||
bool isChannelCalib = false;
|
||||
uint8_t CRC = 0;
|
||||
int count = 0;
|
||||
int currentPixel = 0;
|
||||
uint16_t fletcher1 = 0;
|
||||
uint16_t fletcher2 = 0;
|
||||
uint16_t fletcherExt = 0;
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
RgbwColor inputColor;
|
||||
uint8_t wChannel[256];
|
||||
uint8_t rChannel[256];
|
||||
uint8_t gChannel[256];
|
||||
uint8_t bChannel[256];
|
||||
#else
|
||||
RgbColor inputColor;
|
||||
#endif
|
||||
|
||||
bool ledsComplete = false;
|
||||
|
||||
// statistics
|
||||
const int reportStatInterval_ms = reportStatInterval_s * 1000;
|
||||
unsigned long curTime;
|
||||
unsigned long stat_start = 0;
|
||||
uint16_t stat_shown = 0;
|
||||
uint16_t stat_frames = 0;
|
||||
uint16_t stat_good = 0;
|
||||
uint16_t stat_bad = 0;
|
||||
|
||||
uint16_t stat_bad_frame = 0;
|
||||
uint16_t stat_bad_skip = 0;
|
||||
uint16_t stat_bad_crc = 0;
|
||||
uint16_t stat_bad_fletcher = 0;
|
||||
|
||||
uint16_t stat_final_shown = 0;
|
||||
uint16_t stat_final_frames = 0;
|
||||
uint16_t stat_final_good = 0;
|
||||
uint16_t stat_final_bad = 0;
|
||||
|
||||
uint16_t stat_final_bad_frame = 0;
|
||||
uint16_t stat_final_bad_skip = 0;
|
||||
uint16_t stat_final_bad_crc = 0;
|
||||
uint16_t stat_final_bad_fletcher = 0;
|
||||
|
||||
//Debugging
|
||||
String inputString;
|
||||
String inputErrorString;
|
||||
String debugString;
|
||||
|
||||
void printStringHex(String string)
|
||||
{
|
||||
#ifndef ENABLE_STRIP
|
||||
Serial2.println(string.length());
|
||||
for (int i = 0; i < string.length(); ++i)
|
||||
{
|
||||
if (i % 36 == 0)
|
||||
{
|
||||
Serial2.println();
|
||||
Serial2.print("[");
|
||||
Serial2.print(i);
|
||||
Serial2.print("] ");
|
||||
}
|
||||
|
||||
if (string[i] < 16)
|
||||
Serial2.print("0");
|
||||
Serial2.print(string[i], HEX);
|
||||
Serial2.print(":");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void showMe()
|
||||
{
|
||||
#ifdef ENABLE_STRIP
|
||||
if (strip != NULL && strip->CanShow())
|
||||
{
|
||||
stat_shown++;
|
||||
strip->Show();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// statistics
|
||||
inline void showStats()
|
||||
{
|
||||
if (reportStats)
|
||||
{
|
||||
if (stat_frames > 0)
|
||||
{
|
||||
stat_final_shown = stat_shown;
|
||||
stat_final_frames = stat_frames;
|
||||
stat_final_good = stat_good;
|
||||
stat_final_bad = stat_bad;
|
||||
|
||||
stat_final_bad_frame = stat_bad_frame;
|
||||
stat_final_bad_skip = stat_bad_skip;
|
||||
stat_final_bad_crc = stat_bad_crc;
|
||||
stat_final_bad_fletcher = stat_bad_fletcher;
|
||||
}
|
||||
|
||||
stat_start = curTime;
|
||||
stat_shown = 0;
|
||||
stat_frames = 0;
|
||||
stat_good = 0;
|
||||
stat_bad = 0;
|
||||
|
||||
stat_bad_frame = 0;
|
||||
stat_bad_skip = 0;
|
||||
stat_bad_crc = 0;
|
||||
stat_bad_fletcher = 0;
|
||||
|
||||
String summary = String("FPS: ") + (stat_final_shown / reportStatInterval_s) +
|
||||
" F-FPS: " + (stat_final_frames / reportStatInterval_s) +
|
||||
" S: " + stat_final_shown +
|
||||
" F: " + stat_final_frames +
|
||||
" G: " + stat_final_good +
|
||||
" B: " + stat_final_bad +
|
||||
" (BF: " + stat_final_bad_frame +
|
||||
" BS: " + stat_final_bad_skip +
|
||||
" BC: " + stat_final_bad_crc +
|
||||
" BFL: " + stat_final_bad_fletcher +
|
||||
")";
|
||||
#ifdef ENABLE_STRIP
|
||||
Serial.println(summary);
|
||||
#else
|
||||
Serial2.println(summary);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void InitLeds(uint16_t ledCount, int pixelCount, bool channelCalibration = false)
|
||||
{
|
||||
if (ledBuffer != NULL)
|
||||
delete ledBuffer;
|
||||
|
||||
ledBufferSize = pixelCount + (channelCalibration ? calibInfoSize : 0);
|
||||
ledBuffer = new uint8_t[ledBufferSize];
|
||||
|
||||
#ifdef ENABLE_STRIP
|
||||
if (strip != NULL)
|
||||
delete strip;
|
||||
|
||||
strip = new LED_DRIVER(ledCount);
|
||||
strip->Begin();
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void processSerialData()
|
||||
{
|
||||
while (Serial.available()) {
|
||||
|
||||
char input = Serial.read();
|
||||
++bytesRead;
|
||||
|
||||
#ifndef ENABLE_STRIP
|
||||
if (reportInput)
|
||||
inputString += input;
|
||||
#endif
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case AwaProtocol::HEADER_A:
|
||||
if (input == 'A')
|
||||
{
|
||||
state = AwaProtocol::HEADER_w;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_w:
|
||||
if (input == 'w')
|
||||
state = AwaProtocol::HEADER_a;
|
||||
else
|
||||
{
|
||||
state = AwaProtocol::HEADER_A;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_a:
|
||||
if (input == 'a')
|
||||
{
|
||||
isVersion2 = false;
|
||||
state = AwaProtocol::HEADER_HI;
|
||||
}
|
||||
else if (input == 'A')
|
||||
{
|
||||
state = AwaProtocol::HEADER_HI;
|
||||
isVersion2 = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
state = AwaProtocol::HEADER_A;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_HI:
|
||||
|
||||
stat_frames++;
|
||||
|
||||
count = input << 8;
|
||||
|
||||
CRC = input;
|
||||
fletcher1 = 0;
|
||||
fletcher2 = 0;
|
||||
fletcherExt = 0;
|
||||
state = AwaProtocol::HEADER_LO;
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_LO:
|
||||
count += input + 1;
|
||||
|
||||
if (ledCount != count || isChannelCalib != isVersion2)
|
||||
{
|
||||
ledCount = count;
|
||||
isChannelCalib = isVersion2;
|
||||
pixelCount = ledCount * 3;
|
||||
|
||||
if (isChannelCalib)
|
||||
prepareCalibration();
|
||||
|
||||
InitLeds(ledCount, pixelCount, isChannelCalib);
|
||||
}
|
||||
|
||||
CRC = CRC ^ input ^ 0x55;
|
||||
|
||||
state = AwaProtocol::HEADER_CRC;
|
||||
|
||||
break;
|
||||
|
||||
case AwaProtocol::HEADER_CRC:
|
||||
|
||||
// Check, if incomplete package information was skipped, set bytesread to headersize and skip wrong input
|
||||
if (bytesRead != headerSize)
|
||||
{
|
||||
stat_bad_skip++;
|
||||
bytesRead = headerSize;
|
||||
}
|
||||
|
||||
currentPixel = 0;
|
||||
if (CRC == input)
|
||||
{
|
||||
state = AwaProtocol::PIXEL;
|
||||
}
|
||||
else
|
||||
{
|
||||
// CRC failure
|
||||
stat_bad++;
|
||||
stat_bad_crc++;
|
||||
|
||||
state = AwaProtocol::HEADER_A;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::PIXEL:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
if (currentPixel == pixelCount)
|
||||
{
|
||||
if (isChannelCalib)
|
||||
state = AwaProtocol::CHANNELCALIB_GAIN;
|
||||
else
|
||||
state = AwaProtocol::FLETCHER1;
|
||||
}
|
||||
break;
|
||||
|
||||
case AwaProtocol::CHANNELCALIB_GAIN:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
state = AwaProtocol::CHANNELCALIB_RED;
|
||||
break;
|
||||
|
||||
case AwaProtocol::CHANNELCALIB_RED:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
|
||||
state = AwaProtocol::CHANNELCALIB_GREEN;
|
||||
break;
|
||||
|
||||
case AwaProtocol::CHANNELCALIB_GREEN:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
|
||||
state = AwaProtocol::CHANNELCALIB_BLUE;
|
||||
break;
|
||||
|
||||
case AwaProtocol::CHANNELCALIB_BLUE:
|
||||
ledBuffer[currentPixel++] = input;
|
||||
|
||||
state = AwaProtocol::FLETCHER1;
|
||||
break;
|
||||
|
||||
case AwaProtocol::FLETCHER1:
|
||||
fletcher1 = input;
|
||||
|
||||
state = AwaProtocol::FLETCHER2;
|
||||
break;
|
||||
|
||||
case AwaProtocol::FLETCHER2:
|
||||
fletcher2 = input;
|
||||
|
||||
state = AwaProtocol::FLETCHER_EXT;
|
||||
break;
|
||||
|
||||
case AwaProtocol::FLETCHER_EXT:
|
||||
fletcherExt = input;
|
||||
ledsComplete = true;
|
||||
|
||||
state = AwaProtocol::HEADER_A;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
// Init serial port
|
||||
int bufSize = Serial.setRxBufferSize(SERIAL_SIZE_RX);
|
||||
Serial.begin(serialSpeed);
|
||||
Serial.setTimeout(50);
|
||||
|
||||
#ifndef ENABLE_STRIP
|
||||
Serial2.begin(serial2Speed);
|
||||
|
||||
Serial2.println();
|
||||
Serial2.println("Welcome!");
|
||||
Serial2.println("Hyperion Awa driver " + version);
|
||||
Serial2.println("!!! Debug Output !!!");
|
||||
#endif
|
||||
|
||||
// Display config
|
||||
Serial.println();
|
||||
Serial.println("Welcome!");
|
||||
Serial.println("Hyperion Awa driver " + version);
|
||||
Serial.print("(Build: ");
|
||||
Serial.print(__DATE__);
|
||||
Serial.print(" ");
|
||||
Serial.print(__TIME__);
|
||||
Serial.println(")");
|
||||
|
||||
// first LED info
|
||||
if (skipFirstLed)
|
||||
Serial.println("First LED: disabled");
|
||||
else
|
||||
Serial.println("First LED: enabled");
|
||||
|
||||
// RGBW claibration info
|
||||
#ifdef THIS_IS_RGBW
|
||||
#ifdef COLD_WHITE
|
||||
Serial.println("Default color mode: RGBW cold");
|
||||
#else
|
||||
Serial.println("Default color mode: RGBW neutral");
|
||||
#endif
|
||||
prepareCalibration();
|
||||
#else
|
||||
Serial.println("Color mode: RGB");
|
||||
#endif
|
||||
|
||||
InitLeds(ledCount, pixelCount);
|
||||
}
|
||||
|
||||
void prepareCalibration()
|
||||
{
|
||||
#ifdef THIS_IS_RGBW
|
||||
// prepare LUT calibration table, cold white is much better than "neutral" white
|
||||
for (uint32_t i = 0; i < 256; i++)
|
||||
{
|
||||
// color calibration
|
||||
float red = rCorrection * i; // adjust red
|
||||
float green = gCorrection * i; // adjust green
|
||||
float blue = bCorrection * i; // adjust blue
|
||||
|
||||
wChannel[i] = (uint8_t)round(min(whiteLimit * i, 255.0f));
|
||||
rChannel[i] = (uint8_t)round(min(red / 0xFF, 255.0f));
|
||||
gChannel[i] = (uint8_t)round(min(green / 0xFF, 255.0f));
|
||||
bChannel[i] = (uint8_t)round(min(blue / 0xFF, 255.0f));
|
||||
}
|
||||
|
||||
Serial.write("RGBW calibration. White limit(%): ");
|
||||
Serial.print(whiteLimit * 100.0f);
|
||||
Serial.write(" %, red: ");
|
||||
Serial.print(rCorrection);
|
||||
Serial.write(" , green: ");
|
||||
Serial.print(gCorrection);
|
||||
Serial.write(" , blue: ");
|
||||
Serial.print(bCorrection);
|
||||
Serial.println();
|
||||
#endif
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
curTime = millis();
|
||||
|
||||
#ifdef __AVR__
|
||||
// nothing , USART Interrupt is implemented
|
||||
ESPserialEvent();
|
||||
#else
|
||||
// ESP8266 polling
|
||||
ESPserialEvent();
|
||||
#endif
|
||||
|
||||
if (ledsComplete)
|
||||
{
|
||||
#ifndef ENABLE_STRIP
|
||||
if (reportInput)
|
||||
{
|
||||
Serial2.println();
|
||||
Serial2.print("<input> L: ");
|
||||
printStringHex(inputString);
|
||||
Serial2.println("<\input>");
|
||||
inputString = "";
|
||||
|
||||
Serial2.print("bytesRead: ");
|
||||
Serial2.print(bytesRead);
|
||||
Serial2.print(" , currentPixel: ");
|
||||
Serial2.print(currentPixel);
|
||||
Serial2.print(" ,pixelCount: ");
|
||||
Serial2.print(pixelCount);
|
||||
Serial2.println();
|
||||
}
|
||||
#endif
|
||||
|
||||
int frameSize = headerSize + ledBufferSize + trailerSize;
|
||||
|
||||
if (bytesRead > frameSize)
|
||||
{
|
||||
//Add number of frames ignored on top of frame
|
||||
int frames = bytesRead / frameSize;
|
||||
stat_frames += frames;
|
||||
|
||||
//Count frame plus frames ignored as bad frames
|
||||
int badFrames = frames + 1;
|
||||
stat_bad += badFrames;
|
||||
stat_bad_frame += badFrames;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
#ifdef ENABLE_CHECK_FLETCHER
|
||||
//Test if content is valid
|
||||
uint16_t item = 0;
|
||||
uint16_t fletch1 = 0;
|
||||
uint16_t fletch2 = 0;
|
||||
uint16_t fletchExt = 0;
|
||||
|
||||
while (item < ledBufferSize)
|
||||
{
|
||||
fletch1 = (fletch1 + (uint16_t)ledBuffer[item]) % 255;
|
||||
fletch2 = (fletch2 + fletch1) % 255;
|
||||
fletcherExt = (fletcherExt + ((uint16_t)ledBuffer[item] ^ (item))) % 255;
|
||||
++item;
|
||||
}
|
||||
if ((fletch1 == fletcher1) && (fletch2 == fletcher2) && (ledBuffer[item-1] == (fletcherExt != 0x41) ? fletcherExt : 0xaa))
|
||||
{
|
||||
#endif
|
||||
stat_good++;
|
||||
|
||||
uint16_t startLed = 0;
|
||||
if (skipFirstLed)
|
||||
{
|
||||
#ifdef ENABLE_STRIP
|
||||
#ifdef THIS_IS_RGBW
|
||||
strip->SetPixelColor(startLed, RgbwColor(0, 0, 0, 0));
|
||||
#else
|
||||
strip->SetPixelColor(startLed, RgbColor(0, 0, 0));
|
||||
#endif
|
||||
#endif
|
||||
startLed = 1;
|
||||
}
|
||||
|
||||
for (uint16_t led = startLed; led < ledCount; ++led)
|
||||
{
|
||||
inputColor.R = ledBuffer[led * 3];
|
||||
inputColor.G = ledBuffer[led * 3 + 1];
|
||||
inputColor.B = ledBuffer[led * 3 + 2];
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
inputColor.W = min(rChannel[inputColor.R],
|
||||
min(gChannel[inputColor.G],
|
||||
bChannel[inputColor.B]));
|
||||
inputColor.R -= rChannel[inputColor.W];
|
||||
inputColor.G -= gChannel[inputColor.W];
|
||||
inputColor.B -= bChannel[inputColor.W];
|
||||
inputColor.W = wChannel[inputColor.W];
|
||||
#endif
|
||||
#ifdef ENABLE_STRIP
|
||||
strip->SetPixelColor(led, inputColor);
|
||||
#endif
|
||||
}
|
||||
|
||||
showMe();
|
||||
yield();
|
||||
|
||||
#ifdef THIS_IS_RGBW
|
||||
if (isChannelCalib)
|
||||
{
|
||||
uint8_t incoming_gain = ledBuffer[pixelCount];
|
||||
uint8_t incoming_red = ledBuffer[pixelCount + 1];
|
||||
uint8_t incoming_green = ledBuffer[pixelCount + 2];
|
||||
uint8_t incoming_blue = ledBuffer[pixelCount + 3];
|
||||
|
||||
float final_limit = (incoming_gain != 255) ? incoming_gain / 255.0f : 1.0f;
|
||||
if (rCorrection != incoming_red || gCorrection != incoming_green || bCorrection != incoming_blue || whiteLimit != final_limit)
|
||||
{
|
||||
rCorrection = incoming_red;
|
||||
gCorrection = incoming_green;
|
||||
bCorrection = incoming_blue;
|
||||
whiteLimit = final_limit;
|
||||
prepareCalibration();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_CHECK_FLETCHER
|
||||
}
|
||||
else
|
||||
{
|
||||
stat_bad++;
|
||||
stat_bad_fletcher++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bytesRead = 0;
|
||||
state = AwaProtocol::HEADER_A;
|
||||
|
||||
ledsComplete = false;
|
||||
}
|
||||
|
||||
if ((curTime - stat_start > reportStatInterval_ms))
|
||||
{
|
||||
if (stat_frames > 0)
|
||||
{
|
||||
showStats();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __AVR__
|
||||
void serialEvent()
|
||||
{
|
||||
processSerialData();
|
||||
}
|
||||
#elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
|
||||
void ESPserialEvent()
|
||||
{
|
||||
processSerialData();
|
||||
}
|
||||
#endif
|
|
@ -153,10 +153,9 @@ to this service over the network.
|
|||
|
||||
srv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
srv.bind(('0.0.0.0', args.localport)) # lgtm [py/bind-socket-all-network-interfaces]
|
||||
srv.bind(('0.0.0.0', args.localport))
|
||||
|
||||
try:
|
||||
intentional_exit = False
|
||||
while True:
|
||||
try:
|
||||
while True:
|
||||
|
@ -180,7 +179,7 @@ to this service over the network.
|
|||
# probably got disconnected
|
||||
break
|
||||
except KeyboardInterrupt:
|
||||
intentional_exit = True
|
||||
# intentional_exit
|
||||
raise
|
||||
except socket.error as msg:
|
||||
if args.develop:
|
||||
|
@ -190,6 +189,7 @@ to this service over the network.
|
|||
ser_to_net.socket = None
|
||||
sys.stderr.write('Disconnected\n')
|
||||
except KeyboardInterrupt:
|
||||
# do not handle exceptions
|
||||
pass
|
||||
|
||||
sys.stderr.write('\n--- exit ---\n')
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include <FastLED.h>
|
||||
|
||||
#define NUM_LEDS 24 // Number of leds
|
||||
#define DATA_PIN 7 // Data pin for leds (the default pin 7 might correspond to pin 13 on some boards)
|
||||
#define DATA_PIN D7 // Data pin for leds (the default pin 7 might correspond to pin 13 on some boards)
|
||||
#define SERIAL_DEBUG 0 // Serial debugging (0=Off, 1=On)
|
||||
|
||||
#define ID 1 // Id of this lamp
|
||||
|
@ -348,7 +348,7 @@ void identify()
|
|||
{
|
||||
FastLED.showColor(CRGB::LemonChiffon);
|
||||
delay(500);
|
||||
FastLED.showColor(CRGB::Black);
|
||||
FastLED.showColor(CRGB::Black);
|
||||
delay(500);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,313 @@
|
|||
#include <FastLED.h>
|
||||
FASTLED_USING_NAMESPACE;
|
||||
|
||||
SYSTEM_THREAD(ENABLED);
|
||||
|
||||
#if FASTLED_VERSION < 3001000
|
||||
#error "Requires FastLED 3.1 or later; check github for latest code."
|
||||
#endif
|
||||
|
||||
// WiFi
|
||||
#define timeout 30000
|
||||
#define reconnect_delay 5000
|
||||
|
||||
// UDP
|
||||
#define SERVER_PORT 49692
|
||||
#define DISCOVERY_PORT 49692
|
||||
UDP client;
|
||||
IPAddress multicastIP(239, 15, 18, 2);
|
||||
|
||||
// ORB
|
||||
unsigned int orbID = 1;
|
||||
|
||||
#define SERIAL_DEBUG 0 // Serial debugging (0=Off, 1=On)
|
||||
|
||||
// LED
|
||||
#define DATA_PIN 6
|
||||
#define NUM_LEDS 24
|
||||
CRGB leds[NUM_LEDS];
|
||||
|
||||
// UDP
|
||||
#define BUFFER_SIZE 8 // 5 + 3 channels for 1 LED
|
||||
#define BUFFER_SIZE_DISCOVERY 5
|
||||
#define TIMEOUT_MS 500
|
||||
uint8_t buffer[BUFFER_SIZE];
|
||||
uint8_t bufferDiscovery[BUFFER_SIZE_DISCOVERY];
|
||||
unsigned long lastWiFiCheck = 0;
|
||||
|
||||
// SMOOTHING
|
||||
#define SMOOTH_STEPS 50 // Steps to take for smoothing colors
|
||||
#define SMOOTH_DELAY 4 // Delay between smoothing steps
|
||||
#define SMOOTH_BLOCK 0 // Block incoming colors while smoothing
|
||||
|
||||
byte nextColor[3];
|
||||
byte prevColor[3];
|
||||
byte currentColor[3];
|
||||
byte smoothStep = SMOOTH_STEPS;
|
||||
unsigned long smoothMillis;
|
||||
|
||||
// CUSTOM COLOR CORRECTIONS
|
||||
#define RED_CORRECTION 255
|
||||
#define GREEN_CORRECTION 255
|
||||
#define BLUE_CORRECTION 255
|
||||
#include "Particle.h"
|
||||
|
||||
void setup()
|
||||
{
|
||||
// Leds - choose one correction method
|
||||
// 1 - Custom color correction
|
||||
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS).setCorrection(CRGB(RED_CORRECTION, GREEN_CORRECTION, BLUE_CORRECTION));
|
||||
|
||||
// Set color
|
||||
//setColor(40, 21, 0);
|
||||
|
||||
// Uncomment the below lines to dim the single built-in led to 2%
|
||||
::RGB.control(true);
|
||||
::RGB.brightness(2);
|
||||
::RGB.control(false);
|
||||
|
||||
// WiFi
|
||||
lastWiFiCheck = millis();
|
||||
initWiFi();
|
||||
|
||||
// 2 - FastLED predefined color correction
|
||||
//FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS).setCorrection(TypicalSMD5050);
|
||||
}
|
||||
|
||||
void initWiFi()
|
||||
{
|
||||
// Delays added UDP client creation, required for WiFi reconnects as takes a bit for resources to be full available
|
||||
|
||||
// Wait for WiFi connection
|
||||
delay(500);
|
||||
waitFor(WiFi.ready, timeout);
|
||||
delay(reconnect_delay);
|
||||
|
||||
// Multicast UDP
|
||||
if(WiFi.ready())
|
||||
{
|
||||
#if SERIAL_DEBUG == 1
|
||||
Serial.println("");
|
||||
Serial.print(F("Connected to "));
|
||||
Serial.println(WiFi.SSID());
|
||||
Serial.print(F("IP address: "));
|
||||
Serial.println(WiFi.localIP());
|
||||
#endif
|
||||
|
||||
client.begin(SERVER_PORT);
|
||||
delay(reconnect_delay);
|
||||
client.joinMulticast(multicastIP);
|
||||
|
||||
#if SERIAL_DEBUG == 1
|
||||
Serial.print(F("Listening to Multicast at "));
|
||||
Serial.print(multicastIP);
|
||||
Serial.print(F(":"));
|
||||
Serial.println(SERVER_PORT);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void loop(){
|
||||
if (Network.listening())
|
||||
{
|
||||
// If we are in listening mode (blinking dark blue), don't
|
||||
// output by USB serial, because it can conflict with
|
||||
// serial commands.
|
||||
return;
|
||||
}
|
||||
|
||||
if(WiFi.ready() == false) {
|
||||
#if SERIAL_DEBUG == 1
|
||||
Serial.print(F("Lost connection to "));
|
||||
Serial.print(WiFi.SSID());
|
||||
Serial.println(F("."));
|
||||
Serial.println(F("Trying to reconnect."));
|
||||
#endif
|
||||
|
||||
initWiFi();
|
||||
}
|
||||
|
||||
int packetSize = client.parsePacket();
|
||||
|
||||
if(packetSize == BUFFER_SIZE){
|
||||
|
||||
#if SERIAL_DEBUG == 1
|
||||
Serial.print(F("Packet size: "));
|
||||
Serial.println(packetSize);
|
||||
#endif
|
||||
client.read(buffer, BUFFER_SIZE);
|
||||
//client.flush();
|
||||
|
||||
#if SERIAL_DEBUG == 1
|
||||
Serial.print(F("UDP Packet from "));
|
||||
Serial.println(client.remoteIP());
|
||||
for (int i = 0; i < BUFFER_SIZE; i++)
|
||||
{
|
||||
Serial.print(buffer[i]);
|
||||
Serial.print(F(" "));
|
||||
}
|
||||
Serial.println("");
|
||||
#endif
|
||||
unsigned int i = 0;
|
||||
|
||||
// Look for 0xC0FFEE
|
||||
if(buffer[i++] == 0xC0 && buffer[i++] == 0xFF && buffer[i++] == 0xEE)
|
||||
{
|
||||
byte commandOptions = buffer[i++];
|
||||
byte rcvOrbID = buffer[i++];
|
||||
|
||||
byte red = buffer[i++];
|
||||
byte green = buffer[i++];
|
||||
byte blue = buffer[i++];
|
||||
|
||||
// Command options
|
||||
// 1 = force off
|
||||
// 2 = use lamp smoothing and validate by Orb ID
|
||||
// 4 = validate by Orb ID
|
||||
// 8 = discovery
|
||||
// 9 = light-up Orb to identify by Orb ID
|
||||
if(commandOptions == 1)
|
||||
{
|
||||
// Orb ID 0 = turn off all lights
|
||||
// Otherwise turn off selectively
|
||||
if(rcvOrbID == 0 || rcvOrbID == orbID)
|
||||
{
|
||||
smoothStep = SMOOTH_STEPS;
|
||||
forceLedsOFF();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if(commandOptions == 2)
|
||||
{
|
||||
if(rcvOrbID != orbID)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
setSmoothColor(red, green, blue);
|
||||
}
|
||||
else if(commandOptions == 4)
|
||||
{
|
||||
if(rcvOrbID != orbID)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
smoothStep = SMOOTH_STEPS;
|
||||
setColor(red, green, blue);
|
||||
setSmoothColor(red, green, blue);
|
||||
|
||||
return;
|
||||
}
|
||||
else if(commandOptions == 8)
|
||||
{
|
||||
#if SERIAL_DEBUG == 1
|
||||
Serial.print(F("Announce myself. OrbID: "));
|
||||
Serial.println(orbID);
|
||||
#endif
|
||||
// Respond to remote IP address with Orb ID
|
||||
IPAddress remoteIP = client.remoteIP();
|
||||
bufferDiscovery[0] = orbID;
|
||||
|
||||
client.sendPacket(bufferDiscovery, BUFFER_SIZE_DISCOVERY, remoteIP, DISCOVERY_PORT);
|
||||
|
||||
// Clear buffer
|
||||
memset(bufferDiscovery, 0, sizeof(bufferDiscovery));
|
||||
return;
|
||||
}
|
||||
else if(commandOptions == 9)
|
||||
{
|
||||
if(rcvOrbID == 0 || rcvOrbID == orbID)
|
||||
{
|
||||
#if SERIAL_DEBUG == 1
|
||||
Serial.print(F("Identify myself. OrbID: "));
|
||||
Serial.println(orbID);
|
||||
#endif
|
||||
identify();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}else if(packetSize > 0){
|
||||
// Got malformed packet
|
||||
}
|
||||
|
||||
if (smoothStep < SMOOTH_STEPS && millis() >= (smoothMillis + (SMOOTH_DELAY * (smoothStep + 1))))
|
||||
{
|
||||
smoothColor();
|
||||
}
|
||||
}
|
||||
|
||||
// Set color
|
||||
void setColor(byte red, byte green, byte blue)
|
||||
{
|
||||
for (byte i = 0; i < NUM_LEDS; i++)
|
||||
{
|
||||
leds[i] = CRGB(red, green, blue);
|
||||
}
|
||||
|
||||
FastLED.show();
|
||||
}
|
||||
|
||||
|
||||
// Set a new color to smooth to
|
||||
void setSmoothColor(byte red, byte green, byte blue)
|
||||
{
|
||||
if (smoothStep == SMOOTH_STEPS || SMOOTH_BLOCK == 0)
|
||||
{
|
||||
if (nextColor[0] == red && nextColor[1] == green && nextColor[2] == blue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
prevColor[0] = currentColor[0];
|
||||
prevColor[1] = currentColor[1];
|
||||
prevColor[2] = currentColor[2];
|
||||
|
||||
nextColor[0] = red;
|
||||
nextColor[1] = green;
|
||||
nextColor[2] = blue;
|
||||
|
||||
smoothMillis = millis();
|
||||
smoothStep = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Display one step to the next color
|
||||
void smoothColor()
|
||||
{
|
||||
smoothStep++;
|
||||
currentColor[0] = prevColor[0] + (((nextColor[0] - prevColor[0]) * smoothStep) / SMOOTH_STEPS);
|
||||
currentColor[1] = prevColor[1] + (((nextColor[1] - prevColor[1]) * smoothStep) / SMOOTH_STEPS);
|
||||
currentColor[2] = prevColor[2] + (((nextColor[2] - prevColor[2]) * smoothStep) / SMOOTH_STEPS);
|
||||
|
||||
setColor(currentColor[0], currentColor[1], currentColor[2]);
|
||||
}
|
||||
|
||||
// Force all leds OFF
|
||||
void forceLedsOFF()
|
||||
{
|
||||
setColor(0,0,0);
|
||||
clearSmoothColors();
|
||||
}
|
||||
|
||||
// Clear smooth color byte arrays
|
||||
void clearSmoothColors()
|
||||
{
|
||||
memset(prevColor, 0, sizeof(prevColor));
|
||||
memset(currentColor, 0, sizeof(nextColor));
|
||||
memset(nextColor, 0, sizeof(nextColor));
|
||||
}
|
||||
|
||||
void identify()
|
||||
{
|
||||
for (byte i = 0; i < 3; i++)
|
||||
{
|
||||
FastLED.showColor(CRGB::LemonChiffon);
|
||||
delay(500);
|
||||
FastLED.showColor(CRGB::Black);
|
||||
delay(500);
|
||||
}
|
||||
}
|
|
@ -22,7 +22,7 @@
|
|||
performTranslation();
|
||||
|
||||
var si = window.sysInfo.hyperion;
|
||||
var libs = { "Bootstrap 3": "https://getbootstrap.com/", "JQuery": "https://jquery.com/", "Bootstrap Colorpicker": "https://itsjavi.com/bootstrap-colorpicker/", "Bootstrap Toggle": "https://www.bootstraptoggle.com/", "Bootstrap Select": "https://developer.snapappointments.com/bootstrap-select/", "JSON-Editor": "https://www.jeremydorn.com/json-editor", "jQuery.i18n": "https://github.com/wikimedia/jquery.i18n", "metisMenu": "https://mm.onokumus.com/index.html", "download.js": "https://github.com/rndme/download", "gijgo": "https://gijgo.com/" };
|
||||
var libs = { "Bootstrap 3": "https://getbootstrap.com/", "JQuery": "https://jquery.com/", "Bootstrap Colorpicker": "https://itsjavi.com/bootstrap-colorpicker/", "Bootstrap Toggle": "https://www.bootstraptoggle.com/", "Bootstrap Select": "https://developer.snapappointments.com/bootstrap-select/", "JSON-Editor": "https://www.jeremydorn.com/json-editor", "jQuery.i18n": "https://github.com/wikimedia/jquery.i18n", "metisMenu": "https://mm.onokumus.com/index.html", "download.js": "https://github.com/rndme/download", "Gijgo": "https://gijgo.com/", "DOMPurify" : "https://github.com/cure53/DOMPurify", "Marked": "https://github.com/markedjs/marked", "PlainDraggable": "https://github.com/anseki/plain-draggable", "LeaderLine": "https://github.com/anseki/leader-line", "Animate.css": "https://github.com/animate-css/animate.css"};
|
||||
var libh = "";
|
||||
var lang = [];
|
||||
var dcount = 0;
|
||||
|
@ -58,21 +58,18 @@
|
|||
initRestart();
|
||||
});
|
||||
|
||||
var url = 'https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/3RD_PARTY_LICENSES';
|
||||
fetch(url)
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
$("#3rdpartylicenses").html('<a href="' + url + '">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
|
||||
}
|
||||
else {
|
||||
response.text().then(function (text) {
|
||||
$("#3rdpartylicenses").html('<code>' + text + '</code>');
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(function (rejected) {
|
||||
$("#3rdpartylicenses").html('<a href="' + url + '">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
|
||||
});
|
||||
$.ajax({
|
||||
url:'3RD_PARTY_LICENSES',
|
||||
dataType: "text",
|
||||
success: function(data)
|
||||
{
|
||||
$("#3rdpartylicenses").html('<code>' + data + '</code>');
|
||||
},
|
||||
error: function()
|
||||
{
|
||||
$("#3rdpartylicenses").html('<a href="https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/3RD_PARTY_LICENSES">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
|
||||
}
|
||||
});
|
||||
|
||||
removeOverlay();
|
||||
</script>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></h3>
|
||||
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_instcapture_conf_token">Capturing Hardware</span></h3>
|
||||
|
||||
<div class="panel panel-default" style="border:0px;">
|
||||
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-lg-12" id="layout_intro"></div>
|
||||
<div class="col-lg-6 col-md-12">
|
||||
<div class="col-lg-6 col-md-12" id="layout_type">
|
||||
<div class="panel-group" id="accordion">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading headcollapse" id="classic_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
|
||||
|
@ -149,9 +149,13 @@
|
|||
</tbody>
|
||||
</table>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading headcollapse" data-toggle="collapse" data-target="#collapse3">
|
||||
<div class="panel-heading headcollapse" data-toggle="collapse" data-target="#collapse3" id="advanced_settings">
|
||||
<h4 class="panel-title">
|
||||
<a><span data-i18n="conf_leds_layout_advanced">Advanced settings</span></a>
|
||||
<a>
|
||||
<i class="fa fa-fw fa-cogs"></i>
|
||||
<span data-i18n="conf_leds_layout_advanced">Advanced settings</span>
|
||||
<i class="fa fa-angle-down pull-right" id="advanced_settings_right_icon"></i>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapse3" class="panel-collapse collapse">
|
||||
|
@ -199,14 +203,14 @@
|
|||
<label class="ltdlabel" for="ip_cl_ptl" data-i18n="conf_leds_layout_ptl">Point Top Left</label>
|
||||
</td>
|
||||
<td class="itd input-group">
|
||||
<input class="form-control ledCLconstr" id="ip_cl_ptlh" type="number" value="0" min="0" max="40" step="1"></input>
|
||||
<input class="form-control ledCLconstr" id="ip_cl_ptlh" type="number" value="0" min="0" max="100" step="1"></input>
|
||||
<div class="input-group-addon" data-i18n="edt_append_percent_h">%h</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ltd"></td>
|
||||
<td class="itd input-group">
|
||||
<input class="form-control ledCLconstr" id="ip_cl_ptlv" type="number" value="0" min="0" max="40" step="1"></input>
|
||||
<input class="form-control ledCLconstr" id="ip_cl_ptlv" type="number" value="0" min="0" max="100" step="1"></input>
|
||||
<div class="input-group-addon" data-i18n="edt_append_percent_v">%v</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -215,14 +219,14 @@
|
|||
<label class="ltdlabel" for="ip_cl_ptr" data-i18n="conf_leds_layout_ptr">Point Top Right</label>
|
||||
</td>
|
||||
<td class="itd input-group">
|
||||
<input class="form-control ledCLconstr" id="ip_cl_ptrh" type="number" value="100" min="60" max="100" step="1"></input>
|
||||
<input class="form-control ledCLconstr" id="ip_cl_ptrh" type="number" value="100" min="0" max="100" step="1"></input>
|
||||
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ltd"></td>
|
||||
<td class="itd input-group">
|
||||
<input class="form-control ledCLconstr" id="ip_cl_ptrv" type="number" value="0" min="0" max="40" step="1"></input>
|
||||
<input class="form-control ledCLconstr" id="ip_cl_ptrv" type="number" value="0" min="0" max="100" step="1"></input>
|
||||
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -231,14 +235,14 @@
|
|||
<label class="ltdlabel" for="ip_cl_pbr" data-i18n="conf_leds_layout_pbr">Point Bottom Right</label>
|
||||
</td>
|
||||
<td class="itd input-group">
|
||||
<input class="form-control ledCLconstr" id="ip_cl_pbrh" type="number" value="100" min="60" max="100" step="1"></input>
|
||||
<input class="form-control ledCLconstr" id="ip_cl_pbrh" type="number" value="100" min="0" max="100" step="1"></input>
|
||||
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ltd"></td>
|
||||
<td class="itd input-group">
|
||||
<input class="form-control ledCLconstr" id="ip_cl_pbrv" type="number" value="100" min="60" max="100" step="1"></input>
|
||||
<input class="form-control ledCLconstr" id="ip_cl_pbrv" type="number" value="100" min="0" max="100" step="1"></input>
|
||||
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -247,14 +251,14 @@
|
|||
<label class="ltdlabel" for="ip_cl_pbl" data-i18n="conf_leds_layout_pbl">Point Bottom Left</label>
|
||||
</td>
|
||||
<td class="itd input-group">
|
||||
<input class="form-control ledCLconstr" id="ip_cl_pblh" type="number" value="0" min="0" max="40" step="1"></input>
|
||||
<input class="form-control ledCLconstr" id="ip_cl_pblh" type="number" value="0" min="0" max="100" step="1"></input>
|
||||
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ltd"></td>
|
||||
<td class="itd input-group">
|
||||
<input class="form-control ledCLconstr" id="ip_cl_pblv" type="number" value="100" min="60" max="100" step="1"></input>
|
||||
<input class="form-control ledCLconstr" id="ip_cl_pblv" type="number" value="100" min="0" max="100" step="1"></input>
|
||||
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -318,6 +322,17 @@
|
|||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ltd">
|
||||
<label class="ltdlabel" for="ip_ma_direction" data-i18n="conf_leds_layout_ma_direction">Cabling</label>
|
||||
</td>
|
||||
<td class="itd">
|
||||
<select class="form-control ledMAconstr" id="ip_ma_direction">
|
||||
<option value="horizontal" data-i18n="conf_leds_layout_ma_opthoriz">Horizontal</option>
|
||||
<option value="vertical" data-i18n="conf_leds_layout_ma_optvert">Vertical</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ltd">
|
||||
<label class="ltdlabel" for="ip_ma_start" data-i18n="conf_leds_layout_ma_position">Input</label>
|
||||
|
@ -373,10 +388,16 @@
|
|||
</div>
|
||||
</div>
|
||||
</div> <!-- accordion -->
|
||||
<div class="col-lg-6 col-md-12">
|
||||
<div class="col-lg-6 col-md-12" id="layout_preview">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_peview">LED Layout preview</span></h4>
|
||||
<h4 class="panel-title">
|
||||
<i class="fa fa-search fa-fw"></i>
|
||||
<span data-i18n="conf_leds_layout_peview">LED Layout preview</span>
|
||||
<a href="#" class='fullscreen-btn' role="button" title="Toggle fullscreen">
|
||||
<i class="fa fa-expand fa-fw pull-right"></i>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p id="previewcreator" style="font-weight:bold"></p>
|
||||
|
@ -385,13 +406,15 @@
|
|||
<div id="led_vis_help"></div>
|
||||
<div class="col-lg-12 st_helper" style="position:relative; padding-left:0px; padding-right:0px">
|
||||
<canvas id="image_preview" style="position:absolute; z-index:0"></canvas>
|
||||
<div id="keystone_correction_area" style="position: absolute; z-index: 20;"></div>
|
||||
<div id="leds_preview"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<button type="button" class="btn btn-danger" id="leds_prev_toggle_num"><i class="fa fa-info fa-fw"></i><span data-i18n="main_ledsim_btn_togglelednumber">toggle led numbers</span></button>
|
||||
<button type="button" class="btn btn-danger" id="leds_prev_toggle_live_video"><i class="fa fa-fw fa-television"></i><span data-i18n="main_ledsim_btn_togglelivevideo">toggle live video</span></button>
|
||||
<button type="button" class="btn btn-primary" id="leds_prev_checklist"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="conf_leds_layout_btn_checklist">toggle led numbers</span></button>
|
||||
<button type="button" class="btn btn-danger" id="leds_prev_toggle_keystone_correction_area" style="display:none;"><i class="mdi mdi-vector-square" style="margin-right:5px;"></i><span data-i18n="conf_leds_layout_btn_keystone">toggle keystone correction</span></button>
|
||||
<button type="button" class="btn btn-primary pull-right" id="leds_prev_checklist"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="conf_leds_layout_btn_checklist">show checklist</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -402,3 +425,4 @@
|
|||
|
||||
<script src="/js/content_leds.js"></script>
|
||||
|
||||
|
||||
|
|
|
@ -7,7 +7,15 @@
|
|||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-book fa-fw"></i><span data-i18n="conf_logging_logoutput"></span></div>
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<i class="fa fa-book fa-fw"></i>
|
||||
<span data-i18n="conf_logging_logoutput"></span>
|
||||
<a href="#" class='fullscreen-btn' role="button" title="Toggle fullscreen">
|
||||
<i class="fa fa-expand fa-fw pull-right"></i>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div id="log_content"><span style="font-weight:bold;font-size:17px" data-i18n="conf_logging_nomessage"></span></div>
|
||||
</div>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<span id="dash_config_status">Status</span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<table class="table borderless">
|
||||
<table id="dash_capture_hw" class="table borderless">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="3">
|
||||
|
@ -26,7 +26,7 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<tr id="dash_screen_grabber_row">
|
||||
<td></td>
|
||||
<td data-i18n="edt_conf_fg_heading_title">Screen-Grabber</td>
|
||||
<td style="text-align: right; padding-right: 0">
|
||||
|
@ -34,7 +34,7 @@
|
|||
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_screengrabber')" style="text-decoration: none; cursor: pointer"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr id="dash_video_grabber_row">
|
||||
<td></td>
|
||||
<td data-i18n="edt_conf_v4l2_heading_title">Video-Grabber</td>
|
||||
<td style="text-align: right; padding-right: 0">
|
||||
|
@ -42,9 +42,17 @@
|
|||
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_videograbber')" style="text-decoration: none; cursor: pointer"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="dash_audio_grabber_row">
|
||||
<td></td>
|
||||
<td data-i18n="edt_conf_audio_heading_title">Audio-Grabber</td>
|
||||
<td style="text-align: right; padding-right: 0">
|
||||
<span id="dash_audio_grabber">disabled</span>
|
||||
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_audiograbber')" style="text-decoration: none; cursor: pointer"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table borderless">
|
||||
<table id="dash_ports" class="table borderless">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="3">
|
||||
|
@ -54,7 +62,15 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<tr id="dash_ports_flat_row">
|
||||
<td></td>
|
||||
<td data-i18n="dashboard_infobox_label_port_flat">flat</td>
|
||||
<td style="text-align: right; padding-right: 0">
|
||||
<span id="dash_fbPort">unknown</span>
|
||||
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_fbserver')" style="text-decoration: none; cursor: pointer"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="dash_ports_proto_row">
|
||||
<td></td>
|
||||
<td data-i18n="dashboard_infobox_label_port_proto">proto</td>
|
||||
<td style="text-align: right; padding-right: 0">
|
||||
|
@ -62,12 +78,12 @@
|
|||
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_protoserver')" style="text-decoration: none; cursor: pointer"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr id="dash_ports_boblight_row">
|
||||
<td></td>
|
||||
<td data-i18n="dashboard_infobox_label_port_flat">flat</td>
|
||||
<td data-i18n="dashboard_infobox_label_port_boblight">proto</td>
|
||||
<td style="text-align: right; padding-right: 0">
|
||||
<span id="dash_fbPort">unknown</span>
|
||||
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_fbserver')" style="text-decoration: none; cursor: pointer"></a>
|
||||
<span id="dash_boblightPort">unknown</span>
|
||||
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemInstCapture', 'editor_container_boblightserver')" style="text-decoration: none; cursor: pointer"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -127,6 +143,7 @@
|
|||
</div>
|
||||
<!-- /.row -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.container-fluid -->
|
||||
|
||||
<script src="/js/content_dashboard.js"></script>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></h3>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></h3>
|
||||
|
||||
<div class="panel panel-default" style="border:0px;">
|
||||
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
|
||||
|
@ -15,50 +15,51 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div id="intro_effc">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading">
|
||||
<label for="effectslist" data-i18n="effectsconfigurator_label_chooseeff">Choose Base-Effect:</label>
|
||||
<select id="effectslist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div id="eff_desc"></div>
|
||||
<table style="margin-bottom:8px" id="effc_nametable">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="ltd"><label for="name-input" data-i18n="effectsconfigurator_label_effectname">Effect name:</label></td>
|
||||
<td class="itd"><input class="form-control" type="text" id="name-input" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="editor_container" />
|
||||
</div>
|
||||
<div class="panel-footer" id="eff_footer">
|
||||
<button class="btn btn-warning" id='btn_start_test' data-i18n="effectsconfigurator_button_starttest">Start Effecttest</button>
|
||||
<button class="btn btn-warning" id='btn_stop_test' data-i18n="effectsconfigurator_button_stoptest">Stop Effecttest</button>
|
||||
<button class="btn btn-danger" id='btn_cont_test' data-i18n="effectsconfigurator_button_conttest">Toggle continuous testing</button>
|
||||
<button class="btn btn-primary" id='btn_write' data-i18n="effectsconfigurator_button_saveeffect">Save Effect</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading">
|
||||
<label for="effectsdellist" data-i18n="effectsconfigurator_editdeleff"></label>
|
||||
<select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-primary" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button>
|
||||
<button class="btn btn-primary" id='btn_edit' data-i18n="effectsconfigurator_button_editeffect"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="intro_effc">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<label for="effectslist" data-i18n="effectsconfigurator_label_chooseeff">Choose Base-Effect:</label>
|
||||
<select id="effectslist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div id="eff_desc"></div>
|
||||
<table style="margin-bottom:8px" id="effc_nametable">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="ltd"><label for="name-input" data-i18n="effectsconfigurator_label_effectname">Effect name:</label></td>
|
||||
<td class="itd"><input class="form-control" type="text" id="name-input"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="editor_container"></div>
|
||||
</div>
|
||||
<div class="panel-footer" id="eff_footer">
|
||||
<button class="btn btn-warning" id='btn_start_test' data-i18n="effectsconfigurator_button_starttest">Start Effecttest</button>
|
||||
<button class="btn btn-warning" id='btn_stop_test' data-i18n="effectsconfigurator_button_stoptest">Stop Effecttest</button>
|
||||
<button class="btn btn-danger" id='btn_cont_test' data-i18n="effectsconfigurator_button_conttest">Toggle continuous testing</button>
|
||||
<button class="btn btn-primary" id='btn_write' data-i18n="effectsconfigurator_button_saveeffect">Save Effect</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<label for="effectsdellist" data-i18n="effectsconfigurator_editdeleff"></label>
|
||||
<select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-primary" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button>
|
||||
<button class="btn btn-primary" id='btn_edit' data-i18n="effectsconfigurator_button_editeffect"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/js/content_effectsconfigurator.js"></script>
|
||||
|
||||
|
|
|
@ -1,104 +1,107 @@
|
|||
<div class="container-fluid">
|
||||
<h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></h3>
|
||||
<h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></h3>
|
||||
|
||||
<div class="panel panel-default" style="border:0px;">
|
||||
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
|
||||
<div class="dropdown">
|
||||
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
|
||||
<div class="panel panel-default" style="border:0px;">
|
||||
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
|
||||
<div class="dropdown">
|
||||
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
|
||||
<div id="active_instance_friendly_name"></div>
|
||||
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
|
||||
</a>
|
||||
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
|
||||
</a>
|
||||
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-lg-8 col-xxl-7">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_input_label">Source selection</span></div>
|
||||
<div class="panel-body">
|
||||
<div id="sstcont"></div>
|
||||
<div id="auto_btn"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-lg-8 col-xxl-8">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_input_label">Source selection</span></div>
|
||||
<div class="panel-body">
|
||||
<div id="sstcont"></div>
|
||||
<div id="auto_btn"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4 col-xxl-5">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_components_label">Components control</span></div>
|
||||
<div class="panel-body" id="comp_intro">
|
||||
<div id="componentsbutton"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-4 col-xxl-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_components_label">Components control</span></div>
|
||||
<div class="panel-body" id="comp_intro">
|
||||
<div id="componentsbutton"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-6 col-xxl-4">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_color_label">Colors/Effects</span></div>
|
||||
<div class="panel-body" id="color_intro">
|
||||
<table class="table borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align:middle"><label for="cpeff" data-i18n="remote_color_label_color"></label></td>
|
||||
<td>
|
||||
<div id="cp2" class="colorpicker-component input-group">
|
||||
<input type="text" id="cpeff" class="form-control"/>
|
||||
<span class="input-group-addon"><i></i></span>
|
||||
<span class="input-group-addon" id="remote_input_rescol" title="Repeat Color" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle"><label for="effect_select" data-i18n="remote_effects_label_effects">Effect:</label></td>
|
||||
<td class="input-group">
|
||||
<select id="effect_select" class="form-control"></select>
|
||||
<span class="input-group-addon" id="remote_input_reseff" title="Repeat Effect" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle"><label for="remote_input_img" data-i18n="remote_effects_label_picture" >Picture:</label></td>
|
||||
<td class="input-group custom-file">
|
||||
<input class="form-control" id="remote_input_img" type="file" accept="image/*" />
|
||||
<span class="input-group-addon" id="remote_input_repimg" title="Repeat Image" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle"><label for="remote_duration" data-i18n="remote_input_duration"></label></td>
|
||||
<td class="input-group">
|
||||
<input id="remote_duration" type="number" class="form-control" value="0" min="0"/>
|
||||
<span class="input-group-addon" data-i18n="edt_append_s"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<button data-i18n="remote_color_button_reset" type="button" class="btn btn-primary" id="reset_color" style="margin-top:10px;">Reset Color/Effect</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-6 col-xxl-3">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_maptype_label">Mapping types</span></div>
|
||||
<div class="panel-body" id="maptype_intro">
|
||||
<div id="mappingsbutton"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-6 col-xxl-5">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_videoMode_label"></span></div>
|
||||
<div class="panel-body" id="videomode_intro">
|
||||
<div id="videomodebtns"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-6 col-xxl-5">
|
||||
<div class="panel panel-default" >
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_adjustment_label"></span></div>
|
||||
<div class="panel-body" id="adjust_content">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-lg-6 col-xxl-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_color_label">Colors/Effects</span></div>
|
||||
<div class="panel-body" id="color_intro">
|
||||
<table class="table borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align:middle"><label for="cpeff" data-i18n="remote_color_label_color"></label></td>
|
||||
<td>
|
||||
<div id="cp2" class="colorpicker-component input-group">
|
||||
<input type="text" id="cpeff" class="form-control" />
|
||||
<span class="input-group-addon"><i></i></span>
|
||||
<span class="input-group-addon" id="remote_input_rescol" title="Repeat Color" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="effect_row">
|
||||
<td style="vertical-align:middle"><label for="effect_select" data-i18n="remote_effects_label_effects">Effect:</label></td>
|
||||
<td class="input-group">
|
||||
<select id="effect_select" class="form-control"></select>
|
||||
<span class="input-group-addon" id="remote_input_reseff" title="Repeat Effect" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle"><label for="remote_input_img" data-i18n="remote_effects_label_picture">Picture:</label></td>
|
||||
<td class="input-group custom-file">
|
||||
<input class="form-control" id="remote_input_img" type="file" accept="image/*" />
|
||||
<span class="input-group-addon" id="remote_input_repimg" title="Repeat Image" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle"><label for="remote_duration" data-i18n="remote_input_duration"></label></td>
|
||||
<td class="input-group">
|
||||
<input id="remote_duration" type="number" class="form-control" value="0" min="0" />
|
||||
<span class="input-group-addon" data-i18n="edt_append_s"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<button data-i18n="remote_color_button_reset" type="button" class="btn btn-primary" id="reset_color" style="margin-top:10px;">Reset Color/Effect</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-6 col-xxl-3">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_maptype_label">Mapping types</span></div>
|
||||
<div class="panel-body" id="maptype_intro">
|
||||
<div id="mappingsbutton"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-6 col-xxl-5">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_videoMode_label"></span></div>
|
||||
<div class="panel-body" id="videomode_intro">
|
||||
<div id="videomodebtns"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-6 col-xxl-5">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_adjustment_label"></span></div>
|
||||
<div class="panel-body" id="adjust_content">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/js/content_remote.js" ></script>
|
||||
<script src="/js/content_remote.js"></script>
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<h3 data-i18n="info_restart_title"></h3>
|
||||
<h4 data-i18n="info_restart_rightback"></h4>
|
||||
<p data-i18n="info_restart_contus"></p>
|
||||
<a href="https://forum.hyperion-project.org?pk_campaign=WebUI&pk_kwd=failedrestart" data-i18n="info_restart_contusa"></a>
|
||||
<a href="https://hyperion-project.org/forum/" data-i18n="info_restart_contusa"></a>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h3 class="page-header"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></h3>
|
||||
<div class="introd">
|
||||
<h4 data-i18n="update_label_intro">Overview about all available Hyperion versions. On top you could update or downgrade your version of Hyperion whenever you want. Sorted from newest to oldest</h4>
|
||||
<h4> At the moment the install buttons are not working. Development is still ongoing here. </h4>
|
||||
<h4> At the moment the respective install button is disabled. Development is still ongoing here. </h4>
|
||||
<hr />
|
||||
</div>
|
||||
<h4 id="update_currver"></h4>
|
||||
|
@ -49,12 +49,12 @@ $(document).ready( function(error) {
|
|||
danger = 'default';
|
||||
type = 'Stable';
|
||||
}
|
||||
|
||||
|
||||
matches++;
|
||||
$('#versionlist').append('<div class="col-lg-6"><div class="panel panel-'+ danger +'"><div class="panel-heading"><i class="fa fa-television fa-fw"></i>Hyperion V'+window.gitHubVersionList[key].tag_name+'</div><div class="panel-body"><p><span style="font-weight:bold;">'+$.i18n('update_label_type') + '</span> ' + type + '</p><p><span id="desc" style="font-weight:bold;">'+$.i18n('update_label_description')+'</span> '+DOMPurify.sanitize(marked(window.gitHubVersionList[key].body))+'</p><hr><a class="btn btn-primary" href="'+ window.gitHubVersionList[key].html_url +'" target="_blank"><i class="fa fa-list fa-fw"></i><span style="font-weight:bold;">'+$.i18n('update_button_changelog')+'</span></a><button type="button" class="btn btn-warning pull-right" ' + (window.gitHubVersionList[key].tag_name == window.currentVersion ? "disabled":"") + '><i class="fa fa-download fa-fw"></i>'+$.i18n('update_button_install')+'</button></div></div></div>');
|
||||
$('#versionlist').append('<div class="col-lg-6"><div class="panel panel-'+ danger +'"><div class="panel-heading"><i class="fa fa-television fa-fw"></i>Hyperion V'+window.gitHubVersionList[key].tag_name+'</div><div class="panel-body"><p><span style="font-weight:bold;">'+$.i18n('update_label_type') + '</span> ' + type + '</p><p><span id="desc" style="font-weight:bold;">'+$.i18n('update_label_description')+'</span> '+DOMPurify.sanitize(marked.parse(window.gitHubVersionList[key].body))+'</p><hr><a class="btn btn-primary" href="'+ window.gitHubVersionList[key].html_url +'" target="_blank"><i class="fa fa-list fa-fw"></i><span style="font-weight:bold;">'+$.i18n('update_button_changelog')+'</span></a><button type="button" class="btn btn-warning pull-right" ' + (window.gitHubVersionList[key].tag_name == window.currentVersion ? "disabled":"disabled") + '><i class="fa fa-download fa-fw"></i>'+$.i18n('update_button_install')+'</button></div></div></div>');
|
||||
}
|
||||
$('#update_currver').append($.i18n('update_versreminder', currentVersion));
|
||||
|
||||
|
||||
if (matches == 0)
|
||||
$('#versionlist').append($.i18n('update_no_updates_for_branch'));
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -274,6 +274,10 @@ select.form-control {
|
|||
color: #DDDDDD;
|
||||
}
|
||||
|
||||
.keystone_correction_corners {
|
||||
border:1px solid white;
|
||||
}
|
||||
|
||||
.checkbox label::before {
|
||||
border-color: #616161;
|
||||
background-color: #212121;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
.gj-draggable{cursor:move}.gj-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none;z-index:1203}.gj-dialog-bootstrap [data-role=title],.gj-dialog-bootstrap4 [data-role=title]{display:inline}.gj-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.gj-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.gj-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.gj-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.gj-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.gj-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.gj-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.gj-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.gj-dialog-footer{position:absolute;bottom:0;width:100%;margin-top:0}.gj-dialog-scrollable [data-role=body]{overflow-x:hidden;overflow-y:scroll}.gj-dialog-bootstrap,.gj-dialog-bootstrap4,.gj-dialog-md{overflow:hidden;z-index:1202}.gj-dialog-bootstrap [data-role=close]{line-height:1.42857143}.gj-dialog-bootstrap4 [data-role=close]{line-height:1.5}.gj-dialog-md{background-color:#FFF;border:none;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-sizing:border-box;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.gj-dialog-md-header{padding:24px 24px 0;font-family:Roboto,Helvetica,Arial,sans-serif}.gj-dialog-md-title{margin:0;font-weight:400;display:inline;line-height:28px;font-size:20px}.gj-dialog-md-close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0;float:right;line-height:28px;font-size:28px}.gj-dialog-md-body{padding:20px 24px 24px;color:rgba(0,0,0,.54);font-family:Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:20px}.gj-dialog-md-footer{padding:8px 8px 8px 24px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;box-sizing:border-box}.gj-dialog-md-footer>:first-child{margin-right:0}.gj-dialog-md-footer>*{margin-right:8px;height:36px}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,64 +0,0 @@
|
|||
/*
|
||||
* metismenu - v1.1.3
|
||||
* Easy menu jQuery plugin for Twitter Bootstrap 3
|
||||
* https://github.com/onokumus/metisMenu
|
||||
*
|
||||
* Made by Osman Nuri Okumus
|
||||
* Under MIT License
|
||||
*/
|
||||
.arrow {
|
||||
float: right;
|
||||
line-height: 1.42857;
|
||||
}
|
||||
|
||||
.glyphicon.arrow:before {
|
||||
content: "\e079";
|
||||
}
|
||||
|
||||
.active > a > .glyphicon.arrow:before {
|
||||
content: "\e114";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Require Font-Awesome
|
||||
* http://fortawesome.github.io/Font-Awesome/
|
||||
*/
|
||||
|
||||
|
||||
.fa.arrow:before {
|
||||
content: "\f104";
|
||||
}
|
||||
|
||||
.active > a > .fa.arrow:before {
|
||||
content: "\f107";
|
||||
}
|
||||
|
||||
.plus-times {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.fa.plus-times:before {
|
||||
content: "\f067";
|
||||
}
|
||||
|
||||
.active > a > .fa.plus-times {
|
||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
-o-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.plus-minus {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.fa.plus-minus:before {
|
||||
content: "\f067";
|
||||
}
|
||||
|
||||
.active > a > .fa.plus-minus:before {
|
||||
content: "\f068";
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
/*!
|
||||
* metismenu https://github.com/onokumus/metismenu#readme
|
||||
* A collapsible jQuery menu plugin
|
||||
* @version 3.0.6
|
||||
* @author Osman Nuri Okumus <onokumus@gmail.com> (https://github.com/onokumus)
|
||||
* @license: MIT
|
||||
*/.metismenu .arrow{float:right;line-height:1.42857}*[dir=rtl] .metismenu .arrow{float:left}.metismenu .glyphicon.arrow:before{content:""}.metismenu .mm-active>a>.glyphicon.arrow:before{content:""}.metismenu .fa.arrow:before{content:""}.metismenu .mm-active>a>.fa.arrow:before{content:""}.metismenu .ion.arrow:before{content:""}.metismenu .mm-active>a>.ion.arrow:before{content:""}.metismenu .plus-times{float:right}*[dir=rtl] .metismenu .plus-times{float:left}.metismenu .fa.plus-times:before{content:""}.metismenu .mm-active>a>.fa.plus-times{transform:rotate(45deg)}.metismenu .plus-minus{float:right}*[dir=rtl] .metismenu .plus-minus{float:left}.metismenu .fa.plus-minus:before{content:""}.metismenu .mm-active>a>.fa.plus-minus:before{content:""}.metismenu .mm-collapse:not(.mm-show){display:none}.metismenu .mm-collapsing{position:relative;height:0;overflow:hidden;transition-timing-function:ease;transition-duration:.35s;transition-property:height,visibility}.metismenu .has-arrow{position:relative}.metismenu .has-arrow::after{position:absolute;content:"";width:.5em;height:.5em;border-width:1px 0 0 1px;border-style:solid;border-color:initial;right:1em;transform:rotate(-45deg) translate(0, -50%);transform-origin:top;top:50%;transition:all .3s ease-out}*[dir=rtl] .metismenu .has-arrow::after{right:auto;left:1em;transform:rotate(135deg) translate(0, -50%)}.metismenu .mm-active>.has-arrow::after,.metismenu .has-arrow[aria-expanded=true]::after{transform:rotate(-135deg) translate(0, -50%)}*[dir=rtl] .metismenu .mm-active>.has-arrow::after,*[dir=rtl] .metismenu .has-arrow[aria-expanded=true]::after{transform:rotate(225deg) translate(0, -50%)}/*# sourceMappingURL=metisMenu.min.css.map */
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"dashboard_alert_message_confedit": "La teva configuració d'Hyperion s'ha modificat. Per aplicar-la, reinicia Hyperion.",
|
||||
"dashboard_alert_message_confedit_t": "Configuració modificada",
|
||||
"dashboard_alert_message_confsave_success_t": "Configuració guardada",
|
||||
"dashboard_alert_message_disabled_t": "Instància de maquinari LED deshabilitada",
|
||||
"dashboard_componentbox_label_comp": "Component",
|
||||
"dashboard_componentbox_label_status": "Estat",
|
||||
"dashboard_componentbox_label_title": "Estat del component",
|
||||
"dashboard_infobox_label_currenthyp": "La teva versió d'Hyperion:",
|
||||
"dashboard_infobox_label_disableh": "Desactivar instància: 1 $",
|
||||
"dashboard_infobox_label_enableh": "Activar instància: 1 $",
|
||||
"dashboard_infobox_label_instance": "Instànica:",
|
||||
"dashboard_infobox_label_latesthyp": "La darrera versió d'Hyperion:",
|
||||
"dashboard_infobox_label_platform": "Plataforma:",
|
||||
"dashboard_infobox_label_ports": "Ports:",
|
||||
"dashboard_infobox_label_smartacc": "Accés intel·ligent",
|
||||
"dashboard_infobox_label_statush": "Estat d'Hyperion:",
|
||||
"dashboard_infobox_label_title": "Informació",
|
||||
"dashboard_infobox_message_updatesuccess": "Estàs executant la darrera versió d'Hyperion.",
|
||||
"dashboard_infobox_message_updatewarning": "Hi ha una nova versió d'Hyperion disponible! (1 $)",
|
||||
"dashboard_label_intro": "El panell de control et dona una vista ràpida de l'estat d'Hyperion",
|
||||
"dashboard_newsbox_label_title": "Bloc d'Hyperion",
|
||||
"dashboard_newsbox_readmore": "Llegeix més",
|
||||
"dashboard_newsbox_visitblog": "Visita el bloc d'Hyperion",
|
||||
"general_access_advanced": "Avançat",
|
||||
"general_access_default": "Per defecte",
|
||||
"general_access_expert": "Expert",
|
||||
"general_btn_back": "Tornar",
|
||||
"general_btn_cancel": "Cancel.la",
|
||||
"general_btn_continue": "Continuar",
|
||||
"general_btn_next": "Següent",
|
||||
"general_btn_off": "Off",
|
||||
"general_btn_ok": "OK",
|
||||
"general_btn_on": "On",
|
||||
"general_btn_restarthyperion": "Reinicia Hyperion",
|
||||
"general_btn_save": "Guarda",
|
||||
"general_btn_saveandreload": "Guarda i recarrega",
|
||||
"general_btn_yes": "Sí",
|
||||
"general_button_savesettings": "Guarda la configuració",
|
||||
"general_col_blue": "blau",
|
||||
"general_col_green": "verd",
|
||||
"general_col_red": "vermell",
|
||||
"general_comp_BLACKBORDER": "Bandes fosques",
|
||||
"general_comp_GRABBER": "Captura Pantalla",
|
||||
"general_comp_LEDDEVICE": "Sortida LED",
|
||||
"general_comp_SMOOTHING": "Suavitzat",
|
||||
"general_comp_V4L": "Captura l'entrada USB",
|
||||
"general_country_de": "Alemany",
|
||||
"general_country_es": "Espanya",
|
||||
"general_country_fr": "França",
|
||||
"general_country_it": "Itàlia",
|
||||
"general_country_nl": "Països Baixos",
|
||||
"general_country_uk": "Regne Unit",
|
||||
"general_country_us": "Estats Units",
|
||||
"general_speech_cs": "Txec",
|
||||
"general_speech_de": "Alemany",
|
||||
"general_speech_en": "Anglès",
|
||||
"general_speech_es": "Espanyol",
|
||||
"general_speech_it": "Italià",
|
||||
"general_webui_title": "Hyperion - Configuració Web"
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"dashboard_infobox_label_currenthyp": "Din Hyperion version:",
|
||||
"dashboard_infobox_label_latesthyp": "Seneste Hyperion version:",
|
||||
"dashboard_infobox_label_platform": "Platform:",
|
||||
"dashboard_infobox_label_title": "Information",
|
||||
"dashboard_label_intro": "Dashboardet giver dig en hurtig oversigt over status af Hyperion",
|
||||
"general_access_advanced": "Avanceret",
|
||||
"general_access_default": "Standart",
|
||||
"general_access_expert": "Ekspert",
|
||||
"general_btn_back": "Tilbage",
|
||||
"general_btn_cancel": "Annullere",
|
||||
"general_btn_continue": "Fortsæt",
|
||||
"general_btn_iswitch": "Skift",
|
||||
"general_btn_next": "Næste",
|
||||
"general_btn_off": "Fra",
|
||||
"general_btn_ok": "OK",
|
||||
"general_btn_on": "Til",
|
||||
"general_btn_restarthyperion": "Genstart Hyperion",
|
||||
"general_btn_save": "Gem",
|
||||
"general_btn_saveandreload": "Gem og genindlæs",
|
||||
"general_btn_yes": "Ja",
|
||||
"general_button_savesettings": "Gem indstillinger",
|
||||
"general_col_blue": "blå",
|
||||
"general_col_green": "grøn",
|
||||
"general_col_red": "rød",
|
||||
"general_comp_BLACKBORDER": "Blackbar Detektion",
|
||||
"general_comp_BOBLIGHTSERVER": "Boblight Server",
|
||||
"general_comp_FLATBUFSERVER": "Flatbuffers Server",
|
||||
"general_comp_FORWARDER": "Forwarder",
|
||||
"general_comp_GRABBER": "Optag skærm",
|
||||
"general_comp_LEDDEVICE": "LED output",
|
||||
"general_comp_PROTOSERVER": "Protocol Buffers Server",
|
||||
"general_comp_SMOOTHING": "Udjævning",
|
||||
"general_comp_V4L": "Optag USB-input",
|
||||
"general_country_de": "Tyskland",
|
||||
"general_country_es": "Spanien",
|
||||
"general_country_fr": "Frankrig",
|
||||
"general_country_it": "Italien",
|
||||
"general_country_nl": "Holland",
|
||||
"general_country_uk": "England",
|
||||
"general_country_us": "USA",
|
||||
"general_speech_cs": "Tjekkisk",
|
||||
"general_speech_de": "Tysk",
|
||||
"general_speech_en": "Engelsk",
|
||||
"general_speech_es": "Spansk",
|
||||
"general_speech_it": "Italiensk",
|
||||
"general_webui_title": "Hyperion - Webkonfiguration",
|
||||
"general_wiki_moreto": "Mere information om \"$1\" på vores Wiki"
|
||||
}
|
|
@ -10,6 +10,9 @@
|
|||
"InfoDialog_nowrite_foottext": "Die Webkonfiguration wird automatisch wieder freigegeben, sobald das Problem behoben wurde!",
|
||||
"InfoDialog_nowrite_text": "Hyperion hat keinen Schreibzugriff auf die aktuell geladene Konfiguration. Bitte korrigiere die Dateizugriffsrechte, um fortzufahren.",
|
||||
"InfoDialog_nowrite_title": "Fehler beim Schreibzugriff!",
|
||||
"InfoDialog_systemRestart_title": "Neustart",
|
||||
"InfoDialog_systemResume_title": "Aktivieren",
|
||||
"InfoDialog_systemSuspend_title": "Ruhezustand",
|
||||
"about_3rd_party_licenses": "Drittanbieter Lizenzen",
|
||||
"about_3rd_party_licenses_error": "Wir hatten Probleme beim Laden der Drittanbieter Lizenzen aus dem Internet. <br />Klicke hier, um die Datei auf GitHub aufzurufen.",
|
||||
"about_build": "Build",
|
||||
|
@ -41,6 +44,7 @@
|
|||
"conf_general_inst_title": "LED-Hardware Instanzverwaltung",
|
||||
"conf_general_intro": "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.",
|
||||
"conf_general_label_title": "Allgemeine Einstellungen",
|
||||
"conf_grabber_audio_intro": "Bei der Audioerfassung wird ein Audioeingabegerät als Quelle für die Visualisierung verwendet.",
|
||||
"conf_grabber_fg_intro": "Bildschirm Aufnahme ist das lokale System auf dem Hyperion installiert wurde, welches als Bildquelle dient.",
|
||||
"conf_grabber_inst_grabber_config_info": "Konfiguriere deine Aufnahmegeräte bevor du sie in einer LED-Instanz benutzt.",
|
||||
"conf_grabber_v4l_intro": "USB-Aufnahme ist ein Gerät, welches via USB angeschlossen ist und als Bildquelle dient.",
|
||||
|
@ -51,9 +55,13 @@
|
|||
"conf_leds_contr_label_contrtype": "Steuerungstyp:",
|
||||
"conf_leds_device_info_log": "Falls die LEDs nicht leuchten, schaue hier ob es einen Fehler gab: ",
|
||||
"conf_leds_device_intro": "Wähle eine Methode zur Steuerung deiner LEDs aus, sie sind unterteilt in verschiedene Kategorien. Neben den allgemeinen Optionen die für alle gültig sind, gibt es auch spezifische, die sich unterscheiden je nach Wahl.",
|
||||
"conf_leds_error_get_properties_text": "Auf die Geräteeigenschaften kann nicht zugegriffen werden - Überprüfe die Konfiguration.",
|
||||
"conf_leds_error_get_properties_title": "Geräteeigenschaften",
|
||||
"conf_leds_error_hwled_gt_layout": "Die Zahl der gegebenen Hardware LEDs ($1) ist größer, als die Anzahl der im LED-Layout definierten ($2), $3 {{plural:$3|LED wird|LEDs werden}} schwarz bleiben.",
|
||||
"conf_leds_error_hwled_gt_maxled": "Die Zahl der gegebenen Hardware LEDs ($1) ist größer, als die Anzahl der durch den LED-Steuerungstyp unterstützen ($2). <br>Die Anzahl Hardware LEDs wir auf ($3) gesetzt.",
|
||||
"conf_leds_error_hwled_gt_maxled": "Die Zahl der gegebenen Hardware LEDs ($1) ist größer, als die Anzahl der durch den LED-Steuerungstyp unterstützen ($2). <br>Die Anzahl Hardware LEDs wird auf ($3) gesetzt.",
|
||||
"conf_leds_error_hwled_gt_maxled_protocol": "Die Anzahl der Hardware-LEDs ($1) ist größer als die maximale Anzahl der vom Streaming-Protokoll unterstützten LEDs ($2).<br> Das Streaming-Protokoll wird auf ($3) geändert.",
|
||||
"conf_leds_error_hwled_lt_layout": "Die Zahl der gegebenen Hardware LEDs ($1) ist kleiner, als die Anzahl der im LED-Layout definierten ($2). <br> Im LED-Layout dürfen nicht mehr LEDs konfiguriert sein, als vorhanden.",
|
||||
"conf_leds_error_wled_segment_missing": "Das aktuell konfigurierte Segment ($1) ist in WLED-Gerät nicht konfiguriert.<br> Überprüfe die WLED-Konfiguration!<br>Die Konfigurationsseite zeigt die aktuelle WLED-Einstellung.",
|
||||
"conf_leds_info_ws281x": "Hyperion muss mit 'root' Rechten für diesen LED-Steuerungstyp laufen!",
|
||||
"conf_leds_layout_advanced": "Erweiterte Optionen",
|
||||
"conf_leds_layout_blacklist_num_title": "LED-Anzahl",
|
||||
|
@ -62,6 +70,7 @@
|
|||
"conf_leds_layout_blacklist_start_title": "Start-LED",
|
||||
"conf_leds_layout_blacklistleds_title": "Auszuschließende LEDs",
|
||||
"conf_leds_layout_btn_checklist": "Zeige Checkliste",
|
||||
"conf_leds_layout_btn_keystone": "Trapezkorrektur",
|
||||
"conf_leds_layout_button_savelay": "Speichere Layout",
|
||||
"conf_leds_layout_button_updsim": "Aktualisiere Vorschau",
|
||||
"conf_leds_layout_checkp1": "Die schwarze eingefärbte LED ist die erste LED. Das ist der Punkt, an dem die Daten eingespeist werden.",
|
||||
|
@ -72,7 +81,7 @@
|
|||
"conf_leds_layout_cl_bottomleft": "Unten Links (Ecke)",
|
||||
"conf_leds_layout_cl_bottomright": "Unten Rechts (Ecke)",
|
||||
"conf_leds_layout_cl_cornergap": "Eckabstand",
|
||||
"conf_leds_layout_cl_edgegap": "Rahmenabstand",
|
||||
"conf_leds_layout_cl_edgegap": "Eckenabstand",
|
||||
"conf_leds_layout_cl_gaglength": "Lückenlänge",
|
||||
"conf_leds_layout_cl_gappos": "Lückenposition",
|
||||
"conf_leds_layout_cl_hleddepth": "Horizontale LED-Tiefe",
|
||||
|
@ -81,6 +90,16 @@
|
|||
"conf_leds_layout_cl_leftbottom": "Links unten (50% bis 100%)",
|
||||
"conf_leds_layout_cl_leftmiddle": "Links mitte (25% bis 75%)",
|
||||
"conf_leds_layout_cl_lefttop": "Links oben (0% bis 50%)",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft11": "Link unten (75% bis 100%)",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft112": "Link unten (0% bis 50%)",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft12": "Link unten (25% bis 50%)",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft121": "Link unten (50% bis 100%)",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft14": "Link unten (0% bis 25%)",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft34": "Link unten (50 bis 75%)",
|
||||
"conf_leds_layout_cl_lightPosBottomLeftNewMid": "Link unten (25% bis 75%)",
|
||||
"conf_leds_layout_cl_lightPosTopLeft112": "Link oben (0% bis 50%)",
|
||||
"conf_leds_layout_cl_lightPosTopLeft121": "Link oben (50% bis 100%)",
|
||||
"conf_leds_layout_cl_lightPosTopLeftNewMid": "Link oben (25% bis 75%)",
|
||||
"conf_leds_layout_cl_overlap": "Überlappung",
|
||||
"conf_leds_layout_cl_reversdir": "Richtung umkehren",
|
||||
"conf_leds_layout_cl_right": "Rechts",
|
||||
|
@ -93,8 +112,9 @@
|
|||
"conf_leds_layout_cl_vleddepth": "Vertikale LED-Tiefe",
|
||||
"conf_leds_layout_frame": "Klassisches Layout (Rahmen)",
|
||||
"conf_leds_layout_generatedconf": "Generierte/Aktuelle LED-Konfiguration",
|
||||
"conf_leds_layout_intro": "Du benötigst ebenfalls ein LED-Layout, welches deine LED-Positionen wiederspiegelt. Das klassische Layout wird für gewöhnlichen für TVs verwendet, Hyperion unterstützt aber auch LED-Wände (Matrix). Die Ansicht des Layouts ist die Perspektive VOR dem Fernseher, nicht dahinter.",
|
||||
"conf_leds_layout_intro": "Du benötigst ebenfalls ein LED-Layout, welches deine LED-Positionen widerspiegelt. Das klassische Layout wird üblicherweise für TVs verwendet, Hyperion unterstützt aber auch LED-Wände (Matrix). Die Ansicht des Layouts ist die Perspektive VOR dem Fernseher, nicht dahinter.",
|
||||
"conf_leds_layout_ma_cabling": "Verkabelung",
|
||||
"conf_leds_layout_ma_direction": "Richtung",
|
||||
"conf_leds_layout_ma_horiz": "Horizontal",
|
||||
"conf_leds_layout_ma_optbottomleft": "Unten links",
|
||||
"conf_leds_layout_ma_optbottomright": "Unten rechts",
|
||||
|
@ -181,9 +201,10 @@
|
|||
"dashboard_infobox_label_instance": "Instanz:",
|
||||
"dashboard_infobox_label_latesthyp": "Aktuellste Hyperion Version:",
|
||||
"dashboard_infobox_label_platform": "Bildschirm:",
|
||||
"dashboard_infobox_label_port_boblight": "Boblight Server:",
|
||||
"dashboard_infobox_label_port_flat": "Flatbuffer:",
|
||||
"dashboard_infobox_label_port_json": "JSON-Server:",
|
||||
"dashboard_infobox_label_port_proto": "\nProtobuffer:",
|
||||
"dashboard_infobox_label_port_proto": "Protobuffer:",
|
||||
"dashboard_infobox_label_ports": "Ports",
|
||||
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
|
||||
"dashboard_infobox_label_smartacc": "Schnellzugriff",
|
||||
|
@ -192,7 +213,7 @@
|
|||
"dashboard_infobox_label_watchedversionbranch": "Ausgewählter Versionszweig:",
|
||||
"dashboard_infobox_message_updatesuccess": "Du nutzt die aktuellste Version von Hyperion.",
|
||||
"dashboard_infobox_message_updatewarning": "Eine aktuellere Version von Hyperion ist verfügbar! ($1)",
|
||||
"dashboard_label_intro": "Das Dashboard zeigt dir Informationen zum Status und ob Updates verfügbar sind.",
|
||||
"dashboard_label_intro": "Das Dashboard zeigt dir eine Übersicht zum Status der Komponenten von Hyperion an.",
|
||||
"dashboard_message_default_password": "Das Standardpasswort der WebUI ist gesetzt. Wir empfehlen dringend, dieses zu ändern.",
|
||||
"dashboard_message_default_password_t": "WebUI Standardpasswort gesetzt",
|
||||
"dashboard_message_do_not_show_again": "Diese Meldung nicht mehr anzeigen",
|
||||
|
@ -203,6 +224,7 @@
|
|||
"dashboard_newsbox_readmore": "Weiterlesen",
|
||||
"dashboard_newsbox_visitblog": "Besuche den Hyperion-Blog",
|
||||
"edt_append_degree": "°",
|
||||
"edt_append_frames": "Frames",
|
||||
"edt_append_hz": "Hz",
|
||||
"edt_append_leds": "LEDs",
|
||||
"edt_append_ms": "ms",
|
||||
|
@ -213,6 +235,27 @@
|
|||
"edt_append_pixel": "Pixel",
|
||||
"edt_append_s": "s",
|
||||
"edt_append_sdegree": "s/grad",
|
||||
"edt_conf_audio_device_expl": "Ausgewähltes Audio-Eingabegerät",
|
||||
"edt_conf_audio_device_title": "Audio-Eingabegerät",
|
||||
"edt_conf_audio_effect_enum_vumeter": "VU-Meter",
|
||||
"edt_conf_audio_effect_hotcolor_expl": "Farbe die einen hohen Pegel anzeigt.",
|
||||
"edt_conf_audio_effect_hotcolor_title": "Farbe hoher Pegel",
|
||||
"edt_conf_audio_effect_multiplier_expl": "Multiplikator zur Verstärkung des Audiosignals.",
|
||||
"edt_conf_audio_effect_multiplier_title": "Multiplikator",
|
||||
"edt_conf_audio_effect_safecolor_expl": "Farbe die einen niedrigen Pegel anzeigt.",
|
||||
"edt_conf_audio_effect_safecolor_title": "Farbe niedriger Pegel",
|
||||
"edt_conf_audio_effect_safevalue_expl": "Schwellwert bis zu dem ein niedriger Pegel gegeben ist.",
|
||||
"edt_conf_audio_effect_safevalue_title": "Schwellwert niedriger Pegel",
|
||||
"edt_conf_audio_effect_set_defaults": "Zurücksetzen auf Standardwerte",
|
||||
"edt_conf_audio_effect_tolerance_expl": "Toleranz für die automatische Berechnung eines Signalmultiplikators von 0-100",
|
||||
"edt_conf_audio_effect_tolerance_title": "Toleranz",
|
||||
"edt_conf_audio_effect_warncolor_expl": "Farbe die einen mittleren Pegel anzeigt.",
|
||||
"edt_conf_audio_effect_warncolor_title": "Farbe mittlerer Pegel",
|
||||
"edt_conf_audio_effect_warnvalue_expl": "Schwellwert bis zu dem ein mittlerer Pegel gegeben ist.",
|
||||
"edt_conf_audio_effect_warnvalue_title": "Schwellwert mittlerer Pegel",
|
||||
"edt_conf_audio_effects_expl": "Wähle einen Effekt für die Umwandlung des Audiosignals.",
|
||||
"edt_conf_audio_effects_title": "Audio-Effekte",
|
||||
"edt_conf_audio_heading_title": "Audio Aufnahme",
|
||||
"edt_conf_bb_blurRemoveCnt_expl": "Anzahl an Pixeln, die zusätzlich vom Rand abgeschnitten werden.",
|
||||
"edt_conf_bb_blurRemoveCnt_title": "Unscharfe Pixel",
|
||||
"edt_conf_bb_borderFrameCnt_expl": "Anzahl an Bildern bis ein neuer Rand festgelegt wird.",
|
||||
|
@ -228,6 +271,8 @@
|
|||
"edt_conf_bb_unknownFrameCnt_title": "Unbekannte Bilder",
|
||||
"edt_conf_bge_heading_title": "Hintergrund Effekt/Farbe",
|
||||
"edt_conf_bobls_heading_title": "Boblight Server",
|
||||
"edt_conf_color_accuracyLevel_expl": "Stufe, wie genau dominante Farben ausgewertet werden. Eine höhere Stufe erzeugt genauere Ergebnisse, erfordert aber auch mehr Rechenleistung. Sollte mit reduzierter Pixelverarbeitung kombiniert werden.",
|
||||
"edt_conf_color_accuracyLevel_title": "Genauigkeitsstufe",
|
||||
"edt_conf_color_backlightColored_expl": "Die Hintergrundbeleuchtung kann mit oder ohne Farbanteile genutzt werden.",
|
||||
"edt_conf_color_backlightColored_title": "Farbige Hintergrundbeleuchtung",
|
||||
"edt_conf_color_backlightThreshold_expl": "Eine Beleuchtung die dauerhaft aktiv ist. (Automatisch deaktiviert bei Effekten, Farben oder im Zustand \"Aus\")",
|
||||
|
@ -238,6 +283,8 @@
|
|||
"edt_conf_color_blue_title": "Blau",
|
||||
"edt_conf_color_brightnessComp_expl": "Kompensiert Unterschiede in der Helligkeit zwischen Rot Grün Blau, Cyan Magenta Gelb und weiß. 100 ist volle Kompensation, 0 keine Kompensation",
|
||||
"edt_conf_color_brightnessComp_title": "Helligkeitsabgleich",
|
||||
"edt_conf_color_brightnessGain_expl": "Anpassung der Helligkeit. 1,0 bedeutet keine Änderung, Werte größer 1,0 erhöhen die Helligkeit, kleiner 1,0 verringern diese.",
|
||||
"edt_conf_color_brightnessGain_title": "Helligkeitsverstärkung",
|
||||
"edt_conf_color_brightness_expl": "Die gesamte Helligkeit",
|
||||
"edt_conf_color_brightness_title": "Helligkeit",
|
||||
"edt_conf_color_channelAdjustment_header_expl": "Passe die Farbkanäle deiner LEDs an",
|
||||
|
@ -256,7 +303,7 @@
|
|||
"edt_conf_color_heading_title": "Farbkalibrierung",
|
||||
"edt_conf_color_id_expl": "Eine vom Benutzer frei angegebene ID.",
|
||||
"edt_conf_color_id_title": "ID",
|
||||
"edt_conf_color_imageToLedMappingType_expl": "Sofern nicht \"Mehrfarbig\", wird dein LED-Layout mit einer anderen Bildzuweisung überschrieben",
|
||||
"edt_conf_color_imageToLedMappingType_expl": "Sofern nicht \"Durchschnittsfarbe einfach \", wird dein LED-Layout mit einer anderen Bildzuweisung überschrieben",
|
||||
"edt_conf_color_imageToLedMappingType_title": "LED-Bereich Zuordnungstyp",
|
||||
"edt_conf_color_leds_expl": "Zugewiesen zu allen (*) LEDs oder nur zu bestimmten LED Nummern (0-17).",
|
||||
"edt_conf_color_leds_title": "LED-Iindex",
|
||||
|
@ -264,6 +311,10 @@
|
|||
"edt_conf_color_magenta_title": "Magenta",
|
||||
"edt_conf_color_red_expl": "Kalibrierter Rotwert.",
|
||||
"edt_conf_color_red_title": "Rot",
|
||||
"edt_conf_color_reducedPixelSetFactorFactor_expl": "Es wird nur eine reduzierte Menge von Pixeln pro definiertem LED-Bereich ausgewertet, Niedrig ~25%, Mittel ~10%, Hoch ~6%",
|
||||
"edt_conf_color_reducedPixelSetFactorFactor_title": "Reduzierte Pixelverarbeitung",
|
||||
"edt_conf_color_saturationGain_expl": "Anpassung der Farbsättigung. 1,0 bedeutet keine Änderung, Werte größer 1,0 erhöhen die Sättigung, kleiner 1,0 verringern diese.",
|
||||
"edt_conf_color_saturationGain_title": "Sättigungsverstärkung",
|
||||
"edt_conf_color_white_expl": "Kalibrierter Weißwert.",
|
||||
"edt_conf_color_white_title": "Weiß",
|
||||
"edt_conf_color_yellow_expl": "Kalibrierter Gelbwert.",
|
||||
|
@ -293,6 +344,8 @@
|
|||
"edt_conf_enum_color": "Farbe",
|
||||
"edt_conf_enum_custom": "Benutzerdefiniert",
|
||||
"edt_conf_enum_decay": "Dämpfung",
|
||||
"edt_conf_enum_delay": "Nur Verzögerung",
|
||||
"edt_conf_enum_disabled": "Deaktiviert",
|
||||
"edt_conf_enum_dl_error": "nur Fehler",
|
||||
"edt_conf_enum_dl_informational": "informativ",
|
||||
"edt_conf_enum_dl_nodebug": "keine Debugausgabe",
|
||||
|
@ -301,9 +354,12 @@
|
|||
"edt_conf_enum_dl_verbose1": "Stufe 1",
|
||||
"edt_conf_enum_dl_verbose2": "Stufe 2",
|
||||
"edt_conf_enum_dl_verbose3": "Stufe 3",
|
||||
"edt_conf_enum_dominant_color": "Dominante Farbe - pro LED",
|
||||
"edt_conf_enum_dominant_color_advanced": "Dominante Farbe fortgeschritten - pro LED",
|
||||
"edt_conf_enum_effect": "Effekt",
|
||||
"edt_conf_enum_gbr": "GBR",
|
||||
"edt_conf_enum_grb": "GRB",
|
||||
"edt_conf_enum_high": "Hoch",
|
||||
"edt_conf_enum_hsv": "HSV",
|
||||
"edt_conf_enum_left_right": "von links nach rechts",
|
||||
"edt_conf_enum_linear": "Linear",
|
||||
|
@ -311,7 +367,10 @@
|
|||
"edt_conf_enum_logsilent": "Stille",
|
||||
"edt_conf_enum_logverbose": "Ausführlich",
|
||||
"edt_conf_enum_logwarn": "Warnung",
|
||||
"edt_conf_enum_multicolor_mean": "Mehrfarbig",
|
||||
"edt_conf_enum_low": "Niedrig",
|
||||
"edt_conf_enum_medium": "Mittel",
|
||||
"edt_conf_enum_multicolor_mean": "Durchschnittsfarbe einfach - pro LED",
|
||||
"edt_conf_enum_multicolor_mean_squared": "Durchschnittsfarbe zum Quadrat - pro LED",
|
||||
"edt_conf_enum_please_select": "Bitte auswählen",
|
||||
"edt_conf_enum_rbg": "RBG",
|
||||
"edt_conf_enum_rgb": "RGB",
|
||||
|
@ -319,7 +378,9 @@
|
|||
"edt_conf_enum_top_down": "von oben nach unten",
|
||||
"edt_conf_enum_transeffect_smooth": "Gleichmäßig",
|
||||
"edt_conf_enum_transeffect_sudden": "Sofort",
|
||||
"edt_conf_enum_unicolor_mean": "Einfarbig",
|
||||
"edt_conf_enum_udp_ddp": "DDP",
|
||||
"edt_conf_enum_udp_raw": "RAW",
|
||||
"edt_conf_enum_unicolor_mean": "Durchschnittsfarbe Gesamtbild - auf alle LED angewandt",
|
||||
"edt_conf_fbs_heading_title": "Flatbuffers Server",
|
||||
"edt_conf_fbs_timeout_expl": "Wenn für die angegebene Zeit keine Daten empfangen werden, wird die Komponente (vorübergehend) deaktiviert",
|
||||
"edt_conf_fbs_timeout_title": "Zeitüberschreitung",
|
||||
|
@ -347,11 +408,18 @@
|
|||
"edt_conf_fge_type_title": "Typ",
|
||||
"edt_conf_fw_flat_expl": "Ein Flatbuffer Ziel pro Zeile. Bestehend aus IP:PORT (Beispiel: 127.0.0.1:19401)",
|
||||
"edt_conf_fw_flat_itemtitle": "Flatbuffer Ziel",
|
||||
"edt_conf_fw_flat_services_discovered_expl": "Gefundene Hyperion-Server mit Flatbuffer-Dienst",
|
||||
"edt_conf_fw_flat_services_discovered_title": "Gefundene Flatbuffer-Ziele",
|
||||
"edt_conf_fw_flat_title": "Liste von Flatbuffer Zielen",
|
||||
"edt_conf_fw_heading_title": "Weiterleitung",
|
||||
"edt_conf_fw_json_expl": "Ein Json Ziel pro Zeile. Bestehend aus IP:PORT (Beispiel: 127.0.0.1:19446)",
|
||||
"edt_conf_fw_json_itemtitle": "Json Ziel",
|
||||
"edt_conf_fw_json_title": "Liste von Json Zielen",
|
||||
"edt_conf_fw_json_expl": "Ein JSON-API-Dienst Ziel",
|
||||
"edt_conf_fw_json_itemtitle": "JSON-API Ziel",
|
||||
"edt_conf_fw_json_services_discovered_expl": "Gefundene Hyperion-Server mit JSON-API-Dienst",
|
||||
"edt_conf_fw_json_services_discovered_title": "Gefundene JSON-Ziele",
|
||||
"edt_conf_fw_json_title": "Liste von JSON-API Zielen",
|
||||
"edt_conf_fw_remote_service_discovered_none": "Keine anderen Hyperion Dienste gefunden",
|
||||
"edt_conf_fw_service_name_expl": "Name des remote Hyperiondienstes/-Servers",
|
||||
"edt_conf_fw_service_name_title": "Dienstname",
|
||||
"edt_conf_gen_configVersion_title": "Konfiguration per Version",
|
||||
"edt_conf_gen_heading_title": "Allgemeine Einstellungen",
|
||||
"edt_conf_gen_name_expl": "Der Name wird verwendet, um Hyperion besser zu identifizieren. (Hilfreich bei mehreren Instanzen)",
|
||||
|
@ -371,11 +439,13 @@
|
|||
"edt_conf_grabber_discovered_title": "Gefundenes Aufnahmegerät",
|
||||
"edt_conf_grabber_discovered_title_info": "Wähle dein gefundenes Aufnahmegerät aus.",
|
||||
"edt_conf_grabber_discovery_inprogress": "Suche Aufnahmegeräte",
|
||||
"edt_conf_instC_audioEnable_expl": "Aktiviert die Audioaufnahme für diese LED Hardware Instanz.",
|
||||
"edt_conf_instC_audioEnable_title": "Aktivieren der Audioaufnahme",
|
||||
"edt_conf_instC_screen_grabber_device_expl": "Das verwendet Bildschirmaufnahmegerät",
|
||||
"edt_conf_instC_screen_grabber_device_title": "Bildschirmaufnahmegerät",
|
||||
"edt_conf_instC_systemEnable_expl": "Aktiviert die Bildschirm Aufnahme für diese LED Hardware Instanz.",
|
||||
"edt_conf_instC_systemEnable_title": "Aktiviere Bildschirm Aufnahme",
|
||||
"edt_conf_instC_v4lEnable_expl": "Aktiviert die USB Aufnahme für diese LED -Hardware Instanz.",
|
||||
"edt_conf_instC_v4lEnable_expl": "Aktiviert die USB Aufnahme für diese LED Hardware Instanz.",
|
||||
"edt_conf_instC_v4lEnable_title": "Aktiviere USB-Aufnahme",
|
||||
"edt_conf_instC_video_grabber_device_expl": "Das verwendete Videoaufnahmegerät.",
|
||||
"edt_conf_instC_video_grabber_device_title": "Videoaufnahmegerät",
|
||||
|
@ -410,8 +480,6 @@
|
|||
"edt_conf_smooth_heading_title": "Glättung",
|
||||
"edt_conf_smooth_interpolationRate_expl": "Frequenz in der Zwischenschritte zur Glättung berechnet werden.",
|
||||
"edt_conf_smooth_interpolationRate_title": "Interpolationsfrequenz",
|
||||
"edt_conf_smooth_outputRate_expl": "Die Ausgangfrequenz zum LED-Gerät",
|
||||
"edt_conf_smooth_outputRate_title": "Ausgabefrequenz",
|
||||
"edt_conf_smooth_time_ms_expl": "Wie lange soll die Glättung Bilder sammeln?",
|
||||
"edt_conf_smooth_time_ms_title": "Zeit",
|
||||
"edt_conf_smooth_type_expl": "Algorithmus der Glättung.",
|
||||
|
@ -496,8 +564,14 @@
|
|||
"edt_dev_enum_sub_min_warm_adjust": "Minimale Anpassung: warm",
|
||||
"edt_dev_enum_subtract_minimum": "Subtrahiere Minimum",
|
||||
"edt_dev_enum_white_off": "Weiß ist aus",
|
||||
"edt_dev_general_autostart_title": "Autostart",
|
||||
"edt_dev_general_autostart_title_info": "Die LEDs werden nach dem Start angeschaltet oder nicht",
|
||||
"edt_dev_general_colorOrder_title": "RGB Byte Reihenfolge",
|
||||
"edt_dev_general_colorOrder_title_info": "Die Farbreihenfolge des Gerätes",
|
||||
"edt_dev_general_enableAttemptsInterval_title": "Wiederholungsintervall",
|
||||
"edt_dev_general_enableAttemptsInterval_title_info": "Intervall zwischen zwei Verbindungsversuchen.",
|
||||
"edt_dev_general_enableAttempts_title": "Verbindungsversuche",
|
||||
"edt_dev_general_enableAttempts_title_info": "Anzahl der Verbindungsversuche bevor das Gerät stoppt.",
|
||||
"edt_dev_general_hardwareLedCount_title": "Anzahl Hardware LEDs",
|
||||
"edt_dev_general_hardwareLedCount_title_info": "Die verfügbare LED Anzahl des Gerätes",
|
||||
"edt_dev_general_heading_title": "Allgemeine Einstellungen",
|
||||
|
@ -508,20 +582,22 @@
|
|||
"edt_dev_spec_FCsetConfig_title": "Wende Fadecandy Konfiguration an",
|
||||
"edt_dev_spec_LBap102Mode_title": "LightBerry APA102 Modus",
|
||||
"edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo",
|
||||
"edt_dev_spec_ada_mode_title": "Adalight - Standard",
|
||||
"edt_dev_spec_awa_mode_title": "HyperSerial - High speed",
|
||||
"edt_dev_spec_baudrate_title": "Baudrate",
|
||||
"edt_dev_spec_blackLightsTimeout_title": "Signal Erkennung Timeout bei schwarz",
|
||||
"edt_dev_spec_brightnessFactor_title": "Helligkeitsfaktor",
|
||||
"edt_dev_spec_brightnessMax_title": "Helligkeitsmaximum",
|
||||
"edt_dev_spec_brightnessMin_title": "Helligkeitsminimum",
|
||||
"edt_dev_spec_brightnessMax_title": "Helligkeit maximal",
|
||||
"edt_dev_spec_brightnessMin_title": "Helligkeit minimal",
|
||||
"edt_dev_spec_brightnessOverwrite_title": "Helligkeit überschreiben",
|
||||
"edt_dev_spec_brightnessThreshold_title": "Signal Erkennung Helligkeitsminimum",
|
||||
"edt_dev_spec_brightness_title": "Helligkeit",
|
||||
"edt_dev_spec_candyGamma_title": "\"Candy\" Modus (doppelte Gammakorrektur)",
|
||||
"edt_dev_spec_chanperfixture_title": "Kanäle pro Gerät",
|
||||
"edt_dev_spec_cid_title": "CID",
|
||||
"edt_dev_spec_clientKey_title": "Clientkey",
|
||||
"edt_dev_spec_colorComponent_title": "Farbkomponente",
|
||||
"edt_dev_spec_debugLevel_title": "Debug Stufe",
|
||||
"edt_dev_spec_debugStreamer_title": "Streamer Debugging",
|
||||
"edt_dev_spec_delayAfterConnect_title": "Verzögerung nach Verbindung",
|
||||
"edt_dev_spec_devices_discovered_none": "Keine Geräte gefunden",
|
||||
"edt_dev_spec_devices_discovered_title": "Gefundene LED-Geräte",
|
||||
|
@ -556,6 +632,8 @@
|
|||
"edt_dev_spec_networkDeviceName_title": "Gerätename im Netzwerk",
|
||||
"edt_dev_spec_networkDevicePort_title": "Port",
|
||||
"edt_dev_spec_numberOfLeds_title": "Anzahl der LEDs",
|
||||
"edt_dev_spec_onBlackTimeToPowerOff": "Zeit bis zum Ausschalten, wenn das Helligkeitsminimum unterschritten wurde",
|
||||
"edt_dev_spec_onBlackTimeToPowerOn": "Zeit bis zum Einschalten, wenn ein Signal wieder anliegt",
|
||||
"edt_dev_spec_orbIds_title": "Orb-ID(s)",
|
||||
"edt_dev_spec_order_left_right_title": "2.",
|
||||
"edt_dev_spec_order_top_down_title": "1.",
|
||||
|
@ -563,19 +641,34 @@
|
|||
"edt_dev_spec_panel_start_position": "Startpanel [0-max Panels]",
|
||||
"edt_dev_spec_panelorganisation_title": "Nummerierungsreihenfolge der Panels",
|
||||
"edt_dev_spec_pid_title": "PID",
|
||||
"edt_dev_spec_port_expl": "Port [1-65535] des Dienstes",
|
||||
"edt_dev_spec_port_title": "Port",
|
||||
"edt_dev_spec_printTimeStamp_title": "Mit Zeitstempel",
|
||||
"edt_dev_spec_pwmChannel_title": "PWM Kanal",
|
||||
"edt_dev_spec_razer_device_title": "Razer Chroma Gerätetyp",
|
||||
"edt_dev_spec_restoreOriginalState_title": "Originalzustand wiederherstellen",
|
||||
"edt_dev_spec_restoreOriginalState_title_info": "Bei Deaktivierung, Lampen Originalzustand wiederherstellen",
|
||||
"edt_dev_spec_rgbw_calibration_blue": "Blau/Weiß-Kanal Aspekt ",
|
||||
"edt_dev_spec_rgbw_calibration_enable": "Weißkanal-Kalibrierung (nur RGBW)",
|
||||
"edt_dev_spec_rgbw_calibration_green": "Grün/Weiß-Kanal Aspekt",
|
||||
"edt_dev_spec_rgbw_calibration_limit": "Grenzwert für Weißkanal",
|
||||
"edt_dev_spec_rgbw_calibration_red": "Rot/Weiß-Kanal Aspekt",
|
||||
"edt_dev_spec_segmentId_title": "Segment-ID",
|
||||
"edt_dev_spec_segmentsOverlapValidation_error": "Korrigiere die WLED-Konfiguration! Das Segment darf sich nicht mit {{Plural:$1|Segment|Segmenten}} überschneiden: \"$2\".",
|
||||
"edt_dev_spec_segmentsSwitchOffOthers_title": "Abschalten anderer Segmente",
|
||||
"edt_dev_spec_segments_disabled_title": "Segment-Streaming ist in WLED deaktiviert.",
|
||||
"edt_dev_spec_segments_title": "Stream zum Segment",
|
||||
"edt_dev_spec_serial_title": "Seriennummer",
|
||||
"edt_dev_spec_spipath_title": "SPI Pfad",
|
||||
"edt_dev_spec_sslHSTimeoutMax_title": "Streamer Handshake maximum Timeout",
|
||||
"edt_dev_spec_sslHSTimeoutMin_title": "Streamer Handshake minimum Timeout",
|
||||
"edt_dev_spec_sslReadTimeout_title": "Streamer lese Timeout",
|
||||
"edt_dev_spec_stayOnAfterStreaming_title": "LED bleiben nach dem Stream an",
|
||||
"edt_dev_spec_stayOnAfterStreaming_title_info": "Die LEDs bleiben nach dem Streaming oder der Wiederherstellung des Status eingeschaltet.",
|
||||
"edt_dev_spec_stream_protocol_title": "Streaming-Protokoll",
|
||||
"edt_dev_spec_switchOffOnBlack_title": "Aus bei schwarz",
|
||||
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Aus bei Minimum",
|
||||
"edt_dev_spec_syncOverwrite_title": "Deaktivierung der Synchronisierung",
|
||||
"edt_dev_spec_targetIpHost_expl": "Hostname (DNS/mDNS) oder IP-Adresse (IPv4 oder IPv6)",
|
||||
"edt_dev_spec_targetIpHost_title": "Rechnername/IP-Adresse",
|
||||
"edt_dev_spec_targetIpHost_title_info": "Der Rechnername oder die IP-Adresse des Gerätes",
|
||||
"edt_dev_spec_targetIp_title": "Ziel IP-Adresse",
|
||||
|
@ -588,7 +681,7 @@
|
|||
"edt_dev_spec_useOrbSmoothing_title": "Nutze Orb Glättung",
|
||||
"edt_dev_spec_useRgbwProtocol_title": "Nutze RGBW Protokoll",
|
||||
"edt_dev_spec_username_title": "Benutzername",
|
||||
"edt_dev_spec_verbose_title": "Zeichne alle HUE-Kommandos auf",
|
||||
"edt_dev_spec_verbose_title": "Protokollierung der HUE-Kommandos",
|
||||
"edt_dev_spec_vid_title": "VID",
|
||||
"edt_dev_spec_whiteLedAlgor_title": "Weiß Algorithmus",
|
||||
"edt_dev_spec_whitepoint_title": "Weißpunkt",
|
||||
|
@ -730,6 +823,10 @@
|
|||
"edt_msg_error_disallow": "Die Eingabe muss vom Typ $1 sein",
|
||||
"edt_msg_error_disallow_union": "Die Eingabe darf nicht einem der gegebenen Werte entsprechen",
|
||||
"edt_msg_error_enum": "Die Eingabe muss einem der aufgeführten Werte entsprechen",
|
||||
"edt_msg_error_hostname": "Ungültiger Hostname",
|
||||
"edt_msg_error_invalid_epoch": "Datum muss größer als der 1. Januar 1970 sein",
|
||||
"edt_msg_error_ipv4": "Keine gültige IPv4-Addresse",
|
||||
"edt_msg_error_ipv6": "Bitte eine gültige IPv6 Adresse angeben",
|
||||
"edt_msg_error_maxItems": "Das Feld darf höchstens $1 Element(e) beinhalten",
|
||||
"edt_msg_error_maxLength": "Die Eingabe darf höchstens $1 Zeichen lang sein",
|
||||
"edt_msg_error_maxProperties": "Das Objekt darf höchstens $1 Attribute habe",
|
||||
|
@ -750,6 +847,8 @@
|
|||
"edt_msg_error_type": "Die Eingabe muss vom Typ $1 sein",
|
||||
"edt_msg_error_type_union": "Die Eingabe muss einem der gegebenen Typen entsprechen",
|
||||
"edt_msg_error_uniqueItems": "Das Feld darf nur einzigartige Elemente beinhalten",
|
||||
"edt_msgcust_error_hostname_ip": "Keine gültige IPv4-, IPv6-Adresse oder ungültiger Hostname",
|
||||
"edt_msgcust_error_hostname_ip4": "Keine gültige IPv4-Adresse oder ungültiger Hostname",
|
||||
"effectsconfigurator_button_conttest": "Fortlaufender Test",
|
||||
"effectsconfigurator_button_deleffect": "Effekt entfernen",
|
||||
"effectsconfigurator_button_editeffect": "Effekt laden",
|
||||
|
@ -788,11 +887,12 @@
|
|||
"general_col_blue": "blau",
|
||||
"general_col_green": "grün",
|
||||
"general_col_red": "rot",
|
||||
"general_comp_AUDIO": "Audioaufnahme",
|
||||
"general_comp_BLACKBORDER": "Schwarze Balken Erkennung",
|
||||
"general_comp_BOBLIGHTSERVER": "Boblight Server",
|
||||
"general_comp_FLATBUFSERVER": "Flatbuffers Server",
|
||||
"general_comp_FORWARDER": "Weiterleitung",
|
||||
"general_comp_GRABBER": "Bildschirm Aufnahme",
|
||||
"general_comp_GRABBER": "Bildschirmaufnahme",
|
||||
"general_comp_LEDDEVICE": "LED-Hardware",
|
||||
"general_comp_PROTOSERVER": "Protocol Buffers Server",
|
||||
"general_comp_SMOOTHING": "Glättung",
|
||||
|
@ -808,12 +908,17 @@
|
|||
"general_country_us": "Amerika",
|
||||
"general_disabled": "deaktiviert",
|
||||
"general_enabled": "aktiviert",
|
||||
"general_speech_ca": "Katalanisch",
|
||||
"general_speech_cs": "Tschechisch",
|
||||
"general_speech_da": "Dänisch",
|
||||
"general_speech_de": "Deutsch",
|
||||
"general_speech_el": "Griechisch",
|
||||
"general_speech_en": "Englisch",
|
||||
"general_speech_es": "Spanisch",
|
||||
"general_speech_fr": "Französisch",
|
||||
"general_speech_hu": "Ungarisch",
|
||||
"general_speech_it": "Italienisch",
|
||||
"general_speech_ja": "Japanisch",
|
||||
"general_speech_nb": "Norwegisch (Bokmål)",
|
||||
"general_speech_nl": "Niederländisch",
|
||||
"general_speech_pl": "Polnisch",
|
||||
|
@ -906,8 +1011,11 @@
|
|||
"remote_losthint": "Notiz: Alle Änderungen gehen nach einem Neustart verloren.",
|
||||
"remote_maptype_intro": "Für gewöhnlich entscheidet dein LED-Layout welcher Bildbereich welche LED zugewiesen bekommt, dies kann hier geändert werden. $1",
|
||||
"remote_maptype_label": "LED-Bereich Zuordnung",
|
||||
"remote_maptype_label_multicolor_mean": "Mehrfarbig",
|
||||
"remote_maptype_label_unicolor_mean": "Einfarbig",
|
||||
"remote_maptype_label_dominant_color": "Dominante Farbe",
|
||||
"remote_maptype_label_dominant_color_advanced": "Dominante Farbe fortgeschritten",
|
||||
"remote_maptype_label_multicolor_mean": "Durchschnittsfarbe einfach",
|
||||
"remote_maptype_label_multicolor_mean_squared": "Durchschnittsfarbe zum Quadrat",
|
||||
"remote_maptype_label_unicolor_mean": "Durchschnittsfarbe Gesamtbild",
|
||||
"remote_optgroup_syseffets": "Mitgelieferte Effekte",
|
||||
"remote_optgroup_templates_custom": "Nutzer Vorlage",
|
||||
"remote_optgroup_templates_system": "System Vorlage",
|
||||
|
@ -962,7 +1070,7 @@
|
|||
"wiz_cc_kodidisconlink": "Download Link Bilder:",
|
||||
"wiz_cc_kodimsg_start": "Test bestanden - Zeit zu beginnen",
|
||||
"wiz_cc_kodishould": "Kodi sollte jetzt folgendes Bild anzeigen: $1",
|
||||
"wiz_cc_kwebs": "Kodi Webserver (IP-Adresse:Port)",
|
||||
"wiz_cc_kwebs": "Kodi Webserver (Hostname oder IP)",
|
||||
"wiz_cc_lettvshow": "Lass dabei deinen Fernseher folgendes Bild anzeigen: $1",
|
||||
"wiz_cc_lettvshowm": "Überprüfe dies mithilfe folgender Bilder: $1",
|
||||
"wiz_cc_link": "Klick mich",
|
||||
|
@ -972,6 +1080,7 @@
|
|||
"wiz_cc_testintrok": "Klicke auf einen Button, um eines der Testvideos abzuspielen.",
|
||||
"wiz_cc_testintrowok": "Unter folgendem Link findest du ein paar Testvideos zum Herunterladen und Abspielen:",
|
||||
"wiz_cc_title": "Farbkalibrierungs Assistent",
|
||||
"wiz_cc_try_connect": "Verbindung wird aufgebaut...",
|
||||
"wiz_cololight_desc2": "Nun kannst du auswählen, welche der Lampen hinzugefügt werden sollen. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.",
|
||||
"wiz_cololight_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Cololight. Zu den Funktionen zählen ein automatisches Finden der Cololights und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.<br />Achtung: Wenn Du ein Cololight Strip benutzt, musst Du ggf. die Anzahl der LEDs und das Layout manuell anpassen.",
|
||||
"wiz_cololight_noprops": "Auf die Geräteeigenschaften kann nicht zugegriffen werden - Konfiguriere die Anzahl der LEDs manuell.",
|
||||
|
@ -980,13 +1089,13 @@
|
|||
"wiz_hue_blinkblue": "Lasse ID $1 blau aufleuchten",
|
||||
"wiz_hue_clientkey": "Clientkey:",
|
||||
"wiz_hue_create_user": "Neuen Benutzer erstellen",
|
||||
"wiz_hue_desc1": "Es wird automatisch nach der Hue Bridge gesucht, sollte sie nicht gefunden werden, gebe die IP-Adresse an und drücke den \"neu laden\" Button. Danach benötigst du eine gültige Benutzer-ID. Diese kann hier auch erstellt werden.",
|
||||
"wiz_hue_desc2": "Nun kannst du auswählen, welche der Lampen (IDs) hinzugefügt werden sollen. Mit der Position wählst du aus, wo die jeweilige Lampe \"im Bild\" sitzen soll. Deaktivierte Lampen werden nicht hinzugefügt. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.",
|
||||
"wiz_hue_desc1": "1. Es wird automatisch nach der Hue Bridge gesucht, sollte sie nicht gefunden werden, gebe die IP-Adresse an und drücke den \"neu laden\" Button.<br> 2. Erfasse eine gültige Benutzer-ID. Diese kann hier auch erstellt werden.",
|
||||
"wiz_hue_desc2": "3. Wähle aus, welche der Lampen (IDs) hinzugefügt werden sollen. Mit der Position wählst du aus, wo die jeweilige Lampe \"im Bild\" sitzen soll. Deaktivierte Lampen werden nicht hinzugefügt. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.",
|
||||
"wiz_hue_e_clientkey_needed": "Für die Verwendung der Entertainment-API, ist ein zum Benutzernamen passender Clientkey erforderlich. Bitte einen vorhandenen eingeben oder über die Schaltflächen unten einen neuen erstellen.",
|
||||
"wiz_hue_e_create_user": "Neuen Benutzer und Clientkey erstellen",
|
||||
"wiz_hue_e_desc1": "Es wird automatisch nach der Hue-Bridge gesucht, sollte sie nicht gefunden werden, gebe die IP an und drücke den \"neu laden\" Button. Danach benötigst du eine gültige Benutzer-ID und den dazugehörigen Clientkey, damit die Entertainment API verwendet werden kann. Beides kann hier automatisch erstellt werden.",
|
||||
"wiz_hue_e_desc2": "Nun kannst du die Entertainment Gruppe auswählen, welche die Lampen zur Verwendung mit Hyperion beinhaltet.",
|
||||
"wiz_hue_e_desc3": "Nun kannst du auswählen, mit welcher Position die jeweilige Lampe \"im Bild\" sitzen soll. Eine Vorauswahl der Position, wurde Anhand der konfigurierten Positionen der Lampen in der Entertainment Gruppe gewählt. Dies ist nur eine Empfehlung und kann beliebig angepasst werden. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen und die Auswahl zu verbessern.",
|
||||
"wiz_hue_e_desc1": "1. Es wird automatisch nach der Hue-Bridge gesucht, sollte sie nicht gefunden werden, gebe die IP an und drücke den \"neu laden\" Button.<br> 2. Erfasse eine gültige Benutzer-ID und den dazugehörigen Clientkey, damit die Entertainment API verwendet werden kann. Beides kann hier automatisch erstellt werden.",
|
||||
"wiz_hue_e_desc2": "3. Wähle die Entertainment Gruppe aus, welche die Lampen zur Verwendung mit Hyperion beinhaltet.",
|
||||
"wiz_hue_e_desc3": "4. Wähle aus, an welcher Position die jeweilige Lampe \"im Bild\" sitzen soll. Eine Vorauswahl der Position, wurde Anhand der konfigurierten Positionen der Lampen in der Entertainment Gruppe gewählt. Dies ist nur eine Empfehlung und kann beliebig angepasst werden. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen und die Auswahl zu verbessern.",
|
||||
"wiz_hue_e_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Philips Hue Entertainment. Zu den Funktionen zählen ein automatisches finden der Hue-Bridge, einen neuen Benutzer und dazugehörigen Clientkey zum Verwenden der Entertainment-API erstellen, eine Entertainment Gruppenauswahl und die zur Gruppe gehörenden Lampen unterschiedlichen Bereichen im Bild zuzuordnen, sowie weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.",
|
||||
"wiz_hue_e_noapisupport": "Der Assistent hat die Entertainment-API Unterstützung deaktiviert und wird mit der klassischen API weitergeführt.",
|
||||
"wiz_hue_e_noapisupport_hint": "Die Einstellung \"<b>Hue Entertainment-API verwenden</b>\" wurde deaktiviert.",
|
||||
|
|
|
@ -0,0 +1,646 @@
|
|||
{
|
||||
"InfoDialog_access_text": "Ανάλογα με το επίπεδο ρυθμίσεων, μπορείτε να προσαρμόσετε περισσότερες επιλογές ή να αποκτήσετε πρόσβαση σε περισσότερες δυνατότητες. Συνιστάται το επίπεδο \"Προεπιλογή\".",
|
||||
"InfoDialog_access_title": "Επίπεδα Ρυθμίσεων",
|
||||
"InfoDialog_changePassword_success": "Ο κωδικός πρόσβασης αποθηκεύτηκε με επιτυχία!",
|
||||
"InfoDialog_changePassword_title": "Αλλαγή κωδικού",
|
||||
"InfoDialog_iswitch_text": "Εάν εκτελείτε το Hyperion περισσότερες από μία φορές στο τοπικό σας δίκτυο, μπορείτε να κάνετε εναλλαγή μεταξύ των διαμορφώσεων ιστού. Επιλέξτε την παρουσία Hyperion παρακάτω και αλλάξτε!",
|
||||
"InfoDialog_nostorage_text": "Το πρόγραμμα περιήγησής σας δεν υποστηρίζει τοπική αποθήκευση. Δεν μπορείτε να αποθηκεύσετε μια συγκεκριμένη ρύθμιση γλώσσας (επιστροφή στην «αυτόματη ανίχνευση») και επίπεδο πρόσβασης (επιστροφή στην «προεπιλογή»). Μερικοί μάγοι μπορεί να είναι κρυφοί. Θα μπορούσατε ακόμα να χρησιμοποιήσετε τη διεπαφή ιστού χωρίς περαιτέρω προβλήματα",
|
||||
"InfoDialog_nowrite_foottext": "Το WebUI θα ξεκλειδωθεί αυτόματα μόλις λύσετε το πρόβλημα!",
|
||||
"InfoDialog_nowrite_text": "Το Hyperion δεν μπορεί να γράψει στο τρέχον φορτωμένο αρχείο διαμόρφωσης. Επιδιορθώστε τα δικαιώματα του αρχείου για να συνεχίσετε.",
|
||||
"InfoDialog_nowrite_title": "Σφάλμα άδειας εγγραφής!",
|
||||
"about_3rd_party_licenses": "Άδεια τρίτου μέρους",
|
||||
"about_credits": "Πιστώσεις σε όλους αυτούς τους προγραμματιστές!",
|
||||
"about_resources": "$1 βιβλιοθήκες",
|
||||
"about_translations": "Μεταφράσεις",
|
||||
"about_version": "Έκδοση",
|
||||
"conf_colors_blackborder_intro": "Παραλείψτε τις μαύρες μπάρες όπου κι αν βρίσκονται. Κάθε λειτουργία χρησιμοποιεί έναν άλλο αλγόριθμο ανίχνευσης που είναι συντονισμένος για ειδικές καταστάσεις. Αυξήστε το όριο αν δεν λειτουργεί για εσάς.",
|
||||
"conf_colors_color_intro": "Δημιουργήστε ένα ή περισσότερα προφίλ βαθμονόμησης, προσαρμόστε κάθε χρώμα, φωτεινότητα, γραμμικοποίηση και άλλα.",
|
||||
"conf_effect_fgeff_intro": "Καθορίστε ένα εφέ εκκίνησης ή ένα χρώμα, το οποίο εμφανίζεται κατά την εκκίνηση του Hyperion για την καθορισμένη διάρκεια.",
|
||||
"conf_effect_path_intro": "Φόρτωση εφέ από τις καθορισμένες διαδρομές. Επιπλέον, μπορείτε να απενεργοποιήσετε μεμονωμένα εφέ ονομαστικά για να τα αποκρύψετε από όλες τις λίστες εφέ.",
|
||||
"conf_general_impexp_expbtn": "Εξαγωγή",
|
||||
"conf_general_impexp_impbtn": "Εισαγωγή",
|
||||
"conf_general_impexp_l1": "Εισαγάγετε μια διαμόρφωση επιλέγοντας ένα αρχείο διαμόρφωσης παρακάτω και κάντε κλικ στο \"Εισαγωγή\".",
|
||||
"conf_general_impexp_l2": "Εξάγετε μια διαμόρφωση κάνοντας κλικ στο \"Εξαγωγή\". Το πρόγραμμα περιήγησής σας ξεκινά μια λήψη.",
|
||||
"conf_general_impexp_title": "Εισαγωγή/Εξαγωγή διαρύθμισης",
|
||||
"conf_general_inst_actionhead": "Ενέργεια",
|
||||
"conf_general_inst_desc": "Χρησιμοποιήστε διαφορετικό υλικό LED ταυτόχρονα. Κάθε στιγμιότυπο εκτελείται ανεξάρτητα το ένα από το άλλο, γεγονός που επιτρέπει διαφορετικές διατάξεις LED και ρυθμίσεις βαθμονόμησης. Οι εμφανίσεις που εκτελούνται είναι διαθέσιμες στην επάνω γραμμή εικονιδίων",
|
||||
"conf_general_intro": "Βασικές ρυθμίσεις γύρω από το Hyperion και το WebUI που δεν ταιριάζουν σε άλλη κατηγορία.",
|
||||
"conf_general_label_title": "Γενικές ρυθμίσεις",
|
||||
"conf_grabber_fg_intro": "Η καταγραφή οθόνης είναι η λήψη του τοπικού σας συστήματος ως πηγή εισόδου, στο οποίο είναι εγκατεστημένο το Hyperion.",
|
||||
"conf_grabber_v4l_intro": "Η λήψη USB είναι μια συσκευή (λήψης) που συνδέεται μέσω USB και χρησιμοποιείται για την εισαγωγή εικόνων πηγής για επεξεργασία.",
|
||||
"conf_helptable_expl": "Εξήγηση",
|
||||
"conf_helptable_option": "Επιλογή",
|
||||
"conf_leds_contr_label_contrtype": "Είδος χειριστή:",
|
||||
"conf_leds_device_intro": "Το Hyperion υποστηρίζει πολλούς ελεγκτές για τη μετάδοση δεδομένων στη συσκευή-στόχο σας. Επιλέξτε έναν ελεγκτή LED από την ταξινομημένη λίστα και διαμορφώστε τον. Έχουμε επιλέξει τις καλύτερες προεπιλεγμένες ρυθμίσεις για κάθε συσκευή.",
|
||||
"conf_leds_error_get_properties_text": "Αποτυχία λήψης των ιδιοτήτων της συσκευής. Ελέγξτε τα στοιχεία διαμόρφωσης.",
|
||||
"conf_leds_error_get_properties_title": "Ιδιότητες συσκευής",
|
||||
"conf_leds_layout_advanced": "Προχωρημένες Ρυθμίσεις",
|
||||
"conf_leds_layout_blacklist_num_title": "Αριθμός LED",
|
||||
"conf_leds_layout_blacklist_start_title": "Εκκίνηση LED",
|
||||
"conf_leds_layout_btn_checklist": "Δείξε λίστα ελέγχου",
|
||||
"conf_leds_layout_button_savelay": "Αποθήκευση Διάταξης",
|
||||
"conf_leds_layout_button_updsim": "Ενημέρωση Προεπισκόπησης",
|
||||
"conf_leds_layout_checkp1": "Το μαύρο LED είναι το πρώτο LED, το πρώτο LED είναι το σημείο όπου εισέρχεται το σήμα",
|
||||
"conf_leds_layout_checkp2": "Η διάταξη είναι πάντα η μπροστινή όψη της τηλεόρασής σας, ποτέ η πίσω όψη.",
|
||||
"conf_leds_layout_checkp3": "Βεβαιωθείτε ότι η κατεύθυνση είναι σωστή. Τα γκρι LED υποδεικνύουν τον αριθμό LED 2 και 3 για οπτικοποίηση της κατεύθυνσης των δεδομένων.",
|
||||
"conf_leds_layout_checkp4": "Κενό θήκης: Για να δημιουργήσετε ένα κενό, αγνοήστε το πρώτα όταν ορίζετε Πάνω/Κάτω/Αριστερά/Δεξιά και στη συνέχεια ορίστε το μήκος του διακένου σας για να αφαιρέσετε μια ποσότητα led. Τροποποιήστε τη θέση του κενού μέχρι να ταιριάζει.",
|
||||
"conf_leds_layout_cl_bottom": "Κάτω",
|
||||
"conf_leds_layout_cl_bottomleft": "Κάτω αριστερά (Γωνία)",
|
||||
"conf_leds_layout_cl_bottomright": "Κάτω Δεξιά (Γωνία)",
|
||||
"conf_leds_layout_cl_gaglength": "Μήκος κενού",
|
||||
"conf_leds_layout_cl_gappos": "θέση κενού",
|
||||
"conf_leds_layout_cl_hleddepth": "Οριζόντιο βάθος LED",
|
||||
"conf_leds_layout_cl_inppos": "Θέση Εισαγωγής",
|
||||
"conf_leds_layout_cl_left": "Αριστερά",
|
||||
"conf_leds_layout_cl_leftbottom": "Αριστερά 50% - 100% Κάτω",
|
||||
"conf_leds_layout_cl_leftmiddle": "Αριστερά 25% - 75% Μέση",
|
||||
"conf_leds_layout_cl_lefttop": "Αριστερά 0% - 50% Πάνω",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft11": "Κάτω: 75 - 100% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft112": "Κάτω: 0 - 50% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft12": "Κάτω: 25 - 50% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft121": "Κάτω: 50 - 100% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft14": "Κάτω: 0 - 25% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft34": "Κάτω: 50 - 75% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosBottomLeftNewMid": "Κάτω: 25 - 75% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosTopLeft112": "Πάνω: 0 - 50% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosTopLeft121": "Πάνω: 50 - 100% από Αριστερά",
|
||||
"conf_leds_layout_cl_lightPosTopLeftNewMid": "Πάνω: 25 - 75% από Αριστερά",
|
||||
"conf_leds_layout_cl_overlap": "Αλληλοεπικάλυψη",
|
||||
"conf_leds_layout_cl_reversdir": "Αντίστροφη κατεύθυνση",
|
||||
"conf_leds_layout_cl_right": "Δεξιά",
|
||||
"conf_leds_layout_cl_rightbottom": "Δεξιά 50% - 100% Κάτω",
|
||||
"conf_leds_layout_cl_rightmiddle": "Δεξιά 25% - 75% Μέση",
|
||||
"conf_leds_layout_cl_righttop": "Δεξιά 0% - 50% Πάνω",
|
||||
"conf_leds_layout_cl_top": "Πάνω",
|
||||
"conf_leds_layout_cl_topleft": "Πάνω αριστερά (Γωνία)",
|
||||
"conf_leds_layout_cl_topright": "Πάνω Δεξιά (Γωνία)",
|
||||
"conf_leds_layout_cl_vleddepth": "Κάθετο βάθος LED",
|
||||
"conf_leds_layout_frame": "Κλασική διάταξη (Κορνίζα LED)",
|
||||
"conf_leds_layout_generatedconf": "Δημιουργία/Τρέχουσα διαμόρφωση LED",
|
||||
"conf_leds_layout_intro": "Χρειάζεστε επίσης μια διάταξη LED, η οποία αντικατοπτρίζει τις θέσεις LED σας. Η κλασική διάταξη είναι το συνήθως χρησιμοποιούμενο πλαίσιο τηλεόρασης, αλλά υποστηρίζουμε επίσης τη δημιουργία LED matrix (LED walls). Η προβολή αυτής της διάταξης είναι ΠΑΝΤΑ από το ΜΠΡΟΣΤΑ της τηλεόρασής σας.",
|
||||
"conf_leds_layout_ma_cabling": "Καλωδίωση",
|
||||
"conf_leds_layout_ma_direction": "Διεύθυνση",
|
||||
"conf_leds_layout_ma_horiz": "Οριζόντια",
|
||||
"conf_leds_layout_ma_optbottomleft": "Κάτω Αριστερά",
|
||||
"conf_leds_layout_ma_optbottomright": "Κάτω Δεξιά",
|
||||
"conf_leds_layout_ma_opthoriz": "Οριζόντια",
|
||||
"conf_leds_layout_ma_optparallel": "Παράλληλα",
|
||||
"conf_leds_layout_ma_optsnake": "Φιδάκι",
|
||||
"conf_leds_layout_ma_opttopleft": "Πάνω Αριστερά",
|
||||
"conf_leds_layout_ma_opttopright": "Πάνω Δεξιά",
|
||||
"conf_leds_layout_ma_optvert": "Κάθετα",
|
||||
"conf_leds_layout_ma_order": "Σειρά",
|
||||
"conf_leds_layout_ma_position": "Εισαγωγή",
|
||||
"conf_leds_layout_ma_vert": "Κάθετα",
|
||||
"conf_leds_layout_matrix": "Διάταξη Μήτρας (Τοίχος LED)",
|
||||
"conf_leds_layout_pbl": "Δείξτε κάτω Αριστερά",
|
||||
"conf_leds_layout_pbr": "Δείξτε κάτω Δεξιά",
|
||||
"conf_leds_layout_preview_l1": "Αυτό είναι το πρώτο σας LED (θέση εισόδου)",
|
||||
"conf_leds_layout_preview_l2": "Αυτό οπτικοποιεί την κατεύθυνση των δεδομένων (δεύτερο/τρίτο LED)",
|
||||
"conf_leds_layout_preview_ledpower": "Μέγιστη κατανάλωση ενέργειας: $1 Α",
|
||||
"conf_leds_layout_preview_originCL": "Δημιουργήθηκε από: Κλασική διάταξη (πλαίσιο LED)",
|
||||
"conf_leds_layout_preview_originMA": "Δημιουργήθηκε από: Διάταξη Μήτρας (τείχος LED)",
|
||||
"conf_leds_layout_preview_totalleds": "Πλήθος LED: $1",
|
||||
"conf_leds_layout_ptl": "Δείξτε πάνω Αριστερά",
|
||||
"conf_leds_layout_ptlh": "Οριζόντια",
|
||||
"conf_leds_layout_ptln": "Τριπλό σημείο",
|
||||
"conf_leds_layout_ptlv": "Κάθετα",
|
||||
"conf_leds_layout_ptr": "Δείξτε πάνω Δεξιά",
|
||||
"conf_leds_layout_textf1": "Αυτό το πεδίο κειμένου εμφανίζει από προεπιλογή την τρέχουσα φορτωμένη διάταξη και θα αντικατασταθεί εάν δημιουργήσετε μια νέα με τις παραπάνω επιλογές. Προαιρετικά, μπορείτε να πραγματοποιήσετε περαιτέρω επεξεργασίες.",
|
||||
"conf_leds_nav_label_ledcontroller": "Χειριστής LED",
|
||||
"conf_leds_nav_label_ledlayout": "Διάταξη LED",
|
||||
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
|
||||
"conf_leds_optgroup_RPiPWM": "PRI PWM",
|
||||
"conf_leds_optgroup_RPiSPI": "RPi SPI",
|
||||
"conf_leds_optgroup_network": "Δίκτυο",
|
||||
"conf_leds_optgroup_other": "Άλλο",
|
||||
"conf_leds_optgroup_usb": "USB/Serial",
|
||||
"conf_logging_contpolicy": "Αναφορά Πολιτικής Απορρήτου",
|
||||
"conf_logging_lastreports": "Προηγούμενες αναφορές",
|
||||
"conf_logging_report": "Αναφορά",
|
||||
"conf_logging_uplfailed": "Η μεταφόρτωση απέτυχε! Ελέγξτε τη σύνδεσή σας στο Διαδίκτυο!",
|
||||
"conf_logging_uploading": "Προετοιμασία δεδομένων...",
|
||||
"conf_logging_uplpolicy": "Κάνοντας κλικ σε αυτό το κουμπί αποδέχεστε το",
|
||||
"conf_network_forw_intro": "Προωθήστε όλες τις εισόδους σε μια δεύτερη εγκατάσταση Hyperion που θα μπορούσε να οδηγηθεί με άλλο ελεγκτή LED",
|
||||
"conf_network_tok_cidhead": "Περιγραφή",
|
||||
"conf_network_tok_desc": "Τα διακριτικά παρέχουν σε άλλες εφαρμογές πρόσβαση στο Hyperion API, μια εφαρμογή μπορεί να ζητήσει ένα διακριτικό όπου πρέπει να το αποδεχτείτε ή να τις δημιουργήσετε μόνοι σας παρακάτω. Αυτά τα διακριτικά απαιτούνται απλώς όταν η \"Εξουσιοδότηση API\" είναι ενεργοποιημένη στις ρυθμίσεις δικτύου.",
|
||||
"conf_network_tok_grantMsg": "Μια εφαρμογή ζήτησε ένα διακριτικό για να αποκτήσει πρόσβαση στο Hyperion API. Θέλετε να παραχωρήσετε πρόσβαση; Επαληθεύστε τις παρεχόμενες πληροφορίες!",
|
||||
"conf_network_tok_lastuse": "Τελευταία χρήση",
|
||||
"conf_network_tok_title": "Διαχείρηση Διακριτικών",
|
||||
"conf_webconfig_label_intro": "Ρυθμίσεις Webconfiguration. Επεξεργαστείτε με σύνεση.",
|
||||
"dashboard_alert_message_confedit": "Η διαμόρφωση του Hyperion έχει τροποποιηθεί. Για να το εφαρμόσετε, επανεκκινήστε το Hyperion.",
|
||||
"dashboard_alert_message_confsave_success": "Η διαμόρφωσή σας στο Hyperion αποθηκεύτηκε επιτυχώς. Οι αλλαγές σας είναι πλέον ενεργές.",
|
||||
"dashboard_alert_message_confsave_success_t": "Η διαμόρφωση αποθηκεύτηκε",
|
||||
"dashboard_componentbox_label_comp": "Στοιχείο",
|
||||
"dashboard_componentbox_label_status": "Κατάσταση",
|
||||
"dashboard_componentbox_label_title": "Κατάσταση στοιχείου",
|
||||
"dashboard_infobox_label_currenthyp": "Η έκδοση Hyperion σας:",
|
||||
"dashboard_infobox_label_disableh": "Απενεργοποίηση Περίπτωσης: $1",
|
||||
"dashboard_infobox_label_enableh": "Ενεργοποίηση Περίπτωσης: $1",
|
||||
"dashboard_infobox_label_instance": "Περίπτωση:",
|
||||
"dashboard_infobox_label_latesthyp": "Η τελευταία έκδοση Hyperion:",
|
||||
"dashboard_infobox_label_platform": "Πλατφόρμα",
|
||||
"dashboard_infobox_label_ports": "Θύρες",
|
||||
"dashboard_infobox_label_smartacc": "Έξυπνη πρόσβαση",
|
||||
"dashboard_infobox_label_statush": "Κατάσταση Hyperion:",
|
||||
"dashboard_infobox_label_title": "Πληροφορίες",
|
||||
"dashboard_infobox_message_updatesuccess": "Τρέχεται την τελευταία έκδοση Hyperion.",
|
||||
"dashboard_infobox_message_updatewarning": "Μια νεότερη έκδοση του Hyperion είναι διαθέσιμη! (1$)",
|
||||
"dashboard_label_intro": "Ο πίνακας ελέγχου σας δίνει μια σύντομη περιγραφή για τη κατάσταση του Hyperion",
|
||||
"dashboard_newsbox_label_title": "Hyperion-Blog",
|
||||
"dashboard_newsbox_noconn": "Δεν μπορείτε να συνδεθείτε με το Hyperion Server για να ανακτήσετε τις τελευταίες δημοσιεύσεις, λειτουργεί το διαδύκτιο σας;",
|
||||
"dashboard_newsbox_readmore": "Διαβάστε παραπάνω",
|
||||
"dashboard_newsbox_visitblog": "Επισκεφτείτε Hyperion-Blog ",
|
||||
"edt_append_degree": "°",
|
||||
"edt_append_frames": "καρέ",
|
||||
"edt_append_hz": "Hz",
|
||||
"edt_append_leds": "LED",
|
||||
"edt_append_ms": "ms",
|
||||
"edt_append_ns": "ns",
|
||||
"edt_append_percent": "%",
|
||||
"edt_append_percent_h": "% hori",
|
||||
"edt_append_percent_v": "% vert",
|
||||
"edt_append_pixel": "Πίξελ",
|
||||
"edt_append_s": "s",
|
||||
"edt_append_sdegree": "s/μοίρα",
|
||||
"edt_conf_bb_blurRemoveCnt_title": "Θόλωσε πίξελ",
|
||||
"edt_conf_bb_mode_title": "Τρόπο",
|
||||
"edt_conf_bb_threshold_title": "Κατώφλι",
|
||||
"edt_conf_color_black_expl": "Η βαθμονομημένη τιμή μαύρου.",
|
||||
"edt_conf_color_black_title": "Μαύρο",
|
||||
"edt_conf_color_blue_expl": "Η βαθμονομημένη τιμή μπλε.",
|
||||
"edt_conf_color_blue_title": "Μπλε",
|
||||
"edt_conf_color_channelAdjustment_header_expl": "Δημιουργήστε προφίλ χρωμάτων που θα μπορούσαν να αντιστοιχιστούν σε ένα συγκεκριμένο στοιχείο. Προσαρμόστε χρώμα, γάμμα, φωτεινότητα, αντιστάθμιση και πολλά άλλα.",
|
||||
"edt_conf_color_channelAdjustment_header_itemtitle": "Προφίλ",
|
||||
"edt_conf_color_cyan_expl": "Η βαθμονομημένη τιμή κυανού.",
|
||||
"edt_conf_color_cyan_title": "Κυανό",
|
||||
"edt_conf_color_green_expl": "Η βαθμονομημένη τιμή πράσινου.",
|
||||
"edt_conf_color_green_title": "Πράσινο",
|
||||
"edt_conf_color_heading_title": "Βαθμονόμηση Χρώματος",
|
||||
"edt_conf_color_id_title": "ID",
|
||||
"edt_conf_color_imageToLedMappingType_expl": "Αντικαθιστά την εκχώρηση περιοχής LED της διάταξης LED εάν δεν είναι \"πολύχρωμη\"",
|
||||
"edt_conf_color_leds_expl": "Αντιστοιχίστε αυτήν τη ρύθμιση σε όλα τα LED (*) ή μόνο σε μερικά (0-24).",
|
||||
"edt_conf_color_leds_title": "Δείκτης LED",
|
||||
"edt_conf_color_magenta_expl": "Η βαθμονομημένη τιμή ματζέντας.",
|
||||
"edt_conf_color_magenta_title": "Ματζέντα",
|
||||
"edt_conf_color_red_expl": "Η βαθμονομημένη τιμή κόκκινου.",
|
||||
"edt_conf_color_red_title": "Κόκκινο",
|
||||
"edt_conf_color_saturationGain_expl": "Ρυθμίζει τον κορεσμό των χρωμάτων. 1,0 σημαίνει καμία αλλαγή, πάνω από 1,0 αυξάνει τον κορεσμό, κάτω από 1,0 αποκορεσμένα.",
|
||||
"edt_conf_color_white_expl": "Η βαθμονομημένη τιμή λευκού.",
|
||||
"edt_conf_color_white_title": "Λευκό",
|
||||
"edt_conf_color_yellow_expl": "Η βαθμονομημένη τιμή κίτρινου.",
|
||||
"edt_conf_color_yellow_title": "Κίτρινο",
|
||||
"edt_conf_enum_BOTH": "Οριζόντια & Κάθετα",
|
||||
"edt_conf_enum_HORIZONTAL": "Οριζόντια",
|
||||
"edt_conf_enum_NO_CHANGE": "Αυτόματο",
|
||||
"edt_conf_enum_NTSC": "NTSC",
|
||||
"edt_conf_enum_PAL": "PAL",
|
||||
"edt_conf_enum_SECAM": "SECAM",
|
||||
"edt_conf_enum_VERTICAL": "Κάθετα",
|
||||
"edt_conf_enum_automatic": "Αυτόματο",
|
||||
"edt_conf_enum_bbclassic": "Κλασσικό",
|
||||
"edt_conf_enum_bbletterbox": "Γραμματοκιβώτιο",
|
||||
"edt_conf_enum_bbosd": "OSD",
|
||||
"edt_conf_enum_bgr": "BGR",
|
||||
"edt_conf_enum_brg": "BRG",
|
||||
"edt_conf_enum_color": "Χρώμα",
|
||||
"edt_conf_enum_decay": "Αποσύνθεση",
|
||||
"edt_conf_enum_dl_error": "Σφάλμα",
|
||||
"edt_conf_enum_dl_verbose1": "Επίπεδο πολυγλωσσίας 1",
|
||||
"edt_conf_enum_dl_verbose2": "Επίπεδο πολυγλωσσίας 2",
|
||||
"edt_conf_enum_dl_verbose3": "Επίπεδο πολυγλωσσίας 3",
|
||||
"edt_conf_enum_effect": "Εφέ",
|
||||
"edt_conf_enum_gbr": "GBR",
|
||||
"edt_conf_enum_grb": "GRB",
|
||||
"edt_conf_enum_hsv": "HSV",
|
||||
"edt_conf_enum_linear": "Γραμμικό",
|
||||
"edt_conf_enum_logsilent": "Αθόρυβο",
|
||||
"edt_conf_enum_logwarn": "Προειδοποίση",
|
||||
"edt_conf_enum_multicolor_mean": "Πολύχρωμο",
|
||||
"edt_conf_enum_please_select": "Παρακαλώ Επιλέξτε",
|
||||
"edt_conf_enum_rbg": "RBG",
|
||||
"edt_conf_enum_rgb": "RGB",
|
||||
"edt_conf_enum_transeffect_smooth": "Λείο",
|
||||
"edt_conf_enum_transeffect_sudden": "Απότομο",
|
||||
"edt_conf_enum_udp_ddp": "DDP",
|
||||
"edt_conf_enum_udp_raw": "RAW",
|
||||
"edt_conf_enum_unicolor_mean": "Μονοχρωματικό",
|
||||
"edt_conf_fg_display_title": "Απεικόνηση",
|
||||
"edt_conf_fg_heading_title": "Καταγραφή Οθόνης",
|
||||
"edt_conf_fg_height_expl": "Συρρικνώστε την εικόνα σε αυτό το ύψος, καθώς η ακατέργαστη εικόνα χρειάζεται πολύ χρόνο cpu.",
|
||||
"edt_conf_fg_height_title": "Ύψος",
|
||||
"edt_conf_fg_type_title": "Είδος",
|
||||
"edt_conf_fg_width_expl": "Συρρικνώστε την εικόνα σε αυτό το πλάτος, καθώς η ακατέργαστη εικόνα χρειάζεται πολύ χρόνο cpu.",
|
||||
"edt_conf_fg_width_title": "Πλάτος",
|
||||
"edt_conf_fge_color_expl": "Εάν ο τύπος είναι \"Χρώμα\", ορίστε ένα χρώμα της επιλογής σας εδώ.",
|
||||
"edt_conf_fge_color_title": "Χρώμα",
|
||||
"edt_conf_fge_duration_ms_title": "Διάρκεια.",
|
||||
"edt_conf_fge_effect_expl": "Εάν ο τύπος είναι \"Εφέ\", ορίστε ένα εφέ της επιλογής σας εδώ.",
|
||||
"edt_conf_fge_effect_title": "Εφέ",
|
||||
"edt_conf_fge_type_expl": "Επιλέξτε ανάμεσα σε χρώμα ή εφέ.",
|
||||
"edt_conf_fge_type_title": "Είδος",
|
||||
"edt_conf_fw_remote_service_discovered_none": "Δεν ανακαλύφθηκαν απομακρυσμένες υπηρεσίες",
|
||||
"edt_conf_fw_service_name_expl": "Όνομα του παρόχου υπηρεσιών",
|
||||
"edt_conf_fw_service_name_title": "Όνομα υπηρεσίας",
|
||||
"edt_conf_gen_configVersion_title": "Έκδοση διαμόρφωσης",
|
||||
"edt_conf_gen_heading_title": "Γενικές Ρυθμίσεις",
|
||||
"edt_conf_gen_name_expl": "Ένα όνομα καθορισμένο από το χρήστη που χρησιμοποιείται για τον εντοπισμό του Hyperion. (Χρήσιμο με περισσότερες από μία περιπτώσεις Hyperion)",
|
||||
"edt_conf_gen_name_title": "Όνομα διαμόρφωσης",
|
||||
"edt_conf_gen_showOptHelp_expl": "Εμφάνιση όλων των διαθέσιμων επεξηγήσεων σε κάθε ενότητα. Συνιστάται ανεπιφύλακτα για αρχάριους!",
|
||||
"edt_conf_gen_showOptHelp_title": "Δείξε παραδείγματα",
|
||||
"edt_conf_general_port_expl": "Η θύρα που χρησιμοποιείται.",
|
||||
"edt_conf_general_port_title": "Θύρα",
|
||||
"edt_conf_net_apiAuth_expl": "Επιβολή όλων των εφαρμογών που χρησιμοποιούν το Hyperion API για έλεγχο ταυτότητας έναντι του Hyperion (Εξαίρεση: βλ. \"Τοπικός έλεγχος ταυτότητας API\"). Υψηλότερη ασφάλεια, καθώς ελέγχετε την πρόσβαση και την ανακαλείτε ανά πάσα στιγμή.",
|
||||
"edt_conf_net_apiAuth_title": "Αυθεντικοποίηση ΑΡΙ",
|
||||
"edt_conf_net_heading_title": "Δίκτυο",
|
||||
"edt_conf_net_ip_itemtitle": "ΙΡ",
|
||||
"edt_conf_smooth_decay_expl": "Η ταχύτητα της αποσύνθεσης. Το 1 είναι γραμμικό, οι μεγαλύτερες τιμές έχουν ισχυρότερο αποτέλεσμα.",
|
||||
"edt_conf_smooth_decay_title": "Αποσύνθεση-Δύναμη",
|
||||
"edt_conf_smooth_dithering_title": "Χρωματική αντιπαράθεση",
|
||||
"edt_conf_smooth_heading_title": "Λείανση",
|
||||
"edt_conf_smooth_interpolationRate_expl": "Ταχύτητα υπολογισμού λείων ενδιάμεσων πλαισίων.",
|
||||
"edt_conf_smooth_interpolationRate_title": "Ρυθμός Παρεμβολής",
|
||||
"edt_conf_smooth_outputRate_expl": "Η ταχύτητα εξόδου του χειριστή LED σας.",
|
||||
"edt_conf_smooth_outputRate_title": "Ρυθμός Εξόδου",
|
||||
"edt_conf_smooth_time_ms_title": "Χρόνος",
|
||||
"edt_conf_smooth_type_expl": "Είδος λείανσης.",
|
||||
"edt_conf_smooth_type_title": "Είδος",
|
||||
"edt_conf_smooth_updateFrequency_title": "Ρυθμός ανανέωσης",
|
||||
"edt_conf_v4l2_cecDetection_expl": "Εάν είναι ενεργοποιημένο, η λήψη USB θα απενεργοποιηθεί προσωρινά όταν ληφθεί συμβάν αναμονής CEC από το δίαυλο HDMI.",
|
||||
"edt_conf_v4l2_cecDetection_title": "Ανίχνευση CEC",
|
||||
"edt_conf_v4l2_cropBottom_title": "Περικοπή κάτω",
|
||||
"edt_conf_v4l2_cropHeightValidation_error": "Περικοπή πάνω + Περικοπή κάτω δεν μπορεί να είναι μεγαλύτερη από το πλάτος ($1)",
|
||||
"edt_conf_v4l2_cropLeft_title": "Περικοπή αριστερά",
|
||||
"edt_conf_v4l2_cropRight_title": "Περικοπή δεξιά",
|
||||
"edt_conf_v4l2_cropTop_title": "Περικοπή πάνω",
|
||||
"edt_conf_v4l2_cropWidthValidation_error": "Περικοπή αριστερά + Περικοπή δεξιά δεν μπορεί να είναι μεγαλύτερη από το πλάτος ($1)",
|
||||
"edt_conf_v4l2_device_title": "Συσκευή",
|
||||
"edt_conf_v4l2_flip_expl": "Αυτό σας επιτρέπει να αναστρέψετε την εικόνα οριζόντια, κάθετα ή και τα δύο.",
|
||||
"edt_conf_v4l2_flip_title": "Αναστροφή εικόνας",
|
||||
"edt_conf_v4l2_framerate_title": "Καρέ ανά δευτερόλεπτο",
|
||||
"edt_conf_v4l2_resolution_title": "Ανάλυση Συσκευής",
|
||||
"edt_conf_webc_keyPassPhrase_expl": "Προαιρετικό: Το κλειδί μπορεί να προστατεύεται με κωδικό πρόσβασης",
|
||||
"edt_conf_webc_keyPassPhrase_title": "Κωδικός πρόσβασης",
|
||||
"edt_conf_webc_sslport_title": "Θύρα HTTPS",
|
||||
"edt_dev_enum_sub_min_cool_adjust": "Αφαίρεσε ψυχρό λευκό",
|
||||
"edt_dev_enum_sub_min_warm_adjust": "Αφαίρεσε θερμό λευκό",
|
||||
"edt_dev_enum_subtract_minimum": "Αφαίρεση ελάχιστου",
|
||||
"edt_dev_enum_white_off": "Απενεργοποίηση Λευκού",
|
||||
"edt_dev_general_autostart_title": "Αυτόματη Εκκίνηση",
|
||||
"edt_dev_general_enableAttemptsInterval_title": "Διάστημα Επανάληψης",
|
||||
"edt_dev_general_enableAttempts_title": "Προσπάθεια Σύνδεσης",
|
||||
"edt_dev_general_enableAttempts_title_info": "Αριθμός προσπαθειών σύνδεσης μιας συσκευής προτού μεταβεί σε κατάσταση σφάλματος.",
|
||||
"edt_dev_general_heading_title": "Γενικές Ρυθμίσεις",
|
||||
"edt_dev_general_rewriteTime_title": "Χρόνος Ανανέωσης",
|
||||
"edt_dev_spec_brightnessMax_title": "Μέγιστη Φωτεινότητα",
|
||||
"edt_dev_spec_brightnessMin_title": "Ελάχιστη Φωτεινότητα",
|
||||
"edt_dev_spec_brightness_title": "Φωτεινότητα",
|
||||
"edt_dev_spec_cid_title": "CID",
|
||||
"edt_dev_spec_dmaNumber_title": "Κανάλι DMA",
|
||||
"edt_dev_spec_gamma_title": "Gamma",
|
||||
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Μέγιστο επίπεδο Έντασης",
|
||||
"edt_dev_spec_gpioMap_title": "Χαρτογράφηση GPIO",
|
||||
"edt_dev_spec_gpioNumber_title": "Αριθμός GPIO",
|
||||
"edt_dev_spec_intervall_title": "Διάστημα",
|
||||
"edt_dev_spec_ledIndex_title": "Δείκτης LED",
|
||||
"edt_dev_spec_ledType_title": "Είδος LED",
|
||||
"edt_dev_spec_lightid_itemtitle": "ID",
|
||||
"edt_dev_spec_lights_itemtitle": "Φως",
|
||||
"edt_dev_spec_lights_name": "Όνομα",
|
||||
"edt_dev_spec_lights_title": "Φώτα",
|
||||
"edt_dev_spec_maximumLedCount_title": "Μέγιστος αριθμός LED",
|
||||
"edt_dev_spec_networkDevicePort_title": "Θύρα",
|
||||
"edt_dev_spec_order_left_right_title": "2.",
|
||||
"edt_dev_spec_order_top_down_title": "1.",
|
||||
"edt_dev_spec_pid_title": "PID",
|
||||
"edt_dev_spec_port_title": "Θύρα",
|
||||
"edt_dev_spec_razer_device_title": "Συσκευή RΛΖΞR Chroma",
|
||||
"edt_dev_spec_serial_title": "Σειριακός Αριθμός",
|
||||
"edt_dev_spec_spipath_title": "Συσκευή SPI",
|
||||
"edt_dev_spec_targetIpHost_title": "Hostname/Διεύθυνση ΙΡ",
|
||||
"edt_dev_spec_targetIp_title": "Διεύθυνση ΙΡ",
|
||||
"edt_dev_spec_transistionTime_title": "Χρόνος Μετάβασης",
|
||||
"edt_dev_spec_uid_title": "UID",
|
||||
"edt_dev_spec_useRgbwProtocol_title": "Χρησιμοπίησε πρωτόκολο RGBW",
|
||||
"edt_dev_spec_username_title": "Όνομα Χρήστη",
|
||||
"edt_dev_spec_vid_title": "VID",
|
||||
"edt_eff_blobcount": "Αριθμός σταγώνων",
|
||||
"edt_eff_candle_header": "Κερί",
|
||||
"edt_eff_candle_header_desc": "Λαμπερά κεριά",
|
||||
"edt_eff_centerx": "Κέντρο Χ-άξονα",
|
||||
"edt_eff_centery": "Κέντρο Υ-άξονα",
|
||||
"edt_eff_color": "Χρώμα",
|
||||
"edt_eff_colorHour": "Χρώμα ώρας",
|
||||
"edt_eff_colorMinute": "Χρώμα λεπτού",
|
||||
"edt_eff_colorSecond": "Χρώμα δευτερολέπτου",
|
||||
"edt_eff_colorcount": "Μήκος χρώματος",
|
||||
"edt_eff_colorend": "Τέλους χρώματος",
|
||||
"edt_eff_colorevel": "Επίπεδο χρώματος",
|
||||
"edt_eff_colorone": "Χρώμα ένα",
|
||||
"edt_eff_colorrandom": "Τυχαίο χρώμα",
|
||||
"edt_eff_colorshift": "Μετάβαση Χρώματος",
|
||||
"edt_eff_colorstart": "Αρχή χρώματος",
|
||||
"edt_eff_colortwo": "Χρώμα δύο",
|
||||
"edt_eff_count": "Αριθμός",
|
||||
"edt_eff_countries": "Χώρες",
|
||||
"edt_eff_enableSecondSwirl": "Δεύτερος Στροβιλισμός",
|
||||
"edt_eff_enum_all": "Όλα",
|
||||
"edt_eff_enum_all-together": "Όλα μαζί",
|
||||
"edt_eff_enum_list": "Λίστα LED",
|
||||
"edt_eff_fade_header": "Σβήσιμο",
|
||||
"edt_eff_fade_header_desc": "Σβήσιμο ανάμεσα σε χρώματα",
|
||||
"edt_eff_flag_header": "Σημαίες",
|
||||
"edt_eff_flag_header_desc": "Αφήστε τα LED σας να λάμπουν στα χρώματα της χώρας σας. Μπορείτε να επιλέξετε περισσότερες από μία σημαίες και θα αλλάξουν με βάση το χρονικό διάστημα.",
|
||||
"edt_eff_fps": "Καρέ ανά δευτερόλεπτο",
|
||||
"edt_eff_frequency": "Συχνότητα",
|
||||
"edt_eff_gif_header": "GIF's",
|
||||
"edt_eff_gif_header_desc": "Αυτό το εφέ αναπαράγει αρχεία .gif, παρέχει ένα απλό βίντεο όπως βρόχο ως εφέ.",
|
||||
"edt_eff_height": "Ύψος",
|
||||
"edt_eff_huechange": "Αλλαγή χρώματος",
|
||||
"edt_eff_image_source_url": "URL",
|
||||
"edt_eff_knightrider_header": "Knight Rider",
|
||||
"edt_eff_knightrider_header_desc": "O K.I.T.T επέστρεψε! Ο μπροστινός σαρωτής του γνωστού αυτοκινήτου, αυτή τη φορά όχι μόνο στο κόκκινο.",
|
||||
"edt_eff_ledlist": "Λίστα LED",
|
||||
"edt_eff_ledtest_header": "Δοκιμή LED",
|
||||
"edt_eff_length": "Μήκος",
|
||||
"edt_eff_lightclock_header_desc": "Ένα πραγματικό ρολόι σαν φως! Προσαρμόστε τα χρώματα των ωρών, λεπτών, και δευτερολέπτων. Διατίθεται επίσης προαιρετικός δείκτης ώρας 3/6/9/12. Σε περίπτωση που το ρολόι είναι λάθος, πρέπει να ελέγξετε το ρολόι του συστήματός σας.",
|
||||
"edt_eff_max_len": "Μέγιστο μήκος",
|
||||
"edt_eff_min_len": "Ελάχιστο μήκος",
|
||||
"edt_eff_moodblobs_header_desc": "Χαλαρώστε το βράδυ με αργή κίνηση και σταγόνες που αλλάζουν χρώμα.",
|
||||
"edt_eff_pacman_header": "Πακ-Μαν",
|
||||
"edt_eff_pacman_header_desc": "Μικρό, πεινασμένο και κίτρινο. Ποιος θα επιβιώσει;",
|
||||
"edt_eff_plasma_header": "Πλάσμα",
|
||||
"edt_eff_police_header": "Αστυνομία",
|
||||
"edt_eff_police_header_desc": "Φώτα σαν αστινομικό όχημα σε δράση",
|
||||
"edt_eff_randomCenter": "Τυχαίο Κέντρο",
|
||||
"edt_eff_random_header": "Τυχαίο",
|
||||
"edt_eff_repeat": "Επανάληψη",
|
||||
"edt_eff_reverseRandomTime": "Ανέστρεψε κάθε",
|
||||
"edt_eff_reversedirection": "Ανάστροφη κίνηση",
|
||||
"edt_eff_rotationtime": "Χρόνος περιστροφής",
|
||||
"edt_eff_showseconds": "Δείξε δευτερόλεπτα",
|
||||
"edt_eff_snake_header": "Φιδάκι",
|
||||
"edt_eff_snake_header_desc": "Που υπάρχει κάτι να φάω;",
|
||||
"edt_eff_sparks_header": "Σπίθες",
|
||||
"edt_eff_sparks_header_desc": "Αστερική-σπίθα, επιλέξτε ανάμεσα σε ένα στατικό χρώμα ή ένα τυχαίο. Θα μπορούσατε επίσης να ρυθμίσετε τη φωτεινότητα, τον κορεσμό και την ταχύτητα.",
|
||||
"edt_eff_speed": "Ταχύτητα",
|
||||
"edt_eff_swirl_header": "στροβιλισμός χρωμάτων",
|
||||
"edt_eff_swirl_header_desc": "Ένας στροβιλισμός με προσαρμοσμένα χρώματα. Τα χρώματα απλώνονται ακόμη και στις 360°, θα υπολογίζονται οι μετατοπίσεις μεταξύ των χρωμάτων. Επιπλέον, μπορείτε να προσθέσετε ένα δεύτερο στροβιλισμό από πάνω, να γνωρίζετε ότι χρειάζεστε μερική διαφάνεια! Συμβουλή: Η επανάληψη του ίδιου χρώματος έχει ως αποτέλεσμα μια \"υψηλότερη\" περιοχή χρώματος και μια μειωμένη περιοχή μετατόπισης χρώματος.",
|
||||
"edt_eff_trails_header": "Πεφταστέρι",
|
||||
"edt_eff_trails_header_desc": "Χρωματιστά αστέρια που πέφτουν από τη κορυφή",
|
||||
"edt_eff_waves_header": "Κύματα",
|
||||
"edt_eff_whichleds": "Ποια LEDs",
|
||||
"edt_eff_whitelevel": "Επίπεδο λευκού",
|
||||
"edt_eff_x-mas_header": "Χριστούγεννα",
|
||||
"edt_eff_x-mas_header_desc": "Άγγιγμα Χριστουγέννων",
|
||||
"edt_msg_button_add_row_title": "Προσθήκη $1",
|
||||
"edt_msg_button_collapse": "Σύμπτηξη",
|
||||
"edt_msg_button_delete_all": "Όλα",
|
||||
"edt_msg_button_delete_all_title": "Διαγραφή Όλων",
|
||||
"edt_msg_button_delete_last": "Τουλάχιστον $1",
|
||||
"edt_msg_button_delete_last_title": "Διαγραφή Τελευταίων $1",
|
||||
"edt_msg_button_delete_row_title": "Διαγραφή $1",
|
||||
"edt_msg_button_delete_row_title_short": "Διαγραφή",
|
||||
"edt_msg_button_expand": "Ανέπτυξε",
|
||||
"edt_msg_button_move_down_title": "Μετακίνησε κάτω",
|
||||
"edt_msg_button_move_up_title": "Μετακίνησε πάνω",
|
||||
"edt_msg_error_additionalItems": "Δεν επιτρέπονται επιπλέον στοιχεία σε αυτόν τον πίνακα",
|
||||
"edt_msg_error_additional_properties": "Δεν επιτρέπονται πρόσθετες ιδιότητες, αλλά η ιδιότητα $1 έχει οριστεί",
|
||||
"edt_msg_error_dependency": "Πρέπει να έχει την ιδιότητα $1",
|
||||
"edt_msg_error_disallow": "Η τιμή δεν πρέπει να είναι τύπου $1",
|
||||
"edt_msg_error_disallow_union": "Η τιμή δεν πρέπει να είναι ένας από τους παρεχόμενους μη επιτρεπόμενους τύπους",
|
||||
"edt_msg_error_maxItems": "Η τιμή πρέπει να έχει το πολύ $1 αντικείμενα",
|
||||
"edt_msg_error_maxLength": "Η τιμή πρέπει να έχει το πολύ $1 μήκος χαρακτήρων",
|
||||
"edt_msg_error_maxProperties": "Το αντικείμενο πρέπει να έχει το πολύ $1 ιδιότητες",
|
||||
"edt_msg_error_maximum_excl": "Η τιμή πρέπει να είναι λιγότερο του $1",
|
||||
"edt_msg_error_maximum_incl": "Η τιμή πρέπει να είναι το πολύ $1",
|
||||
"edt_msg_error_minItems": "Η τιμή πρέπει να έχει τουλάχιστον $1 αντικείμενα",
|
||||
"edt_msg_error_minLength": "Η τιμή πρέπει να έχει τουλάχιστον $1 μήκος χαρακτήρων",
|
||||
"edt_msg_error_minProperties": "Το αντικείμενο πρέπει να έχει τουλάχιστον $1 ιδιότητες",
|
||||
"edt_msg_error_minimum_excl": "Η τιμή πρέπει να είναι μεγαλύτερη του $1",
|
||||
"edt_msg_error_minimum_incl": "Η τιμή πρέπει να είναι τουλάχιστον $1",
|
||||
"edt_msg_error_multipleOf": "Η τιμή πρέπει να είναι πολλαπλάσιο του $1",
|
||||
"edt_msg_error_pattern": "Η τιμή πρέπει να μοιάζει με το μοτίβο",
|
||||
"edt_msg_error_required": "Από το αντικείμενο λείπει η απαιτούμενη ιδιότητα '$1'",
|
||||
"edt_msg_error_type": "Η τιμή πρέπει να είναι τύπου $1",
|
||||
"edt_msg_error_uniqueItems": "Ο πίνακας πρέπει να έχει μοναδικά στοιχεία",
|
||||
"effectsconfigurator_button_conttest": "Συνεχές τεστ",
|
||||
"effectsconfigurator_button_deleffect": "Διαγραφή Εφέ",
|
||||
"effectsconfigurator_button_editeffect": "Φόρτωση Εφέ",
|
||||
"effectsconfigurator_button_saveeffect": "Αποθήκευση Εφέ",
|
||||
"effectsconfigurator_button_starttest": "Εκκίνηση τεστ",
|
||||
"effectsconfigurator_button_stoptest": "Τερματισμός τεστ",
|
||||
"effectsconfigurator_label_chooseeff": "Επιλέξτε Πρότυπο",
|
||||
"effectsconfigurator_label_effectname": "Όνομα Εφέ",
|
||||
"effectsconfigurator_label_intro": "Δημιουργήστε από τα βασικά εφέ νέα εφέ που είναι συντονισμένα σύμφωνα με τις προτιμήσεις σας. Ανάλογα με το Εφέ, υπάρχουν διαθέσιμες επιλογές όπως χρώμα, ταχύτητα, κατεύθυνση και άλλα.",
|
||||
"general_access_advanced": "Προχωρημένο",
|
||||
"general_access_default": "Προεπιλεγμένο",
|
||||
"general_access_expert": "Ειδικό",
|
||||
"general_btn_back": "Πίσω",
|
||||
"general_btn_cancel": "Ακύρωση",
|
||||
"general_btn_continue": "Συνέχεια",
|
||||
"general_btn_delete": "Διαγραφή",
|
||||
"general_btn_denyAccess": "Απόρριψη πρόσβασης",
|
||||
"general_btn_grantAccess": "Παραχώρηση πρόσβασης",
|
||||
"general_btn_iswitch": "Διακόπτης",
|
||||
"general_btn_next": "Επόμενο",
|
||||
"general_btn_off": "Απενεργοποίηση",
|
||||
"general_btn_ok": "ΟΚ",
|
||||
"general_btn_on": "Εκκίνηση",
|
||||
"general_btn_overwrite": "Αντικατάσταση",
|
||||
"general_btn_rename": "Μεταονόμασε",
|
||||
"general_btn_restarthyperion": "Επανεκκίνηση Hyperion",
|
||||
"general_btn_save": "Αποθήκευση",
|
||||
"general_btn_saveandreload": "Αποθήκευση και επαναφόρτωση",
|
||||
"general_btn_saverestart": "Αποθήκευση και επανεκκίνηση",
|
||||
"general_btn_start": "Εκκίνηση",
|
||||
"general_btn_stop": "Τερματισμός",
|
||||
"general_btn_yes": "Ναι",
|
||||
"general_button_savesettings": "Αποθήκευση ρυθμίσεων",
|
||||
"general_chars_needed": "χρειάζονται περισσότεροι χαρακτήρες",
|
||||
"general_col_blue": "Μπλε",
|
||||
"general_col_green": "Πράσινο",
|
||||
"general_col_red": "Κόκκινο",
|
||||
"general_comp_BLACKBORDER": "Ανίχνευση μαύρης μπάρας",
|
||||
"general_comp_GRABBER": "Λήψη Οθόνης",
|
||||
"general_comp_LEDDEVICE": "Έξοδος LED",
|
||||
"general_comp_SMOOTHING": "Εξομάλυνση",
|
||||
"general_comp_V4L": "Λήψη εισόδου-USB",
|
||||
"general_country_cn": "Κίνα",
|
||||
"general_country_de": "Γερμανία",
|
||||
"general_country_es": "Ισπανία",
|
||||
"general_country_fr": "Γαλλία",
|
||||
"general_country_it": "Ιταλία",
|
||||
"general_country_nl": "Ολλανδία",
|
||||
"general_country_ru": "Ρωσία",
|
||||
"general_country_uk": "Ηνωμένο Βασίλειο",
|
||||
"general_country_us": "ΗΠΑ",
|
||||
"general_disabled": "Απενεργοποιημένο",
|
||||
"general_enabled": "Ενεργοποιημένο",
|
||||
"general_speech_cs": "Τσέχικα",
|
||||
"general_speech_da": "Δανέζικα",
|
||||
"general_speech_de": "Γερμανικά",
|
||||
"general_speech_en": "Αγγλικά",
|
||||
"general_speech_es": "Ισπανικά",
|
||||
"general_speech_fr": "Γαλλικά",
|
||||
"general_speech_hu": "Ουγγαρικά",
|
||||
"general_speech_it": "Ιταλικά",
|
||||
"general_speech_ja": "Ιαπωνικά",
|
||||
"general_speech_nb": "Νορβηγικά (Bokmål)",
|
||||
"general_speech_nl": "Ολλανδικά",
|
||||
"general_speech_pl": "Πολωνικά",
|
||||
"general_speech_pt": "Πορτογαλικά",
|
||||
"general_speech_ro": "Ρουμάνικα",
|
||||
"general_speech_ru": "Ρωσικά",
|
||||
"general_speech_sv": "Σουηδικά",
|
||||
"general_speech_tr": "Τούρκικα",
|
||||
"general_speech_vi": "Βιετναμέζικα",
|
||||
"general_speech_zh-CN": "Κινέζικα (απλοποιημένα)",
|
||||
"general_webui_title": "Hyperion - Διαμόρφωση Ιστού",
|
||||
"general_wiki_moreto": "Περισσότερες πληροφορίες για \"$1\" στο Wiki μας",
|
||||
"infoDialog_effconf_created_text": "Το εφέ \"$1\" κατασκευάστηκε επιτυχώς!",
|
||||
"infoDialog_effconf_deleted_text": "Το εφέ \"$1\" διαγράφτηκε επιτυχώς!",
|
||||
"infoDialog_general_error_title": "Σφάλμα",
|
||||
"infoDialog_general_success_title": "Επιτυχία",
|
||||
"infoDialog_general_warning_title": "Προειδοπίηση",
|
||||
"infoDialog_import_comperror_text": "Λυπητερό! Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την εισαγωγή. Δοκιμάστε ξανά με άλλο πρόγραμμα περιήγησης.",
|
||||
"infoDialog_import_confirm_text": "Είστε βέβαιοι ότι θα εισαγάγετε το \"$1\"; Δεν είναι δυνατή η επαναφορά αυτής της διαδικασίας!",
|
||||
"infoDialog_import_hyperror_text": "Δεν είναι δυνατή η εισαγωγή του επιλεγμένου αρχείου διαμόρφωσης \"$1\". Δεν είναι συμβατό με Hyperion 2.0 και νεότερη έκδοση!",
|
||||
"infoDialog_import_jsonerror_text": "Το επιλεγμένο αρχείο διαμόρφωσης \"$1\" δεν είναι αρχείο .json ή είναι κατεστραμμένο. Μήνυμα σφάλματος: ($2)",
|
||||
"infoDialog_password_current_text": "Τωρινός κωδικός",
|
||||
"infoDialog_password_new_text": "Νέος κωδικός",
|
||||
"infoDialog_username_text": "Όνομα Χρήστη",
|
||||
"infoDialog_writeconf_error_text": "Η αποθήκευση της διαμόρφωσής σας απέτυχε.",
|
||||
"infoDialog_writeimage_error_text": "Το επιλεγμένο αρχείο \"$1\" δεν είναι αρχείο εικόνας ή είναι κατεστραμμένο! Επιλέξτε άλλο αρχείο εικόνας.",
|
||||
"info_404": "Η σελίδα που ζητήσατε δεν είναι διαθέσιμη!",
|
||||
"info_conlost_label_autorecon": "Θα επανασυνδεθείτε ξανά αφού το Hyperion είναι διαθέσιμο.",
|
||||
"info_conlost_label_autorefresh": "Αυτή η σελίδα θα ανανεωθεί αυτόματα.",
|
||||
"info_conlost_label_reason1": "- Κακή σύνδεση WLAN",
|
||||
"info_conlost_label_reason2": "- Πραγματοποιήσατε αναβάθμιση",
|
||||
"info_conlost_label_reason3": "- Το Hyperion δεν τρέχει",
|
||||
"info_conlost_label_reload": "Η αυτόματη επανασύνδεση διακόπηκε - υπέρβαση του ορίου. Ανανεώστε τη σελίδα ή κάντε κλικ σε εμένα!",
|
||||
"info_conlost_label_title": "Χάθηκε η σύνδεση με την υπηρεσία Hyperion!",
|
||||
"info_restart_contus": "Εάν εξακολουθείτε να μένετε εδώ μετά από 20 δευτερόλεπτα και δεν έχετε ιδέα γιατί ανοίξτε ένα νέο θέμα στο φόρουμ υποστήριξής μας...",
|
||||
"info_restart_contusa": "...με τα τελευταία σου βήματα. Ευχαριστώ!",
|
||||
"info_restart_rightback": "Ο Hyperion θα επιστρέψει αμέσως!",
|
||||
"info_restart_title": "Αυτήν τη στιγμή γίνεται επανεκκίνηση...",
|
||||
"main_ledsim_btn_togglelednumber": "Αριθμός LED",
|
||||
"main_ledsim_btn_toggleleds": "Δείξε LED",
|
||||
"main_ledsim_btn_togglelivevideo": "Ζωντανό βίντεο",
|
||||
"main_ledsim_text": "Ζωντανή απεικόνιση χρωμάτων LED και προαιρετική η τρέχουσα ροή βίντεο της συσκευής λήψης.",
|
||||
"main_ledsim_title": "Οπτικοποίηση LED",
|
||||
"main_menu_about_token": "Σχετικά με το Hyperion",
|
||||
"main_menu_colors_conf_token": "Επεξεργασία εικόνας",
|
||||
"main_menu_dashboard_token": "Πίνακας Ελέγχου",
|
||||
"main_menu_effect_conf_token": "Εφέ",
|
||||
"main_menu_general_conf_token": "Γενικά",
|
||||
"main_menu_input_selection_token": "Επιλογή εισόδου",
|
||||
"main_menu_instcapture_conf_token": "Πηγές",
|
||||
"main_menu_leds_conf_token": "Έξοδος LED",
|
||||
"main_menu_logging_token": "Καταγράψτε",
|
||||
"main_menu_remotecontrol_token": "Ασύρματος χειρισμός",
|
||||
"main_menu_support_token": "Υποστήριξη",
|
||||
"main_menu_system_token": "Σύστημα",
|
||||
"main_menu_update_token": "Αναβάθμιση",
|
||||
"main_menu_webconfig_token": "Διαμόρφωση Ιστού",
|
||||
"remote_adjustment_label": "Ρύθμιση χρώματος",
|
||||
"remote_color_button_reset": "Επαναφορά Χρώματος/Εφέ",
|
||||
"remote_color_intro": "Ορίστε ένα εφέ ή χρώμα. Επίσης παρατίθενται τα εφέ που δημιουργήσατε εσείς (εάν είναι διαθέσιμα). $1",
|
||||
"remote_color_label": "Χρώματα/Εφέ",
|
||||
"remote_color_label_color": "Χρώμα:",
|
||||
"remote_components_intro": "Ενεργοποίηση και απενεργοποίηση στοιχείων του Hyperion κατά τη διάρκεια του χρόνου εκτέλεσης. $1",
|
||||
"remote_effects_label_effects": "Εφέ:",
|
||||
"remote_effects_label_picture": "Εικόνα:",
|
||||
"remote_input_clearall": "Καθαρισμός όλων των Χρωμάτων/Εφέ",
|
||||
"remote_input_duration": "Διάρκεια:",
|
||||
"remote_input_intro": "Το Hyperion χρησιμοποιεί ένα σύστημα προτεραιότητας για να επιλέξει μια πηγή. Ό,τι ορίζετε έχει προτεραιότητα (Εφέ/Χρώμα/Λήψη οθόνης/Λήψη USB και πηγές δικτύου). Από προεπιλογή, το Hyperion επιλέγει πηγές ανάλογα με την προτεραιότητα (ο χαμηλότερος αριθμός αντικατοπτρίζει την τρέχουσα ενεργή πηγή). Τώρα έχετε την ευκαιρία να επιλέξετε μόνοι σας πηγές. $1",
|
||||
"remote_input_ip": "ΙΡ:",
|
||||
"remote_input_label_autoselect": "Αυτόματη Επιλογή",
|
||||
"remote_input_origin": "Προέλευση",
|
||||
"remote_input_owner": "Είδος",
|
||||
"remote_input_priority": "Προτεραιότητα",
|
||||
"remote_input_setsource_btn": "Επιλέξτε Πηγή",
|
||||
"remote_input_sourceactiv_btn": "Πηγή ενεργή",
|
||||
"remote_input_status": "Κατάσταση/Ενέργεια",
|
||||
"remote_losthint": "Σημείωση: Όλες οι αλλαγές θα χαθούν μετά από επανεκκίνηση.",
|
||||
"remote_maptype_intro": "Συνήθως η διάταξη LED καθορίζει ποια LED καλύπτει μια συγκεκριμένη περιοχή εικόνας. Μπορείτε να το αλλάξετε εδώ: $1.",
|
||||
"remote_maptype_label": "Είδος Χαρτογράφισης",
|
||||
"remote_maptype_label_multicolor_mean": "Πολύχρωμο",
|
||||
"remote_maptype_label_unicolor_mean": "Μονοχρωματικό",
|
||||
"remote_optgroup_syseffets": "Ρυθμίσης Συστήματος",
|
||||
"remote_optgroup_templates_custom": "Πρότυπα Χρήστη",
|
||||
"remote_optgroup_templates_system": "Πρότυπα Συστήματος",
|
||||
"remote_optgroup_usreffets": "Εφέ Χρήστη",
|
||||
"remote_videoMode_2D": "2D",
|
||||
"remote_videoMode_3DSBS": "3DSBS",
|
||||
"remote_videoMode_3DTAB": "3DTAB",
|
||||
"remote_videoMode_label": "Λειτουργία βίντεο",
|
||||
"support_label_affinstr1": "Κάντε κλικ στον κατάλληλο σύνδεσμο της χώρας σας",
|
||||
"support_label_affinstr2": "Ό,τι αγοράζετε (δεν έχει σημασία τι) παίρνουμε μια μικρή χρέωση με βάση τον τζίρο σας",
|
||||
"support_label_affinstr3": "Πληρώνετε ΠΑΝΤΑ το ίδιο, δεν υπάρχει καμία απολύτως διαφορά. Δοκίμασέ το!",
|
||||
"support_label_btctext": "Διεύθυνση:",
|
||||
"support_label_donate": "Δωρίστε ή χρησιμοποιήστε τους συνδέσμους συνεργατών μας",
|
||||
"support_label_donationpp": "Δωρεά:",
|
||||
"support_label_fbtext": "Μοιραστείτε τη σελίδα μας στο Hyperion στο Facebook και λάβετε ειδοποίηση όταν κυκλοφορούν νέες ενημερώσεις",
|
||||
"support_label_forumtext": "Προθήκες, συζητήσεις, βοήθεια και πολλά άλλα",
|
||||
"support_label_forumtitle": "Φόρουμ",
|
||||
"support_label_ghtext": "Επισκευτείτε μας στο GitHub",
|
||||
"support_label_igtext": "Επισκεφθείτε μας στο Instagram για να παρακολουθήσετε τις τελευταίες φωτογραφίες του Hyperion!",
|
||||
"support_label_intro": "Το Hyperion είναι ένα δωρεάν, μη-κερδοσκοπικό λογισμικό. Μια μικρή ομάδα εργάζεται πάνω σε αυτό και γι' αυτό χρειαζόμαστε τη σταθερή υποστήριξή σας.",
|
||||
"support_label_spreadtheword": "Διέδωσέ το",
|
||||
"support_label_title": "Υποστήριξη Hyperion",
|
||||
"support_label_twtext": "Μοιραστείτε και ακολουθήστε μας στο Twitter, για να είστε πάντα ενημερωμένοι με την τελευταία ανάρτηση σχετικά με την ανάπτυξη του Hyperion",
|
||||
"support_label_webpagetitle": "Ιστοσελίδα",
|
||||
"support_label_webrestitle": "Πληροφορίες και βοηθιτικό υλικό",
|
||||
"support_label_wikitext": "Το Α έως Ω για σχεδόν οτιδήποτε σχετίζεται με το Hyperion",
|
||||
"support_label_yttext": "Βαρεθήκατε τις φωτογραφίες; Δείτε το κανάλι μας στο YouTube!",
|
||||
"update_button_install": "Εγκατάσταση",
|
||||
"update_error_getting_versions": "Παρουσιάστηκε πρόβλημα με τον προσδιορισμό της πιο πρόσφατης διαθέσιμης έκδοσης.",
|
||||
"update_label_description": "Περιγραφή:",
|
||||
"update_label_intro": "Επισκόπηση όλων των διαθέσιμων εκδόσεων Hyperion. Επιπλέον, θα μπορούσατε να ενημερώσετε ή να υποβαθμίσετε την έκδοση του Hyperion όποτε θέλετε. Ταξινόμηση από το νεότερο στο παλαιότερο",
|
||||
"update_label_type": "Τύπος:",
|
||||
"update_versreminder": "Η έκδοση σας: $1",
|
||||
"wiz_cc_adjustgamma": "Gamma: Αυτό που πρέπει να κάνετε είναι να προσαρμόσετε τα επίπεδα γάμμα κάθε καναλιού μέχρι να έχετε την ίδια αντιληπτή ποσότητα για κάθε κανάλι. Υπόδειξη: Το ουδέτερο είναι 1,0! Για παράδειγμα, εάν το Γκρι σας είναι λίγο κοκκινωπό, σημαίνει ότι πρέπει να αυξήσετε το κόκκινο γάμμα για να μειώσετε την ποσότητα του κόκκινου (όσο περισσότερο γάμμα, τόσο μικρότερη ποσότητα χρώματος).",
|
||||
"wiz_cc_adjustit": "Προσαρμόστε το \"$1\" σας, μέχρι να τα καταφέρετε. Λάβετε υπόψη: Όσο περισσότερο προσαρμόζετε μακριά από την προεπιλεγμένη τιμή, το φάσμα χρωμάτων θα είναι περιορισμένο (Επίσης για όλα τα ενδιάμεσα χρώματα). Ανάλογα με το χρωματικό φάσμα της τηλεόρασης/LED, τα αποτελέσματα θα διαφέρουν.",
|
||||
"wiz_cc_backlight": "Επιπλέον, θα μπορούσατε να ορίσετε έναν οπίσθιο φωτισμό για να ταξινομήσετε τα \"κακά χρώματα\" σε σχεδόν σκοτεινές περιοχές ή εάν δεν σας αρέσει η εναλλαγή μεταξύ χρώματος και απενεργοποίησης κατά την παρακολούθηση. Επιπλέον, θα μπορούσατε να ορίσετε εάν πρέπει να υπάρχει κάποιο χρώμα σε αυτό ή απλώς λευκό. Αυτό είναι απενεργοποιημένο κατά την κατάσταση \"Απενεργοποίηση\" \"Χρώμα\" και \"Εφέ\".",
|
||||
"wiz_cc_btn_stop": "Σταματήστε το βίντεο",
|
||||
"wiz_cc_btn_switchpic": "Αλλαγή εικόνας",
|
||||
"wiz_cc_chooseid": "Ορίστε ένα όνομα για αυτό το προφίλ χρώματος.",
|
||||
"wiz_cc_kodidiscon": "Το Kodi δεν βρέθηκε, προχωρήστε χωρίς υποστήριξη Kodi (ελέγξτε εάν είναι ενεργοποιημένος ο τηλεχειρισμός από άλλα συστήματα).",
|
||||
"wiz_cc_kodimsg_start": "Επιτυχία δοκιμής - ώρα να προχωρήσετε!",
|
||||
"wiz_cc_kodishould": "Το Kodi θα πρέπει να δείχνει την ακόλουθη εικόνα: $1",
|
||||
"wiz_cc_kwebs": "Kodi webserver (Hostname ή IP)\n",
|
||||
"wiz_cc_lettvshow": "Αφήστε την τηλεόρασή σας να εμφανίσει την ακόλουθη εικόνα: $1",
|
||||
"wiz_cc_lettvshowm": "Ελέγξτε αυτό με τις παρακάτω εικόνες: $1",
|
||||
"wiz_cc_link": "Πάτα με!",
|
||||
"wiz_cc_morethanone": "Έχετε περισσότερα από ένα προφίλ, επιλέξτε το προφίλ που θέλετε να βαθμονομήσετε.",
|
||||
"wiz_cc_summary": "Συμπέρασμα των ρυθμίσεών σας. Κατά τη διάρκεια της αναπαραγωγής βίντεο, μπορείτε να αλλάξετε ή να δοκιμάσετε ξανά τις τιμές. Εάν τελειώσετε, κάντε κλικ στην αποθήκευση.",
|
||||
"wiz_cc_testintro": "Ώρα για ένα πραγματικό τεστ",
|
||||
"wiz_cc_testintrok": "Πατήστε ένα κουμπί παρακάτω για να ξεκινήσετε ένα δοκιμαστικό βίντεο.",
|
||||
"wiz_cc_testintrowok": "Δείτε τον παρακάτω σύνδεσμο για να κατεβάσετε δοκιμαστικά βίντεο:",
|
||||
"wiz_cc_try_connect": "Σύνδεση...",
|
||||
"wiz_cololight_desc2": "Τώρα επιλέξτε ποια Cololights θα προστεθούν. Για να αναγνωρίσετε μεμονωμένα φώτα, πατήστε το κουμπί στα δεξιά.",
|
||||
"wiz_cololight_noprops": "Δεν είναι δυνατή η λήψη των ιδιοτήτων της συσκευής - Ορίστε τον αριθμό των LED υλικού με μη αυτόματο τρόπο",
|
||||
"wiz_guideyou": "Το $1 θα σας καθοδηγήσει στις ρυθμίσεις. Απλά πατήστε το κουμπί!",
|
||||
"wiz_hue_create_user": "Δημιουργία νέου Χρήστη",
|
||||
"wiz_hue_desc1": "1. Το Hyperion αναζητά αυτόματα ένα Hue-Bridge, σε περίπτωση που δεν μπορεί να βρει, πρέπει να δώσετε το όνομα κεντρικού υπολογιστή ή τη διεύθυνση IP και να πατήσετε το κουμπί επαναφόρτωσης. <br> 2. Δώστε ένα αναγνωριστικό χρήστη, εάν δεν έχετε, δημιουργήστε ένα νέο.",
|
||||
"wiz_hue_desc2": "3. Τώρα επιλέξτε ποιοι λαμπτήρες πρέπει να προστεθούν. Η θέση αντιστοιχίζει τη λάμπα σε μια συγκεκριμένη θέση στην \"εικόνα\" σας. Δεν θα προστεθούν απενεργοποιημένες λάμπες. Για να αναγνωρίσετε μεμονωμένους λαμπτήρες πατήστε το κουμπί στα δεξιά.",
|
||||
"wiz_hue_e_desc1": "1. Το Hyperion αναζητά αυτόματα ένα Hue-Bridge, σε περίπτωση που δεν μπορεί να βρει, πρέπει να δώσετε το όνομα κεντρικού υπολογιστή ή τη διεύθυνση IP και να πατήσετε το κουμπί επαναφόρτωσης. <br> 2. Δώστε ένα αναγνωριστικό χρήστη και το κλειδί πελάτη, εάν δεν έχετε και τα δύο, δημιουργήστε νέα.",
|
||||
"wiz_hue_e_noapisupport": "Ο Wizard έχει απενεργοποιήσει την υποστήριξη API ψυχαγωγίας και θα συνεχίσει σε κλασική λειτουργία.",
|
||||
"wiz_hue_e_title": "Wizard ψυχαγωγίας Philips Hue",
|
||||
"wiz_hue_ip": "Hostname ή ΙΡ",
|
||||
"wiz_hue_title": "Philips Hue Wizard",
|
||||
"wiz_hue_username": "ID Χρήστη",
|
||||
"wiz_identify": "Αναγνώρισε",
|
||||
"wiz_identify_light": "Αναγνώρισε $1",
|
||||
"wiz_ids_disabled": "Απενεργοποίηση",
|
||||
"wiz_ids_entire": "Πλήρη εικόνα",
|
||||
"wiz_noLights": "Δεν βρέθηκε το $1! Συνδέστε τα φώτα στο δίκτυο ή διαμορφώστε τα με μη αυτόματο τρόπο.",
|
||||
"wiz_pos": "Θέση/Κατάσταση",
|
||||
"wiz_rgb_expl": "Η χρωματική κουκκίδα αλλάζει κάθε x δευτερόλεπτα το χρώμα (κόκκινο, πράσινο), την ίδια στιγμή που τα LED σας αλλάζουν και το χρώμα. Απαντήστε στις ερωτήσεις στο κάτω μέρος για να ελέγξετε/διορθώσετε τη σειρά των byte.",
|
||||
"wiz_rgb_q": "Ποιο χρώμα δείχνουν τα LED σας, όταν η έγχρωμη κουκκίδα παραπάνω δείχνει...",
|
||||
"wiz_rgb_qgend": "...πράσινο;",
|
||||
"wiz_rgb_qrend": "...κόκινο;",
|
||||
"wiz_rgb_switchevery": "Αλάξτε χρώμα κάθε...",
|
||||
"wiz_yeelight_unsupported": "Μη-υποστηριζόμενο"
|
||||
}
|
|
@ -13,6 +13,9 @@
|
|||
"infoDialog_password_current_text": "Current password",
|
||||
"infoDialog_password_minimum_length": "Passwords must be minimum 8 characters.",
|
||||
"infoDialog_password_new_text": "New password",
|
||||
"InfoDialog_systemSuspend_title": "Suspend",
|
||||
"InfoDialog_systemResume_title": "Resume",
|
||||
"InfoDialog_systemRestart_title": "Restart",
|
||||
"infoDialog_username_text": "Username",
|
||||
"about_3rd_party_licenses": "3rd party licenses",
|
||||
"about_3rd_party_licenses_error": "We had trouble collecting 3rd party licenses information from web. <br />Please follow this link to the GitHub Resource.",
|
||||
|
@ -46,8 +49,9 @@
|
|||
"conf_general_intro": "Basic settings around Hyperion and WebUI that don't fit into another category.",
|
||||
"conf_general_label_title": "General settings",
|
||||
"conf_grabber_fg_intro": "Screen capture is your local system capture as input source, Hyperion is installed on.",
|
||||
"conf_grabber_inst_grabber_config_info": "Configure your capturing hardware devices to be used by the instance in advance",
|
||||
"conf_grabber_inst_grabber_config_info": "Configure your capturing hardware devices to be used by the instance in advance",
|
||||
"conf_grabber_v4l_intro": "USB capture is a (capture) device connected via USB which is used to input source pictures for processing.",
|
||||
"conf_grabber_audio_intro": "Audio capture utilizes an audio input device as the source for visualization.",
|
||||
"conf_helptable_expl": "Explanation",
|
||||
"conf_helptable_option": "Option",
|
||||
"conf_leds_config_error": "Error in LED/LED layout configuration",
|
||||
|
@ -55,9 +59,13 @@
|
|||
"conf_leds_contr_label_contrtype": "Controller type:",
|
||||
"conf_leds_device_info_log": "In case your LEDs do not work, check here for errors:",
|
||||
"conf_leds_device_intro": "Hyperion supports a lot of controllers to transmit data to your target device. Select a LED controller out of the sorted list and configure it. We have chosen the best default settings for each device.",
|
||||
"conf_leds_error_get_properties_text": "Failed to get the device's properties. Please check the configuration items.",
|
||||
"conf_leds_error_get_properties_title": "Device properties",
|
||||
"conf_leds_error_hwled_gt_layout": "The hardware LED count ($1) is greater than LEDs configured via layout ($2),<br>$3 {{plural:$3|LED|LEDs}} will stay black if you continue.",
|
||||
"conf_leds_error_hwled_lt_layout": "The hardware LED count ($1) is less than LEDs configured via layout ($2). <br> The number of LEDs configured in the layout must not exceed the available LEDs",
|
||||
"conf_leds_error_hwled_gt_maxled": "The hardware LED count ($1) is greater than the maximum number of LEDs supported by the device ($2). <br> The hardware LED count is set to ($3).",
|
||||
"conf_leds_error_hwled_gt_maxled_protocol": "The hardware LED count ($1) is greater than the maximum number of LEDs supported by the streaming protocol ($2). <br> The streaming protocol will be changed to ($3).",
|
||||
"conf_leds_error_wled_segment_missing": "The currently configured segment ($1) is not configured at your WLED device.<br>You might need to check the WLED configuration!<br>The configuration page represents the current WLED setup.",
|
||||
"conf_leds_info_ws281x": "Hyperion must run with 'root' privileges for this controller type!",
|
||||
"conf_leds_layout_advanced": "Advanced Settings",
|
||||
"conf_leds_layout_blacklist_num_title": "Number of LEDs",
|
||||
|
@ -66,6 +74,7 @@
|
|||
"conf_leds_layout_blacklist_start_title": "Start LED",
|
||||
"conf_leds_layout_blacklistleds_title": "Blacklist LEDs",
|
||||
"conf_leds_layout_btn_checklist": "Show checklist",
|
||||
"conf_leds_layout_btn_keystone": "Keystone correction",
|
||||
"conf_leds_layout_button_savelay": "Save Layout",
|
||||
"conf_leds_layout_button_updsim": "Update Preview",
|
||||
"conf_leds_layout_checkp1": "The black LED is your first LED, the first LED is the point where you input your data signal.",
|
||||
|
@ -77,6 +86,8 @@
|
|||
"conf_leds_layout_cl_bottomright": "Bottom Right (Corner)",
|
||||
"conf_leds_layout_cl_cornergap": "Corner Gap",
|
||||
"conf_leds_layout_cl_edgegap": "Edge Gap",
|
||||
"conf_leds_layout_cl_entertainment": "Entertainment Area",
|
||||
"conf_leds_layout_cl_entertainment_center": "Entertainment Area Center",
|
||||
"conf_leds_layout_cl_gaglength": "Gap length",
|
||||
"conf_leds_layout_cl_gappos": "gap position",
|
||||
"conf_leds_layout_cl_hleddepth": "Horizontal LED depth",
|
||||
|
@ -85,6 +96,16 @@
|
|||
"conf_leds_layout_cl_leftbottom": "Left 50% - 100% Bottom",
|
||||
"conf_leds_layout_cl_leftmiddle": "Left 25% - 75% Middle",
|
||||
"conf_leds_layout_cl_lefttop": "Left 0% - 50% Top",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft14": "Bottom: 0 - 25% from Left",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft12": "Bottom: 25 - 50% from Left",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft34": "Bottom: 50 - 75% from Left",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft11": "Bottom: 75 - 100% from Left",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft112": "Bottom: 0 - 50% from Left",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft121": "Bottom: 50 - 100% from Left",
|
||||
"conf_leds_layout_cl_lightPosBottomLeftNewMid": "Bottom: 25 - 75% from Left",
|
||||
"conf_leds_layout_cl_lightPosTopLeft112": "Top: 0 - 50% from Left",
|
||||
"conf_leds_layout_cl_lightPosTopLeft121": "Top: 50 - 100% from Left",
|
||||
"conf_leds_layout_cl_lightPosTopLeftNewMid": "Top: 25 - 75% from Left",
|
||||
"conf_leds_layout_cl_overlap": "Overlap",
|
||||
"conf_leds_layout_cl_reversdir": "Reverse direction",
|
||||
"conf_leds_layout_cl_right": "Right",
|
||||
|
@ -99,6 +120,7 @@
|
|||
"conf_leds_layout_generatedconf": "Generated/Current LED Configuration",
|
||||
"conf_leds_layout_intro": "You also need an LED layout, which reflects your LED positions. The classic layout is the usually used TV frame, but we also support LED matrix (LED walls) creation. The view on this layout is ALWAYS from the FRONT of your TV.",
|
||||
"conf_leds_layout_ma_cabling": "Cabling",
|
||||
"conf_leds_layout_ma_direction": "Direction",
|
||||
"conf_leds_layout_ma_horiz": "Horizontal",
|
||||
"conf_leds_layout_ma_optbottomleft": "Bottom left",
|
||||
"conf_leds_layout_ma_optbottomright": "Bottom right",
|
||||
|
@ -185,6 +207,7 @@
|
|||
"dashboard_infobox_label_instance": "Instance:",
|
||||
"dashboard_infobox_label_latesthyp": "Latest Hyperion version:",
|
||||
"dashboard_infobox_label_platform": "Platform:",
|
||||
"dashboard_infobox_label_port_boblight": "Boblight Server:",
|
||||
"dashboard_infobox_label_port_flat": "Flatbuffer:",
|
||||
"dashboard_infobox_label_port_json": "JSON-Server:",
|
||||
"dashboard_infobox_label_port_proto": "Protobuffer:",
|
||||
|
@ -207,6 +230,7 @@
|
|||
"dashboard_newsbox_readmore": "Read more",
|
||||
"dashboard_newsbox_visitblog": "Visit Hyperion-Blog",
|
||||
"edt_append_degree": "°",
|
||||
"edt_append_frames": "frames",
|
||||
"edt_append_hz": "Hz",
|
||||
"edt_append_leds": "LEDs",
|
||||
"edt_append_ms": "ms",
|
||||
|
@ -232,6 +256,8 @@
|
|||
"edt_conf_bb_unknownFrameCnt_title": "Unknown frames",
|
||||
"edt_conf_bge_heading_title": "Background Effect/Color",
|
||||
"edt_conf_bobls_heading_title": "Boblight Server",
|
||||
"edt_conf_color_accuracyLevel_expl": "Level how accurate dominat colors are evaluated. A higher level creates more accurate results, but also requries more processing power. Should to be combined with reduced pixel processing.",
|
||||
"edt_conf_color_accuracyLevel_title": "Accuracy level",
|
||||
"edt_conf_color_backlightColored_expl": "Add some color to your backlight.",
|
||||
"edt_conf_color_backlightColored_title": "Colored backlight",
|
||||
"edt_conf_color_backlightThreshold_expl": "The minimum amount of brightness (backlight). Disabled during effects, colors and in status \"Off\"",
|
||||
|
@ -260,7 +286,7 @@
|
|||
"edt_conf_color_heading_title": "Color Calibration",
|
||||
"edt_conf_color_id_expl": "User given name",
|
||||
"edt_conf_color_id_title": "ID",
|
||||
"edt_conf_color_imageToLedMappingType_expl": "Overwrites the LED area assignment of your LED layout if it's not \"multicolor\"",
|
||||
"edt_conf_color_imageToLedMappingType_expl": "Overwrites the LED area assignment of your LED layout if it's not \"Mean Color Simple\"",
|
||||
"edt_conf_color_imageToLedMappingType_title": "LED area assignment",
|
||||
"edt_conf_color_leds_expl": "Assign this adjustment to all LEDs (*) or just some (0-24).",
|
||||
"edt_conf_color_leds_title": "LED index",
|
||||
|
@ -268,6 +294,12 @@
|
|||
"edt_conf_color_magenta_title": "Magenta",
|
||||
"edt_conf_color_red_expl": "The calibrated red value.",
|
||||
"edt_conf_color_red_title": "Red",
|
||||
"edt_conf_color_saturationGain_expl": "Adjusts the saturation of colors. 1.0 means no change, over 1.0 increases saturation, under 1.0 desaturates.",
|
||||
"edt_conf_color_saturationGain_title": "Saturation gain",
|
||||
"edt_conf_color_brightnessGain_expl": "Adjusts the brightness of colors. 1.0 means no change, over 1.0 increases brightness, under 1.0 decreases brightness.",
|
||||
"edt_conf_color_brightnessGain_title": "Brightness gain",
|
||||
"edt_conf_color_reducedPixelSetFactorFactor_expl": "Evaluate only a set of pixels per LED area defined, Low ~25%, Medium ~10%, High ~6%",
|
||||
"edt_conf_color_reducedPixelSetFactorFactor_title": "Reduced pixel processing",
|
||||
"edt_conf_color_white_expl": "The calibrated white value.",
|
||||
"edt_conf_color_white_title": "White",
|
||||
"edt_conf_color_yellow_expl": "The calibrated yellow value.",
|
||||
|
@ -297,6 +329,8 @@
|
|||
"edt_conf_enum_color": "Color",
|
||||
"edt_conf_enum_custom": "Custom",
|
||||
"edt_conf_enum_decay": "Decay",
|
||||
"edt_conf_enum_delay": "Delay only",
|
||||
"edt_conf_enum_disabled": "Disabled",
|
||||
"edt_conf_enum_dl_error": "Error",
|
||||
"edt_conf_enum_dl_informational": "Informational",
|
||||
"edt_conf_enum_dl_nodebug": "No Debug output",
|
||||
|
@ -305,9 +339,12 @@
|
|||
"edt_conf_enum_dl_verbose1": "Verbosity level 1",
|
||||
"edt_conf_enum_dl_verbose2": "Verbosity level 2",
|
||||
"edt_conf_enum_dl_verbose3": "Verbosity level 3",
|
||||
"edt_conf_enum_dominant_color": "Dominant Color - per LED",
|
||||
"edt_conf_enum_dominant_color_advanced": "Dominant Color Advanced - per LED",
|
||||
"edt_conf_enum_effect": "Effect",
|
||||
"edt_conf_enum_gbr": "GBR",
|
||||
"edt_conf_enum_grb": "GRB",
|
||||
"edt_conf_enum_high": "High",
|
||||
"edt_conf_enum_hsv": "HSV",
|
||||
"edt_conf_enum_left_right": "Left to right",
|
||||
"edt_conf_enum_linear": "Linear",
|
||||
|
@ -315,7 +352,10 @@
|
|||
"edt_conf_enum_logsilent": "Silent",
|
||||
"edt_conf_enum_logverbose": "Verbose",
|
||||
"edt_conf_enum_logwarn": "Warning",
|
||||
"edt_conf_enum_multicolor_mean": "Multicolor",
|
||||
"edt_conf_enum_low": "Low",
|
||||
"edt_conf_enum_medium": "Medium",
|
||||
"edt_conf_enum_multicolor_mean": "Mean Color Simple - per LED",
|
||||
"edt_conf_enum_multicolor_mean_squared": "Mean Color Squared - per LED",
|
||||
"edt_conf_enum_please_select": "Please Select",
|
||||
"edt_conf_enum_rbg": "RBG",
|
||||
"edt_conf_enum_rgb": "RGB",
|
||||
|
@ -323,7 +363,9 @@
|
|||
"edt_conf_enum_top_down": "Top down",
|
||||
"edt_conf_enum_transeffect_smooth": "Smooth",
|
||||
"edt_conf_enum_transeffect_sudden": "Sudden",
|
||||
"edt_conf_enum_unicolor_mean": "Unicolor",
|
||||
"edt_conf_enum_udp_ddp": "DDP",
|
||||
"edt_conf_enum_udp_raw": "RAW",
|
||||
"edt_conf_enum_unicolor_mean": "Mean Color Image - applied to all LEDs",
|
||||
"edt_conf_fbs_heading_title": "Flatbuffers Server",
|
||||
"edt_conf_fbs_timeout_expl": "If no data is received for the given period, the component will be (soft) disabled.",
|
||||
"edt_conf_fbs_timeout_title": "Timeout",
|
||||
|
@ -349,13 +391,20 @@
|
|||
"edt_conf_fge_heading_title": "Boot Effect/Color",
|
||||
"edt_conf_fge_type_expl": "Choose between a color or effect.",
|
||||
"edt_conf_fge_type_title": "Type",
|
||||
"edt_conf_fw_flat_expl": "One flatbuffer target per line. Contains IP:PORT (Example: 127.0.0.1:19401)",
|
||||
"edt_conf_fw_flat_expl": "One flatbuffer target per configuration item",
|
||||
"edt_conf_fw_flat_itemtitle": "flatbuffer target",
|
||||
"edt_conf_fw_flat_services_discovered_expl": "Hyperion servers discovered providing flatbuffer services",
|
||||
"edt_conf_fw_flat_services_discovered_title": "Flatbuffer targets discoverded",
|
||||
"edt_conf_fw_flat_title": "List of flatbuffer targets",
|
||||
"edt_conf_fw_heading_title": "Forwarder",
|
||||
"edt_conf_fw_json_expl": "One json target per line. Contains IP:PORT (Example: 127.0.0.1:19446)",
|
||||
"edt_conf_fw_json_itemtitle": "Json target",
|
||||
"edt_conf_fw_json_title": "List of json targets",
|
||||
"edt_conf_fw_json_expl": "One JSON target per configuration item",
|
||||
"edt_conf_fw_json_itemtitle": "JSON target",
|
||||
"edt_conf_fw_json_services_discovered_expl": "Hyperion servers discovered providing JSON-API services",
|
||||
"edt_conf_fw_json_services_discovered_title": "JSON targets discoverded",
|
||||
"edt_conf_fw_json_title": "List of JSON targets",
|
||||
"edt_conf_fw_remote_service_discovered_none": "No remote services discovered",
|
||||
"edt_conf_fw_service_name_expl": "Name of the service provider",
|
||||
"edt_conf_fw_service_name_title": "Service name",
|
||||
"edt_conf_gen_configVersion_title": "Configuration version",
|
||||
"edt_conf_gen_heading_title": "General Settings",
|
||||
"edt_conf_gen_name_expl": "A user defined name which is used to detect Hyperion. (Helpful with more than one Hyperion instance)",
|
||||
|
@ -381,6 +430,8 @@
|
|||
"edt_conf_instC_systemEnable_title": "Enable screen capture",
|
||||
"edt_conf_instC_v4lEnable_expl": "Enables the USB capture for this LED hardware instance",
|
||||
"edt_conf_instC_v4lEnable_title": "Enable USB capture",
|
||||
"edt_conf_instC_audioEnable_expl": "Enables the Audio capture for this LED hardware instance",
|
||||
"edt_conf_instC_audioEnable_title": "Enable Audio capture",
|
||||
"edt_conf_instC_video_grabber_device_expl": "The video capture device used",
|
||||
"edt_conf_instC_video_grabber_device_title": "Video capture device",
|
||||
"edt_conf_instCapture_heading_title": "Capture Devices",
|
||||
|
@ -414,14 +465,12 @@
|
|||
"edt_conf_smooth_heading_title": "Smoothing",
|
||||
"edt_conf_smooth_interpolationRate_expl": "Speed of the calculation of smooth intermediate frames.",
|
||||
"edt_conf_smooth_interpolationRate_title": "Interpolation Rate",
|
||||
"edt_conf_smooth_outputRate_expl": "The output speed to your LED controller.",
|
||||
"edt_conf_smooth_outputRate_title": "Output Rate",
|
||||
"edt_conf_smooth_time_ms_expl": "How long should the smoothing gather pictures?",
|
||||
"edt_conf_smooth_time_ms_title": "Time",
|
||||
"edt_conf_smooth_type_expl": "Type of smoothing.",
|
||||
"edt_conf_smooth_type_title": "Type",
|
||||
"edt_conf_smooth_updateDelay_expl": "Delay the output in case your ambient light is faster than your TV.",
|
||||
"edt_conf_smooth_updateDelay_title": "Update delay",
|
||||
"edt_conf_smooth_updateDelay_expl": "Delay the output by n updates in case your ambient light is faster than your TV.",
|
||||
"edt_conf_smooth_updateDelay_title": "Output delay",
|
||||
"edt_conf_smooth_updateFrequency_expl": "The output speed to your LED controller.",
|
||||
"edt_conf_smooth_updateFrequency_title": "Update frequency",
|
||||
"edt_conf_v4l2_blueSignalThreshold_expl": "Darkens low blue values (recognized as black)",
|
||||
|
@ -483,6 +532,27 @@
|
|||
"edt_conf_v4l2_hardware_set_defaults_tip": "Set device's default values for brightness, contrast, hue and saturation",
|
||||
"edt_conf_v4l2_noSignalCounterThreshold_title": "Signal Counter Threshold",
|
||||
"edt_conf_v4l2_noSignalCounterThreshold_expl": "Count of frames (check that with grabber's current FPS mode) after which the no signal is triggered",
|
||||
"edt_conf_audio_device_expl": "Selected audio input device",
|
||||
"edt_conf_audio_device_title": "Audio Device",
|
||||
"edt_conf_audio_effects_expl": "Select an effect on how the audio signal is transformed to",
|
||||
"edt_conf_audio_effects_title": "Audio Effects",
|
||||
"edt_conf_audio_effect_enum_vumeter": "VU-Meter",
|
||||
"edt_conf_audio_effect_hotcolor_expl": "Hot Color",
|
||||
"edt_conf_audio_effect_hotcolor_title": "Hot Color",
|
||||
"edt_conf_audio_effect_multiplier_expl": "Audio Signal Value multiplier",
|
||||
"edt_conf_audio_effect_multiplier_title": "Multiplier",
|
||||
"edt_conf_audio_effect_safecolor_expl": "Safe Color",
|
||||
"edt_conf_audio_effect_safecolor_title": "Safe Color",
|
||||
"edt_conf_audio_effect_safevalue_expl": "Safe Threshold",
|
||||
"edt_conf_audio_effect_safevalue_title": "Safe Threshold",
|
||||
"edt_conf_audio_effect_set_defaults": "Reset to default values",
|
||||
"edt_conf_audio_effect_tolerance_expl": "Tolerance used when auto calculating a signal multipler from 0-100",
|
||||
"edt_conf_audio_effect_tolerance_title": "Tolerance",
|
||||
"edt_conf_audio_effect_warncolor_expl": "Warning Color",
|
||||
"edt_conf_audio_effect_warncolor_title": "Warning Color",
|
||||
"edt_conf_audio_effect_warnvalue_expl": "Warning Threshold",
|
||||
"edt_conf_audio_effect_warnvalue_title": "Warning Threshold",
|
||||
"edt_conf_audio_heading_title": "Audio Capture",
|
||||
"edt_conf_webc_crtPath_expl": "Path to the certification file (format should be PEM)",
|
||||
"edt_conf_webc_crtPath_title": "Certificate path",
|
||||
"edt_conf_webc_docroot_expl": "Local webinterface root path (just for webui developer)",
|
||||
|
@ -492,7 +562,9 @@
|
|||
"edt_conf_webc_keyPassPhrase_title": "Key password",
|
||||
"edt_conf_webc_keyPath_expl": "Path to the key file (format PEM, encrypted with RSA)",
|
||||
"edt_conf_webc_keyPath_title": "Private key path",
|
||||
"edt_conf_webc_sslport_expl": "Port oft the HTTPS-Webserver",
|
||||
"edt_conf_webc_port_expl": "Port for the WebServer, RPC and WebSocket HTTP connections",
|
||||
"edt_conf_webc_port_title": "HTTP Port",
|
||||
"edt_conf_webc_sslport_expl": "Port for the WebServer, RPC and WebSocket HTTPS connections",
|
||||
"edt_conf_webc_sslport_title": "HTTPS Port",
|
||||
"edt_dev_auth_key_title": "Authentication Token",
|
||||
"edt_dev_auth_key_title_info": "Authentication Token required to acccess the device",
|
||||
|
@ -500,13 +572,21 @@
|
|||
"edt_dev_enum_sub_min_warm_adjust": "Subtract warm white",
|
||||
"edt_dev_enum_subtract_minimum": "Subtract minimum",
|
||||
"edt_dev_enum_white_off": "White off",
|
||||
"edt_dev_general_autostart_title": "Autostart",
|
||||
"edt_dev_general_autostart_title_info": "The LED device is switched-on during startup or not",
|
||||
"edt_dev_general_colorOrder_title": "RGB byte order",
|
||||
"edt_dev_general_colorOrder_title_info": "The device's color order",
|
||||
"edt_dev_general_enableAttempts_title": "Connection attempts",
|
||||
"edt_dev_general_enableAttempts_title_info": "Number of attempts connecting a device before it goes into an error state.",
|
||||
"edt_dev_general_enableAttemptsInterval_title": "Retry interval",
|
||||
"edt_dev_general_enableAttemptsInterval_title_info": "Intervall between two connection attempts.",
|
||||
"edt_dev_general_hardwareLedCount_title": "Hardware LED count",
|
||||
"edt_dev_general_hardwareLedCount_title_info": "The number of physical LEDs availabe for the given device",
|
||||
"edt_dev_general_heading_title": "General Settings",
|
||||
"edt_dev_general_name_title": "Configuration name",
|
||||
"edt_dev_general_rewriteTime_title": "Refresh time",
|
||||
"edt_dev_spec_ada_mode_title": "Adalight - Standard",
|
||||
"edt_dev_spec_awa_mode_title": "HyperSerial - High speed",
|
||||
"edt_dev_spec_FCledToOn_title": "Fadecandy LED set to on",
|
||||
"edt_dev_spec_FCmanualControl_title": "Manual control of fadecandy LED",
|
||||
"edt_dev_spec_FCsetConfig_title": "Set fadecandy configuration",
|
||||
|
@ -520,12 +600,12 @@
|
|||
"edt_dev_spec_brightnessOverwrite_title": "Overwrite brightness",
|
||||
"edt_dev_spec_brightnessThreshold_title": "Signal detection brightness minimum",
|
||||
"edt_dev_spec_brightness_title": "Brightness",
|
||||
"edt_dev_spec_candyGamma_title": "'Candy' mode (double gamma correction)",
|
||||
"edt_dev_spec_chanperfixture_title": "Channels per Fixture",
|
||||
"edt_dev_spec_cid_title": "CID",
|
||||
"edt_dev_spec_clientKey_title": "Clientkey",
|
||||
"edt_dev_spec_colorComponent_title": "Colour component",
|
||||
"edt_dev_spec_debugLevel_title": "Debug Level",
|
||||
"edt_dev_spec_debugStreamer_title": "Streamer Debug",
|
||||
"edt_dev_spec_delayAfterConnect_title": "Delay after connect",
|
||||
"edt_dev_spec_devices_discovered_none": "No Devices Discovered",
|
||||
"edt_dev_spec_devices_discovered_title": "Devices Discovered",
|
||||
|
@ -540,13 +620,13 @@
|
|||
"edt_dev_spec_gpioBcm_title": "GPIO Pin",
|
||||
"edt_dev_spec_gpioMap_title": "GPIO mapping",
|
||||
"edt_dev_spec_gpioNumber_title": "GPIO number",
|
||||
"edt_dev_spec_groupId_title": "Group ID",
|
||||
"edt_dev_spec_groupId_title": "Group",
|
||||
"edt_dev_spec_header_title": "Specific Settings",
|
||||
"edt_dev_spec_interpolation_title": "Interpolation",
|
||||
"edt_dev_spec_intervall_title": "Interval",
|
||||
"edt_dev_spec_invert_title": "Invert signal",
|
||||
"edt_dev_spec_latchtime_title": "Latch time",
|
||||
"edt_dev_spec_latchtime_title_info": "Latch time is the time-frame a device requires until the next update can be processed. During that time-frame any updates done via ignored.",
|
||||
"edt_dev_spec_latchtime_title_info": "Latch time is the time-frame a device requires until the next update can be processed. During that time-frame any updates done are ignored.",
|
||||
"edt_dev_spec_ledIndex_title": "LED index",
|
||||
"edt_dev_spec_ledType_title": "LED Type",
|
||||
"edt_dev_spec_lightid_itemtitle": "ID",
|
||||
|
@ -560,6 +640,8 @@
|
|||
"edt_dev_spec_networkDeviceName_title": "Network devicename",
|
||||
"edt_dev_spec_networkDevicePort_title": "Port",
|
||||
"edt_dev_spec_numberOfLeds_title": "Number of LEDs",
|
||||
"edt_dev_spec_onBlackTimeToPowerOff": "Time to power off the lamp if the black level is triggered",
|
||||
"edt_dev_spec_onBlackTimeToPowerOn": "Time to power on the lamp if the signal is restored",
|
||||
"edt_dev_spec_orbIds_title": "Orb ID(s)",
|
||||
"edt_dev_spec_order_left_right_title": "2.",
|
||||
"edt_dev_spec_order_top_down_title": "1.",
|
||||
|
@ -567,27 +649,43 @@
|
|||
"edt_dev_spec_panel_start_position": "Start panel [0-max panels]",
|
||||
"edt_dev_spec_panelorganisation_title": "Panel numbering sequence",
|
||||
"edt_dev_spec_pid_title": "PID",
|
||||
"edt_dev_spec_port_expl": "Service Port [1-65535]",
|
||||
"edt_dev_spec_port_title": "Port",
|
||||
"edt_dev_spec_printTimeStamp_title": "Add timestamp",
|
||||
"edt_dev_spec_stream_protocol_title": "Streaming protocol",
|
||||
"edt_dev_spec_pwmChannel_title": "PWM channel",
|
||||
"edt_dev_spec_razer_device_title": "Razer Chroma Device",
|
||||
"edt_dev_spec_restoreOriginalState_title": "Restore lights' state",
|
||||
"edt_dev_spec_restoreOriginalState_title_info": "Restore the device's original state when device is disabled",
|
||||
"edt_dev_spec_rgbw_calibration_enable": "White channel calibration (RGBW only)",
|
||||
"edt_dev_spec_rgbw_calibration_limit": "White channel limit",
|
||||
"edt_dev_spec_rgbw_calibration_red": "Red/White channel aspect",
|
||||
"edt_dev_spec_rgbw_calibration_green": "Green/White channel aspect",
|
||||
"edt_dev_spec_rgbw_calibration_blue": "Blue/White channel aspect",
|
||||
"edt_dev_spec_segments_disabled_title": "Segment streaming disabled at WLED.",
|
||||
"edt_dev_spec_segments_title": "Stream to segment",
|
||||
"edt_dev_spec_segmentId_title": "Segment-ID",
|
||||
"edt_dev_spec_segmentsSwitchOffOthers_title": "Switch-off other segments",
|
||||
"edt_dev_spec_segmentsOverlapValidation_error": "Correct the WLED setup! The segment must not overlap with {{plural:$1| segment|segments}}: \"$2\".",
|
||||
"edt_dev_spec_serial_title": "Serial number",
|
||||
"edt_dev_spec_spipath_title": "SPI Device",
|
||||
"edt_dev_spec_sslHSTimeoutMax_title": "Streamer handshake timeout maximum",
|
||||
"edt_dev_spec_sslHSTimeoutMin_title": "Streamer handshake timeout minimum",
|
||||
"edt_dev_spec_sslReadTimeout_title": "Streamer read timeout",
|
||||
"edt_dev_spec_stayOnAfterStreaming_title": "Stay on after streaming",
|
||||
"edt_dev_spec_stayOnAfterStreaming_title_info": "The device will stay on after streaming or restoring state.",
|
||||
"edt_dev_spec_switchOffOnBlack_title": "Switch off on black",
|
||||
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Switch-off, below minimum",
|
||||
"edt_dev_spec_syncOverwrite_title": "Disable synchronisation",
|
||||
"edt_dev_spec_targetIpHost_title": "Target Hostname/IP-address",
|
||||
"edt_dev_spec_targetIpHost_expl": "Hostname (DNS/mDNS) or IP-address (IPv4 or IPv6)",
|
||||
"edt_dev_spec_targetIpHost_title": "Hostname/IP-address",
|
||||
"edt_dev_spec_targetIpHost_title_info": "The device's hostname or IP-address",
|
||||
"edt_dev_spec_targetIp_title": "Target IP-address",
|
||||
"edt_dev_spec_targetIp_title": "IP-address",
|
||||
"edt_dev_spec_transeffect_title": "Transition effect",
|
||||
"edt_dev_spec_transistionTimeExtra_title": "Extra time darkness",
|
||||
"edt_dev_spec_transistionTime_title": "Transition time",
|
||||
"edt_dev_spec_uid_title": "UID",
|
||||
"edt_dev_spec_universe_title": "Universe",
|
||||
"edt_dev_spec_useAPIv2_title": "Use API v2",
|
||||
"edt_dev_spec_useEntertainmentAPI_title": "Use Hue Entertainment API",
|
||||
"edt_dev_spec_useOrbSmoothing_title": "Use orb smoothing",
|
||||
"edt_dev_spec_useRgbwProtocol_title": "Use RGBW protocol",
|
||||
|
@ -653,7 +751,7 @@
|
|||
"edt_eff_image_source_url": "URL",
|
||||
"edt_eff_image": "Image file",
|
||||
"edt_eff_url": "Image adress",
|
||||
"edt_eff_initial_blink" : "Flash for attention",
|
||||
"edt_eff_initial_blink": "Flash for attention",
|
||||
"edt_eff_interval": "Interval",
|
||||
"edt_eff_knightrider_header": "Knight Rider",
|
||||
"edt_eff_knightrider_header_desc": "K.I.T.T is back! The front-scanner of the well known car, this time not just in red.",
|
||||
|
@ -691,7 +789,7 @@
|
|||
"edt_eff_reversedirection": "Reverse direction",
|
||||
"edt_eff_rotationtime": "Rotation time",
|
||||
"edt_eff_saturation": "Saturation",
|
||||
"edt_eff_set_post_color" : "Set post color after alam",
|
||||
"edt_eff_set_post_color": "Set post color after alam",
|
||||
"edt_eff_showseconds": "Show seconds",
|
||||
"edt_eff_sleeptime": "Sleep time",
|
||||
"edt_eff_smooth_custom": "Enable smoothing",
|
||||
|
@ -734,6 +832,10 @@
|
|||
"edt_msg_error_disallow": "Value must not be of type $1",
|
||||
"edt_msg_error_disallow_union": "Value must not be one of the provided disallowed types",
|
||||
"edt_msg_error_enum": "Value must be one of the enumerated values",
|
||||
"edt_msg_error_hostname": "The hostname has the wrong format",
|
||||
"edt_msg_error_invalid_epoch": "Date must be greater than 1 January 1970",
|
||||
"edt_msg_error_ipv4": "Value must be a valid IPv4 address in the form of 4 numbers between 0 and 255, separated by dots",
|
||||
"edt_msg_error_ipv6": "Value must be a valid IPv6 address",
|
||||
"edt_msg_error_maxItems": "Value must have at most $1 items",
|
||||
"edt_msg_error_maxLength": "Value must be at most $1 characters long",
|
||||
"edt_msg_error_maxProperties": "Object must have at most $1 properties",
|
||||
|
@ -754,6 +856,8 @@
|
|||
"edt_msg_error_type": "Value must be of type $1",
|
||||
"edt_msg_error_type_union": "Value must be one of the provided types",
|
||||
"edt_msg_error_uniqueItems": "Array must have unique items",
|
||||
"edt_msgcust_error_hostname_ip": "Not a valid Hostname nor IPv4 nor IPv6",
|
||||
"edt_msgcust_error_hostname_ip4": "Not a valid Hostname nor IPv4",
|
||||
"effectsconfigurator_button_conttest": "Continuous test",
|
||||
"effectsconfigurator_button_deleffect": "Delete Effect",
|
||||
"effectsconfigurator_button_editeffect": "Load Effect",
|
||||
|
@ -801,6 +905,7 @@
|
|||
"general_comp_PROTOSERVER": "Protocol Buffers Server",
|
||||
"general_comp_SMOOTHING": "Smoothing",
|
||||
"general_comp_V4L": "Capture USB-Input",
|
||||
"general_comp_AUDIO": "Audio Capture",
|
||||
"general_country_cn": "China",
|
||||
"general_country_de": "Germany",
|
||||
"general_country_es": "Spain",
|
||||
|
@ -812,12 +917,17 @@
|
|||
"general_country_us": "United States",
|
||||
"general_disabled": "disabled",
|
||||
"general_enabled": "enabled",
|
||||
"general_speech_ca": "Catalan",
|
||||
"general_speech_cs": "Czech",
|
||||
"general_speech_da": "Danish",
|
||||
"general_speech_de": "German",
|
||||
"general_speech_el": "Greek",
|
||||
"general_speech_en": "English",
|
||||
"general_speech_es": "Spanish",
|
||||
"general_speech_fr": "French",
|
||||
"general_speech_hu": "Hungarian",
|
||||
"general_speech_it": "Italian",
|
||||
"general_speech_ja": "Japanese",
|
||||
"general_speech_nb": "Norwegian (Bokmål)",
|
||||
"general_speech_nl": "Dutch",
|
||||
"general_speech_pl": "Polish",
|
||||
|
@ -906,8 +1016,11 @@
|
|||
"remote_losthint": "Note: All changes will be lost after a restart.",
|
||||
"remote_maptype_intro": "Usually the LED layout defines which LED covers a specific picture area. You can change it here: $1.",
|
||||
"remote_maptype_label": "Mapping type",
|
||||
"remote_maptype_label_multicolor_mean": "Multicolor",
|
||||
"remote_maptype_label_unicolor_mean": "Unicolor",
|
||||
"remote_maptype_label_dominant_color": "Dominant Color",
|
||||
"remote_maptype_label_dominant_color_advanced": "Dominant Color Advanced",
|
||||
"remote_maptype_label_multicolor_mean": "Mean Color Simple",
|
||||
"remote_maptype_label_multicolor_mean_squared": "Mean Color Squared",
|
||||
"remote_maptype_label_unicolor_mean": "Mean Color Image",
|
||||
"remote_optgroup_syseffets": "System Effects",
|
||||
"remote_optgroup_templates_custom": "User Templates",
|
||||
"remote_optgroup_templates_system": "System Templates",
|
||||
|
@ -977,16 +1090,16 @@
|
|||
"wiz_cololight_noprops": "Not able to get device properties - Define Hardware LED count manually",
|
||||
"wiz_cololight_title": "Cololight Wizard",
|
||||
"wiz_guideyou": "The $1 will guide you through the settings. Just press the button!",
|
||||
"wiz_hue_blinkblue": "Let ID $1 light up blue",
|
||||
"wiz_hue_clientkey": "Clientkey:",
|
||||
"wiz_hue_blinkblue": "Let it light up",
|
||||
"wiz_hue_clientkey": "Clientkey",
|
||||
"wiz_hue_create_user": "Create new User",
|
||||
"wiz_hue_desc1": "It searches automatically for a Hue-Bridge, in case it can't find one you need to provide the IP-address and push the reload button on the right. Now you need a user ID, if you don't have one create a new one.",
|
||||
"wiz_hue_desc2": "Now choose which lamps should be added. The position assigns the lamp to a specific position on your \"picture\". Disabled lamps won't be added. To identify single lamps press the button on the right.",
|
||||
"wiz_hue_desc1": "1. Hyperion searches automatically for a Hue-Bridge, in case it cannot find one you need to provide the hostname or IP-address and push the reload button. <br> 2. Provide a user ID, if you do not have one create a new one.",
|
||||
"wiz_hue_desc2": "3. Now choose which lamps should be added. The position assigns the lamp to a specific position on your \"picture\". Disabled lamps won't be added. To identify single lamps press the button on the right.",
|
||||
"wiz_hue_e_clientkey_needed": "A clientkey that matches the username is required to use the entertainment API. Please enter an existing one or use the button below to create a new one.",
|
||||
"wiz_hue_e_create_user": "Create new User and clientkey",
|
||||
"wiz_hue_e_desc1": "It searches automatically for a hue bridge, in case it can't find one you need to provide the ip address and push the reload button on the right. Now you need a user id and the clientkey, if you don't have both, create a new one.",
|
||||
"wiz_hue_e_desc2": "Now choose your entertainment group, which has all your lights inside for use with Hyperion.",
|
||||
"wiz_hue_e_desc3": "Now you can choose in which position the respective lamp should be \"in the picture\". A preselection of the position was made based on the configured positions of the lights in the entertainment group. This is just a recommendation and can be customized as desired. You can therefore highlight them briefly by clicking on the right button to improve the selection.",
|
||||
"wiz_hue_e_desc1": "1. Hyperion searches automatically for a Hue-Bridge, in case it cannot find one you need to provide the hostname or IP-address and push the reload button. <br> 2. Provide a user id and the clientkey, if you do not have both, create new ones.",
|
||||
"wiz_hue_e_desc2": "3. Choose your entertainment group, which has all your lights inside for use with Hyperion.",
|
||||
"wiz_hue_e_desc3": "4. Choose in which position the respective lamp should be \"in the picture\". A preselection of the position was made based on the configured positions of the lights in the entertainment group. This is just a recommendation and can be customized as desired. You can therefore highlight them briefly by clicking on the right button to improve the selection.",
|
||||
"wiz_hue_e_intro1": "This wizards configures Hyperion for the well known Philips Hue Entertainment system. Features are: Hue Bridge auto detection, user and clientkey creation, entertainment group selection, setting group lights to a specific position on your picture and optimise the Hyperion settings automatically! So in short: All you need are some clicks and you are done!",
|
||||
"wiz_hue_e_noapisupport": "The Wizard has disabled entertainment API support and will continue in classic mode.",
|
||||
"wiz_hue_e_noapisupport_hint": "The option \"<b>Use Hue Entertainment API</b>\" was unchecked.",
|
||||
|
@ -996,15 +1109,15 @@
|
|||
"wiz_hue_e_use_group": "Use group",
|
||||
"wiz_hue_e_use_groupid": "Use group ID $1",
|
||||
"wiz_hue_failure_connection": "Timeout: Please press the bridge button within the period of 30 seconds",
|
||||
"wiz_hue_failure_ip": "No Bridge found, please type in a valid IP-Address",
|
||||
"wiz_hue_failure_ip": "No Bridge found, please provide a valid hostname or IP-address",
|
||||
"wiz_hue_failure_user": "User not found, create a new one with the button below or input a valid user id and press the \"reload\" symbol.",
|
||||
"wiz_hue_intro1": "This wizards configures Hyperion for the well known Philips Hue system. Features are Hue Bridge auto detection, user creation, set each hue light to a specific position on your picture or disable it and tune the Hyperion settings automatically! So in short: All you need are some clicks and you are done!",
|
||||
"wiz_hue_ip": "Hue Bridge IP:",
|
||||
"wiz_hue_ip": "Hostname or IP",
|
||||
"wiz_hue_noids": "This Hue bridge has no bulbs/stripes, please pair them before with the Hue Apps",
|
||||
"wiz_hue_press_link": "Please press link button on the Hue Bridge.",
|
||||
"wiz_hue_searchb": "Searching for bridge...",
|
||||
"wiz_hue_title": "Philips Hue Wizard",
|
||||
"wiz_hue_username": "User ID:",
|
||||
"wiz_hue_username": "User ID",
|
||||
"wiz_identify": "Identify",
|
||||
"wiz_identify_tip": "Identify configured device by lighting it up",
|
||||
"wiz_identify_light": "Identify $1",
|
||||
|
@ -1020,6 +1133,7 @@
|
|||
"wiz_rgb_qrend": "...red?",
|
||||
"wiz_rgb_switchevery": "Switch color every...",
|
||||
"wiz_rgb_title": "RGB Byte Order Wizard",
|
||||
"wiz_cc_try_connect": "Connecting...",
|
||||
"wiz_wizavail": "Wizard available",
|
||||
"wiz_yeelight_desc2": "Now choose which lamps should be added. The position assigns the lamp to a specific position on your \"picture\". Disabled lamps won't be added. To identify single lamps press the button on the right.",
|
||||
"wiz_yeelight_intro1": "This wizards configures Hyperion for the Yeelight system. Features are the Yeelighs' auto detection, setting each light to a specific position on your picture or disable it and tune the Hyperion settings automatically! So in short: All you need are some clicks and you are done!",
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
"InfoDialog_nowrite_foottext": "¡El WebUI se desbloqueará automáticamente después de haber resuelto el problema!",
|
||||
"InfoDialog_nowrite_text": "Hyperion no puede escribir en el archivo de configuración cargado actual. Repara los permisos de archivo para continuar.",
|
||||
"InfoDialog_nowrite_title": "¡Error de permiso de escritura!",
|
||||
"InfoDialog_systemRestart_title": "Reiniciar",
|
||||
"InfoDialog_systemResume_title": "Retomar",
|
||||
"InfoDialog_systemSuspend_title": "Suspender",
|
||||
"about_3rd_party_licenses": "Licencias de terceros",
|
||||
"about_3rd_party_licenses_error": "Tuvimos problemas para recopilar información de licencias de terceros a través de la Web. <br />Por favor, sigue este enlace para acceder al Recurso GitHub.",
|
||||
"about_build": "Build",
|
||||
|
@ -40,7 +43,7 @@
|
|||
"conf_general_inst_renreq_t": "Introduce un nuevo nombre para tu instalación en el campo de abajo.",
|
||||
"conf_general_inst_title": "Gestión de instalaciones de hardware LED",
|
||||
"conf_general_intro": "Ajustes básicos de Hyperion y WebUI que no encajan en otra categoría.",
|
||||
"conf_general_label_title": "Configuración General",
|
||||
"conf_general_label_title": "Configuración general",
|
||||
"conf_grabber_fg_intro": "La plataforma de captura es la captura del sistema local como fuente de entrada, en la que Hyperion está instalado.",
|
||||
"conf_grabber_inst_grabber_config_info": "Configura de antemano los dispositivos de hardware de captura que utilizará la instancia",
|
||||
"conf_grabber_v4l_intro": "La captura USB es un dispositivo (de captura) conectado a través de USB que se utiliza para introducir imágenes de origen para su procesado.",
|
||||
|
@ -51,9 +54,13 @@
|
|||
"conf_leds_contr_label_contrtype": "Tipo de controladora:",
|
||||
"conf_leds_device_info_log": "En caso de que tus LEDs no funcionen, comprueba aquí si hay errores:",
|
||||
"conf_leds_device_intro": "Hyperion soporta una gran cantidad de controladores para transmitir datos a tu dispositivo de destino. Selecciona un controlador LED fuera de la lista ordenada y configúralo. Hemos elegido los mejores ajustes por defecto para cada dispositivo.",
|
||||
"conf_leds_error_get_properties_text": "No se han podido obtener las propiedades del dispositivo. Por favor, comprueba los elementos de configuración.",
|
||||
"conf_leds_error_get_properties_title": "Propiedades del dispositivo",
|
||||
"conf_leds_error_hwled_gt_layout": "El recuento de LEDs por hardware ($1) es mayor que los LEDs configurados a través de la disposición ($2),<br>$3 {{plural:$1|LED|LEDs}} se quedará en negro si continúas.",
|
||||
"conf_leds_error_hwled_gt_maxled": "El recuento de LEDs por hardware ($1) es mayor que el número máximo de LEDs soportado por el dispositivo ($2). <br> El recuento de LEDs de hardware se establece en ($3).",
|
||||
"conf_leds_error_hwled_gt_maxled_protocol": "El recuento de LEDs por hardware ($1) es mayor que el número máximo de LEDs soportado por el protocolo de streaming ($2). <br> El protocolo de streaming cambiará a ($3).",
|
||||
"conf_leds_error_hwled_lt_layout": "El recuento de LEDs por hardware ($1) es menor que los LEDs configurados a través del diseño ($2). <br> El número de LEDs configurados en el esquema no debe superar los LEDs disponibles.",
|
||||
"conf_leds_error_wled_segment_missing": "El segmento configurado actualmente ($1) no está configurado en tu dispositivo WLED.<br>¡Es posible que tengas que comprobar la configuración del WLED!<br>La página de configuración representa la configuración actual del WLED.",
|
||||
"conf_leds_info_ws281x": "Hyperion debe ejecutarse con privilegios 'root' para este tipo de controlador.",
|
||||
"conf_leds_layout_advanced": "Ajustes Avanzados",
|
||||
"conf_leds_layout_blacklist_num_title": "Número de LEDs",
|
||||
|
@ -62,6 +69,7 @@
|
|||
"conf_leds_layout_blacklist_start_title": "LED de inicio",
|
||||
"conf_leds_layout_blacklistleds_title": "LEDs de lista negra",
|
||||
"conf_leds_layout_btn_checklist": "Mostrar lista",
|
||||
"conf_leds_layout_btn_keystone": "Corrección de la clave",
|
||||
"conf_leds_layout_button_savelay": "Guardar Disposición",
|
||||
"conf_leds_layout_button_updsim": "Actualizar Vista Previa",
|
||||
"conf_leds_layout_checkp1": "El led negro es tu primer led, el primer led es el punto donde introduces tu señal de datos.",
|
||||
|
@ -81,6 +89,16 @@
|
|||
"conf_leds_layout_cl_leftbottom": "Izquierda 50% - 100% Inferior",
|
||||
"conf_leds_layout_cl_leftmiddle": "Izquierda 25% - 75% Medio",
|
||||
"conf_leds_layout_cl_lefttop": "Izquierda 0% - 50% Superior",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft11": "Abajo: 75 - 100% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft112": "Abajo: 0 - 50% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft12": "Abajo: 25 - 50% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft121": "Abajo: 50 - 100% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft14": "Abajo: 0 - 25% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft34": "Abajo: 50 - 75% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosBottomLeftNewMid": "Abajo: 25 - 75% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosTopLeft112": "Arriba: 0 - 50% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosTopLeft121": "Arriba: 50 - 75% desde la izquierda",
|
||||
"conf_leds_layout_cl_lightPosTopLeftNewMid": "Arriba: 25 - 75% desde la izquierda",
|
||||
"conf_leds_layout_cl_overlap": "Superposición",
|
||||
"conf_leds_layout_cl_reversdir": "Dirección inversa",
|
||||
"conf_leds_layout_cl_right": "Derecha",
|
||||
|
@ -95,6 +113,7 @@
|
|||
"conf_leds_layout_generatedconf": "Configuración LED Generada/Actual",
|
||||
"conf_leds_layout_intro": "Necesitas también un diseño led, que refleje tus posiciones led. La disposición clásica es el marco generalmente usado de la TV, pero también apoyamos la creación de matriz led (paredes led). La vista en esta disposición es SIEMPRE del FRENTE de tu TV.",
|
||||
"conf_leds_layout_ma_cabling": "Cableado",
|
||||
"conf_leds_layout_ma_direction": "Dirección",
|
||||
"conf_leds_layout_ma_horiz": "Horizontal",
|
||||
"conf_leds_layout_ma_optbottomleft": "Inferior Izquierda",
|
||||
"conf_leds_layout_ma_optbottomright": "Inferior Derecha",
|
||||
|
@ -112,7 +131,7 @@
|
|||
"conf_leds_layout_pbr": "Apunta abajo a la derecha",
|
||||
"conf_leds_layout_peview": "Vista Previa de Configuración LED",
|
||||
"conf_leds_layout_preview_l1": "Este es tu primer led (posición de entrada)",
|
||||
"conf_leds_layout_preview_l2": "Esto visualiza la dirección de datos (segundo/tercer led)",
|
||||
"conf_leds_layout_preview_l2": "Esto visualiza la dirección de datos (segundo/tercer LED)",
|
||||
"conf_leds_layout_preview_ledpower": "Consumo Máx. de energía: $1 A",
|
||||
"conf_leds_layout_preview_originCL": "Creado a partir de: Disposición Clásica (Marco LED)",
|
||||
"conf_leds_layout_preview_originMA": "Creado a partir de: Disposición en Matriz (Pared LED)",
|
||||
|
@ -140,7 +159,7 @@
|
|||
"conf_logging_contpolicy": "Informe de la Política de Privacidad",
|
||||
"conf_logging_label_intro": "Área para comprobar los mensajes de registro, dependiendo de la configuración de nivel de registro, verás más o menos información.",
|
||||
"conf_logging_lastreports": "Informes anteriores",
|
||||
"conf_logging_logoutput": "Resultado del registro",
|
||||
"conf_logging_logoutput": "Salida del registro",
|
||||
"conf_logging_nomessage": "No hay mensajes de registro disponibles.",
|
||||
"conf_logging_report": "Informe",
|
||||
"conf_logging_uplfailed": "¡Subida fallida! ¡Por favor revise su conexion a internet!",
|
||||
|
@ -171,7 +190,7 @@
|
|||
"dashboard_alert_message_confsave_success": "Su configuración de Hyperion se ha guardado correctamente. Sus modificaciones están ahora activas.",
|
||||
"dashboard_alert_message_confsave_success_t": "Configuración guardada",
|
||||
"dashboard_alert_message_disabled": "¡Hyperion está actualmente deshabilitado! Para usarlo de nuevo, habilitalo en el panel de mandos.",
|
||||
"dashboard_alert_message_disabled_t": "Hyperion deshabilitado",
|
||||
"dashboard_alert_message_disabled_t": "Instancia de hardware LED desactivada",
|
||||
"dashboard_componentbox_label_comp": "Estado de los componentes",
|
||||
"dashboard_componentbox_label_status": "Estado",
|
||||
"dashboard_componentbox_label_title": "Estado de los componentes",
|
||||
|
@ -181,6 +200,7 @@
|
|||
"dashboard_infobox_label_instance": "Instancia:",
|
||||
"dashboard_infobox_label_latesthyp": "Última versión de Hyperion:",
|
||||
"dashboard_infobox_label_platform": "Plataforma:",
|
||||
"dashboard_infobox_label_port_boblight": "Servidor Boblight:",
|
||||
"dashboard_infobox_label_port_flat": "Flatbuffer:",
|
||||
"dashboard_infobox_label_port_json": "Servidor JSON:",
|
||||
"dashboard_infobox_label_port_proto": "Protobuffer:",
|
||||
|
@ -190,19 +210,20 @@
|
|||
"dashboard_infobox_label_statush": "Estado de Hyperion:",
|
||||
"dashboard_infobox_label_title": "Información",
|
||||
"dashboard_infobox_label_watchedversionbranch": "Rama de la versión visualizada:",
|
||||
"dashboard_infobox_message_updatesuccess": "Ejecutas la última versión de Hyperion.",
|
||||
"dashboard_infobox_message_updatewarning": "¡Una versión más nueva de Hyperion está disponible! ($1)",
|
||||
"dashboard_infobox_message_updatesuccess": "Estás ejecutando la última versión de Hyperion.",
|
||||
"dashboard_infobox_message_updatewarning": "¡Hay disponible una versión más nueva de Hyperion! ($1)",
|
||||
"dashboard_label_intro": "El cuadro de mandos te ofrece una visión general sobre el estado de Hyperion.",
|
||||
"dashboard_message_default_password": "La WebUI tiene actualmente la contraseña por defecto. Te recomendamos encarecidamente que la cambies.",
|
||||
"dashboard_message_default_password_t": "Está establecida la contraseña por defecto de la WebUI",
|
||||
"dashboard_message_do_not_show_again": "No mostrar este mensaje de nuevo",
|
||||
"dashboard_message_global_setting": "La configuración de esta página no depende de una instalación específica. Los cambios se almacenarán globalmente para todas las instalaciones.",
|
||||
"dashboard_message_global_setting_t": "Configuración independiente de la instalación",
|
||||
"dashboard_newsbox_label_title": "Últimas entradas del Blog",
|
||||
"dashboard_newsbox_label_title": "Hyperion-Blog",
|
||||
"dashboard_newsbox_noconn": "No se puede conectar al Servidor Hyperion para recuperar los últimos mensajes, ¿Funciona tu conexión a Internet?",
|
||||
"dashboard_newsbox_readmore": "Leer más",
|
||||
"dashboard_newsbox_visitblog": "Visitar Hyperion-Blog",
|
||||
"edt_append_degree": "º",
|
||||
"edt_append_frames": "Fotogramas",
|
||||
"edt_append_hz": "Hz",
|
||||
"edt_append_leds": "LEDs",
|
||||
"edt_append_ms": "ms",
|
||||
|
@ -216,16 +237,16 @@
|
|||
"edt_conf_bb_blurRemoveCnt_expl": "Número de píxeles que se eliminan del borde detectado para cortar el desenfoque.",
|
||||
"edt_conf_bb_blurRemoveCnt_title": "blurRemoveCnt",
|
||||
"edt_conf_bb_borderFrameCnt_expl": "Número de fotogramas antes de que se establezca un borde detectado consistente.",
|
||||
"edt_conf_bb_borderFrameCnt_title": "borderFrameCnt",
|
||||
"edt_conf_bb_borderFrameCnt_title": "Fotogramas de los bordes",
|
||||
"edt_conf_bb_heading_title": "Detector de bordes negros",
|
||||
"edt_conf_bb_maxInconsistentCnt_expl": "Número de tramas inconsistentes que se ignoran antes de que una nueva frontera tenga la oportunidad de probar la coherencia.",
|
||||
"edt_conf_bb_maxInconsistentCnt_title": "maxInconsistentCn",
|
||||
"edt_conf_bb_maxInconsistentCnt_title": "Fotogramas inconsistentes",
|
||||
"edt_conf_bb_mode_expl": "Algoritmo para procesamiento. (Ver Wiki)",
|
||||
"edt_conf_bb_mode_title": "Modo",
|
||||
"edt_conf_bb_threshold_expl": "Si la detección no funciona, sube el umbral para ajustar en negro \"grisáceo\"",
|
||||
"edt_conf_bb_threshold_title": "Umbral",
|
||||
"edt_conf_bb_unknownFrameCnt_expl": "Número de fotogramas sin detección antes de que el borde se establezca en 0.",
|
||||
"edt_conf_bb_unknownFrameCnt_title": "unknownFrameCnt",
|
||||
"edt_conf_bb_unknownFrameCnt_title": "Fotogramas desconocidos",
|
||||
"edt_conf_bge_heading_title": "Efecto/color de fondo",
|
||||
"edt_conf_bobls_heading_title": "Servidor Boblight",
|
||||
"edt_conf_color_backlightColored_expl": "Añade un poco de color a tu retroiluminación.",
|
||||
|
@ -238,6 +259,8 @@
|
|||
"edt_conf_color_blue_title": "azul",
|
||||
"edt_conf_color_brightnessComp_expl": "Compensa las diferencias de brillo entre el rojo, verde, azul, amarillo y blanco. 100 significa compensación total, 0 sin compensación",
|
||||
"edt_conf_color_brightnessComp_title": "Compensación de brillo",
|
||||
"edt_conf_color_brightnessGain_expl": "Ajusta el brillo de los colores. 1,0 significa que no hay cambios, más de 1,0 aumenta el brillo, menos de 1,0 disminuye el brillo.",
|
||||
"edt_conf_color_brightnessGain_title": "Ganancia de brillo",
|
||||
"edt_conf_color_brightness_expl": "De 0,0 a 0,5 el brillo se lineariza, de 0,5 a 1,0 cian, magenta, amarillo es hasta 2x más brillante y blanco 3x.",
|
||||
"edt_conf_color_brightness_title": "Brillo máximo",
|
||||
"edt_conf_color_channelAdjustment_header_expl": "Crear perfiles de color que puedan ser asignados a un componente específico. Ajustar el color, la gama, el brillo, la compensación y más.",
|
||||
|
@ -264,6 +287,8 @@
|
|||
"edt_conf_color_magenta_title": "magenta",
|
||||
"edt_conf_color_red_expl": "El valor rojo calibrado.",
|
||||
"edt_conf_color_red_title": "rojo",
|
||||
"edt_conf_color_saturationGain_expl": "Ajusta la saturación de los colores. 1,0 significa que no hay cambios, más de 1,0 aumenta la saturación, menos de 1,0 disminuye la saturación.",
|
||||
"edt_conf_color_saturationGain_title": "Ganancia de saturación",
|
||||
"edt_conf_color_white_expl": "El valor blanco calibrado.",
|
||||
"edt_conf_color_white_title": "blanco",
|
||||
"edt_conf_color_yellow_expl": "El valor amarillo calibrado.",
|
||||
|
@ -319,15 +344,17 @@
|
|||
"edt_conf_enum_top_down": "De arriba a abajo",
|
||||
"edt_conf_enum_transeffect_smooth": "Suave",
|
||||
"edt_conf_enum_transeffect_sudden": "Repentino",
|
||||
"edt_conf_enum_udp_ddp": "DDP",
|
||||
"edt_conf_enum_udp_raw": "En bruto",
|
||||
"edt_conf_enum_unicolor_mean": "Unicolor",
|
||||
"edt_conf_fbs_heading_title": "Servidor de Flatbuffers",
|
||||
"edt_conf_fbs_timeout_expl": "Si no se reciben datos para el período dado, el componente se desactivará (suavemente).",
|
||||
"edt_conf_fbs_timeout_title": "Tiempo de espera",
|
||||
"edt_conf_fg_display_expl": "Selecciona qué escritorio debe ser capturado (configuración de varios monitores)",
|
||||
"edt_conf_fg_display_title": "Visualización",
|
||||
"edt_conf_fg_frequency_Hz_expl": "Cómo de rápido se capturan las nuevas imágenes",
|
||||
"edt_conf_fg_frequency_Hz_expl": "La velocidad a la que se capturan las nuevas imágenes, es decir, la frecuencia de muestreo. Nota: El vídeo puede ser reproducido a una velocidad de fotogramas mayor o menor.",
|
||||
"edt_conf_fg_frequency_Hz_title": "Frecuencia de captura",
|
||||
"edt_conf_fg_heading_title": "Captura de Plataforma",
|
||||
"edt_conf_fg_heading_title": "Captura de Pantalla",
|
||||
"edt_conf_fg_height_expl": "Reducir la imagen a este alto, ya que la imagen en bruto necesita mucho tiempo de CPU.",
|
||||
"edt_conf_fg_height_title": "Altura",
|
||||
"edt_conf_fg_pixelDecimation_expl": "Reducir el tamaño de la imagen (factor) basado en el tamaño original. Un factor de 1 significa que no hay cambios",
|
||||
|
@ -347,11 +374,18 @@
|
|||
"edt_conf_fge_type_title": "Tipo",
|
||||
"edt_conf_fw_flat_expl": "Un destino flatbuffer por línea. Contiene IP:PUERTO (Ejemplo: 127.0.0.1:19446)",
|
||||
"edt_conf_fw_flat_itemtitle": "Destino flatbuffer",
|
||||
"edt_conf_fw_flat_services_discovered_expl": "Descubiertos los servidores Hyperion que prestan servicios de flatbuffer",
|
||||
"edt_conf_fw_flat_services_discovered_title": "Objetivos de Flatbuffer descubiertos",
|
||||
"edt_conf_fw_flat_title": "Lista de clientes flatbuffer",
|
||||
"edt_conf_fw_heading_title": "Expedidor",
|
||||
"edt_conf_fw_json_expl": "Un destino json por línea. Contiene IP:PUERTO (Ejemplo: 127.0.0.1:19446)",
|
||||
"edt_conf_fw_json_itemtitle": "Destino json",
|
||||
"edt_conf_fw_json_services_discovered_expl": "Servidores Hyperion descubiertos que proporcionan servicios JSON-API",
|
||||
"edt_conf_fw_json_services_discovered_title": "Objetivos JSON descubiertos",
|
||||
"edt_conf_fw_json_title": "Lista de clientes JSON",
|
||||
"edt_conf_fw_remote_service_discovered_none": "No se han descubierto servicios remotos",
|
||||
"edt_conf_fw_service_name_expl": "Nombre del proveedor de servicios",
|
||||
"edt_conf_fw_service_name_title": "Nombre del servicio",
|
||||
"edt_conf_gen_configVersion_title": "Versión de configuración",
|
||||
"edt_conf_gen_heading_title": "Configuración General",
|
||||
"edt_conf_gen_name_expl": "Un nombre definido por el usuario que se utiliza para detectar Hyperion. (Útil con más de una instancia de Hyperion)",
|
||||
|
@ -373,13 +407,13 @@
|
|||
"edt_conf_grabber_discovery_inprogress": "Descubrimiento en curso",
|
||||
"edt_conf_instC_screen_grabber_device_expl": "El dispositivo de captura de pantalla utilizado",
|
||||
"edt_conf_instC_screen_grabber_device_title": "Dispositivo de captura de pantalla",
|
||||
"edt_conf_instC_systemEnable_expl": "Permite la captura de la plataforma para esta instalación de hardware Led",
|
||||
"edt_conf_instC_systemEnable_title": "Habilitar la captura de plataformas",
|
||||
"edt_conf_instC_systemEnable_expl": "Permite la captura de pantalla para esta instalación de hardware Led",
|
||||
"edt_conf_instC_systemEnable_title": "Habilitar la captura de pantalla",
|
||||
"edt_conf_instC_v4lEnable_expl": "Habilita la captura USB para esta instalación de hardware led",
|
||||
"edt_conf_instC_v4lEnable_title": "Habilitar captura USB",
|
||||
"edt_conf_instC_video_grabber_device_expl": "El dispositivo de captura de vídeo utilizado",
|
||||
"edt_conf_instC_video_grabber_device_title": "Dispositivo de captura de vídeo",
|
||||
"edt_conf_instCapture_heading_title": "Captura de instancias",
|
||||
"edt_conf_instCapture_heading_title": "Capturar Dispositivos",
|
||||
"edt_conf_js_heading_title": "Servidor JSON",
|
||||
"edt_conf_log_heading_title": "Registro",
|
||||
"edt_conf_log_level_expl": "Dependiendo del nivel de registro verás menos o más mensajes en tu registro.",
|
||||
|
@ -410,8 +444,6 @@
|
|||
"edt_conf_smooth_heading_title": "Suavizado",
|
||||
"edt_conf_smooth_interpolationRate_expl": "Velocidad de cálculo de los fotogramas intermedios suaves.",
|
||||
"edt_conf_smooth_interpolationRate_title": "Tasa de interpolación",
|
||||
"edt_conf_smooth_outputRate_expl": "La velocidad de salida a tu controlador de leds.",
|
||||
"edt_conf_smooth_outputRate_title": "Tasa de salida",
|
||||
"edt_conf_smooth_time_ms_expl": "¿Cuánto tiempo debe recoger las imágenes el suavizado?",
|
||||
"edt_conf_smooth_time_ms_title": "Tiempo",
|
||||
"edt_conf_smooth_type_expl": "Tipo de suavizado",
|
||||
|
@ -422,7 +454,7 @@
|
|||
"edt_conf_smooth_updateFrequency_title": "Frecuencia de actualización",
|
||||
"edt_conf_v4l2_blueSignalThreshold_expl": "Oscurece los valores bajos de color azul (reconocidos como negros)",
|
||||
"edt_conf_v4l2_blueSignalThreshold_title": "Umbral de señal azul",
|
||||
"edt_conf_v4l2_cecDetection_expl": "Si está activado, la captura usb se desactivará temporalmente cuando el evento de espera de CEC se reciba desde el bus HDMI.",
|
||||
"edt_conf_v4l2_cecDetection_expl": "Si está activado, la captura USB se desactivará temporalmente cuando el evento de espera de CEC se reciba desde el bus HDMI.",
|
||||
"edt_conf_v4l2_cecDetection_title": "Detección CEC",
|
||||
"edt_conf_v4l2_cropBottom_expl": "Cuenta de píxeles en la parte inferior que se quitan de la imagen.",
|
||||
"edt_conf_v4l2_cropBottom_title": "Cortar abajo",
|
||||
|
@ -446,13 +478,13 @@
|
|||
"edt_conf_v4l2_framerate_title": "Fotogramas por segundo",
|
||||
"edt_conf_v4l2_greenSignalThreshold_expl": "Oscurece los valores bajos de color verde (reconocidos como negros)",
|
||||
"edt_conf_v4l2_greenSignalThreshold_title": "Umbral de señal verde",
|
||||
"edt_conf_v4l2_hardware_brightness_expl": "Establecer el brillo del hardware si el dispositivo lo soporta, comprobar los registros (0=desactivado)",
|
||||
"edt_conf_v4l2_hardware_brightness_expl": "Establecer el brillo del hardware",
|
||||
"edt_conf_v4l2_hardware_brightness_title": "Control de brillo por hardware",
|
||||
"edt_conf_v4l2_hardware_contrast_expl": "Establecer el contraste del hardware si el dispositivo lo soporta, comprobar los registros (0=desactivado)",
|
||||
"edt_conf_v4l2_hardware_contrast_expl": "Establecer el contraste del hardware",
|
||||
"edt_conf_v4l2_hardware_contrast_title": "Control de contraste por hardware",
|
||||
"edt_conf_v4l2_hardware_hue_expl": "Establecer el tono del hardware si el dispositivo lo soporta, comprobar los registros (0=desactivado)",
|
||||
"edt_conf_v4l2_hardware_hue_expl": "Establecer el tono del hardware",
|
||||
"edt_conf_v4l2_hardware_hue_title": "Control del tono por hardware",
|
||||
"edt_conf_v4l2_hardware_saturation_expl": "Establecer la saturación del hardware si el dispositivo lo soporta, comprobar los registros (0=desactivado)",
|
||||
"edt_conf_v4l2_hardware_saturation_expl": "Establecer la saturación del hardware",
|
||||
"edt_conf_v4l2_hardware_saturation_title": "Control de la saturación por hardware",
|
||||
"edt_conf_v4l2_hardware_set_defaults": "Controles de hardware por defecto",
|
||||
"edt_conf_v4l2_hardware_set_defaults_tip": "Establecer los valores predeterminados del dispositivo para el brillo, el contraste, el tono y la saturación",
|
||||
|
@ -496,8 +528,14 @@
|
|||
"edt_dev_enum_sub_min_warm_adjust": "Min. Ajuste caliente",
|
||||
"edt_dev_enum_subtract_minimum": "Restar el mínimo",
|
||||
"edt_dev_enum_white_off": "Blanco apagado",
|
||||
"edt_dev_general_autostart_title": "Autoinicio",
|
||||
"edt_dev_general_autostart_title_info": "El dispositivo LED se enciende o no durante el arranque",
|
||||
"edt_dev_general_colorOrder_title": "Orden de bytes RGB",
|
||||
"edt_dev_general_colorOrder_title_info": "El orden de los colores del dispositivo",
|
||||
"edt_dev_general_enableAttemptsInterval_title": "Intervalo de reintentos",
|
||||
"edt_dev_general_enableAttemptsInterval_title_info": "Intervalo entre dos intentos de conexión.",
|
||||
"edt_dev_general_enableAttempts_title": "Intentos de conexión",
|
||||
"edt_dev_general_enableAttempts_title_info": "Número de intentos de conexión de un dispositivo antes de que entre en estado de error.",
|
||||
"edt_dev_general_hardwareLedCount_title": "Recuento de LEDs de hardware",
|
||||
"edt_dev_general_hardwareLedCount_title_info": "El número de LEDs físicos disponibles para el dispositivo dado",
|
||||
"edt_dev_general_heading_title": "Configuración general",
|
||||
|
@ -508,6 +546,8 @@
|
|||
"edt_dev_spec_FCsetConfig_title": "Establecer configuración fadecandy",
|
||||
"edt_dev_spec_LBap102Mode_title": "Modo LightBerry APA102",
|
||||
"edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo",
|
||||
"edt_dev_spec_ada_mode_title": "Adalight - Estándar",
|
||||
"edt_dev_spec_awa_mode_title": "HyperSerial - Alta velocidad",
|
||||
"edt_dev_spec_baudrate_title": "Tasa de baudios",
|
||||
"edt_dev_spec_blackLightsTimeout_title": "Tiempo de detección de la señal en negro",
|
||||
"edt_dev_spec_brightnessFactor_title": "Factor de brillo",
|
||||
|
@ -516,12 +556,12 @@
|
|||
"edt_dev_spec_brightnessOverwrite_title": "Sobrescribir brillo",
|
||||
"edt_dev_spec_brightnessThreshold_title": "El brillo de la detección de la señal es mínimo",
|
||||
"edt_dev_spec_brightness_title": "Brillo",
|
||||
"edt_dev_spec_candyGamma_title": "Modo \"Candy\" (doble corrección gamma)",
|
||||
"edt_dev_spec_chanperfixture_title": "Canales por Fixture",
|
||||
"edt_dev_spec_cid_title": "CID",
|
||||
"edt_dev_spec_clientKey_title": "Llave de cliente",
|
||||
"edt_dev_spec_colorComponent_title": "Componente de color",
|
||||
"edt_dev_spec_debugLevel_title": "Nivel de depuración de la conexión del Streamer",
|
||||
"edt_dev_spec_debugStreamer_title": "Depuración de Streamer",
|
||||
"edt_dev_spec_delayAfterConnect_title": "Retraso después de la conexión",
|
||||
"edt_dev_spec_devices_discovered_none": "No se han descubierto dispositivos",
|
||||
"edt_dev_spec_devices_discovered_title": "Dispositivos descubiertos",
|
||||
|
@ -553,9 +593,11 @@
|
|||
"edt_dev_spec_maxPacket_title": "Paquete máximo",
|
||||
"edt_dev_spec_maximumLedCount_title": "Número máximo de LEDs",
|
||||
"edt_dev_spec_multicastGroup_title": "Grupo multidifusión",
|
||||
"edt_dev_spec_networkDeviceName_title": "Nombre de la red",
|
||||
"edt_dev_spec_networkDeviceName_title": "Nombre del dispositivo de red",
|
||||
"edt_dev_spec_networkDevicePort_title": "Puerto",
|
||||
"edt_dev_spec_numberOfLeds_title": "Número de LEDs",
|
||||
"edt_dev_spec_onBlackTimeToPowerOff": "Tiempo de apagado de la lámpara si se activa el nivel de negro",
|
||||
"edt_dev_spec_onBlackTimeToPowerOn": "Tiempo de encendido de la lámpara si se restablece la señal",
|
||||
"edt_dev_spec_orbIds_title": "ID(s) Orb",
|
||||
"edt_dev_spec_order_left_right_title": "2.",
|
||||
"edt_dev_spec_order_top_down_title": "1.",
|
||||
|
@ -563,22 +605,37 @@
|
|||
"edt_dev_spec_panel_start_position": "Panel de inicio [0-paneles max]",
|
||||
"edt_dev_spec_panelorganisation_title": "Secuencia de numeración del panel",
|
||||
"edt_dev_spec_pid_title": "PID",
|
||||
"edt_dev_spec_port_expl": "Puerto de Servicio [1-65535]",
|
||||
"edt_dev_spec_port_title": "Puerto",
|
||||
"edt_dev_spec_printTimeStamp_title": "Añadir marca de tiempo",
|
||||
"edt_dev_spec_pwmChannel_title": "Canal PWM",
|
||||
"edt_dev_spec_razer_device_title": "Dispositivo Razer Chroma",
|
||||
"edt_dev_spec_restoreOriginalState_title": "Restaurar el estado original de las luces cuando se desactivan",
|
||||
"edt_dev_spec_restoreOriginalState_title_info": "Restaurar el estado original del dispositivo cuando se desactiva",
|
||||
"edt_dev_spec_rgbw_calibration_blue": "Aspecto del canal Azul/Blanco",
|
||||
"edt_dev_spec_rgbw_calibration_enable": "Calibración del canal blanco (sólo RGBW)",
|
||||
"edt_dev_spec_rgbw_calibration_green": "Aspecto del canal Verde/Blanco",
|
||||
"edt_dev_spec_rgbw_calibration_limit": "Límite del canal blanco",
|
||||
"edt_dev_spec_rgbw_calibration_red": "Aspecto del canal Rojo/Blanco",
|
||||
"edt_dev_spec_segmentId_title": "Segmento-ID",
|
||||
"edt_dev_spec_segmentsOverlapValidation_error": "¡Corrige la configuración de WLED! El segmento no debe solaparse con {{plural:$1| segmento|segmentos}}: \"$2\".",
|
||||
"edt_dev_spec_segmentsSwitchOffOthers_title": "Desconectar otros segmentos",
|
||||
"edt_dev_spec_segments_disabled_title": "Transmisión de segmentos desactivada en WLED.",
|
||||
"edt_dev_spec_segments_title": "Transmisión a segmento",
|
||||
"edt_dev_spec_serial_title": "Número de serie",
|
||||
"edt_dev_spec_spipath_title": "Ruta SPI",
|
||||
"edt_dev_spec_spipath_title": "Dispositivo SPI",
|
||||
"edt_dev_spec_sslHSTimeoutMax_title": "Máximo tiempo de espera para el contacto con el Streamer",
|
||||
"edt_dev_spec_sslHSTimeoutMin_title": "Tiempo mínimo de espera para el contacto con el Streamer",
|
||||
"edt_dev_spec_sslReadTimeout_title": "Tiempo de lectura del Streamer",
|
||||
"edt_dev_spec_stayOnAfterStreaming_title": "Permanecer encendido después del streaming",
|
||||
"edt_dev_spec_stayOnAfterStreaming_title_info": "El dispositivo permanecerá encendido después de transmitir o restaurar el estado.",
|
||||
"edt_dev_spec_stream_protocol_title": "Protocolo de streaming",
|
||||
"edt_dev_spec_switchOffOnBlack_title": "Apagar en negro",
|
||||
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Apagado, por debajo del mínimo",
|
||||
"edt_dev_spec_syncOverwrite_title": "Desactivar la sincronización",
|
||||
"edt_dev_spec_targetIpHost_title": "IP de destino/nombre de host",
|
||||
"edt_dev_spec_targetIpHost_expl": "Nombre de host (DNS/mDNS) o dirección-IP (IPv4 o IPv6)",
|
||||
"edt_dev_spec_targetIpHost_title": "Nombre de host/dirección IP",
|
||||
"edt_dev_spec_targetIpHost_title_info": "El nombre de anfitrión o la dirección IP del dispositivo",
|
||||
"edt_dev_spec_targetIp_title": "IP de destino",
|
||||
"edt_dev_spec_targetIp_title": "Dirección-IP",
|
||||
"edt_dev_spec_transeffect_title": "Efecto de transición",
|
||||
"edt_dev_spec_transistionTimeExtra_title": "Oscuridad de tiempo extra",
|
||||
"edt_dev_spec_transistionTime_title": "Tiempo de transición",
|
||||
|
@ -641,9 +698,13 @@
|
|||
"edt_eff_frequency": "Frecuencia",
|
||||
"edt_eff_gif_header": "GIFs",
|
||||
"edt_eff_gif_header_desc": "Este efecto reproduce archivos.gif, proporciona un vídeo simple tipo bucle como efecto.",
|
||||
"edt_eff_grayscale": "Escala de grises",
|
||||
"edt_eff_height": "Altura",
|
||||
"edt_eff_huechange": "Cambio de color",
|
||||
"edt_eff_image": "Archivo de imagen",
|
||||
"edt_eff_image_source": "Fuente de la imagen",
|
||||
"edt_eff_image_source_file": "Archivo local",
|
||||
"edt_eff_image_source_url": "URL",
|
||||
"edt_eff_initial_blink": "Flash para llamar la atención",
|
||||
"edt_eff_interval": "Intervalo",
|
||||
"edt_eff_knightrider_header": "Coche Fantástico",
|
||||
|
@ -701,6 +762,7 @@
|
|||
"edt_eff_traces_header_desc": "Requiere rediseño",
|
||||
"edt_eff_trails_header": "Caminos",
|
||||
"edt_eff_trails_header_desc": "Estrellas de colores que caen de arriba a abajo",
|
||||
"edt_eff_url": "Localización de la imagen",
|
||||
"edt_eff_waves_header": "Ondas",
|
||||
"edt_eff_waves_header_desc": "¡Ondas de color! Elije tus colores, el tiempo de rotación, dirección inversa y más.",
|
||||
"edt_eff_whichleds": "Qué Leds",
|
||||
|
@ -725,6 +787,10 @@
|
|||
"edt_msg_error_disallow": "El valor no debe ser del tipo $1",
|
||||
"edt_msg_error_disallow_union": "El valor no debe ser uno de los tipos no permitidos",
|
||||
"edt_msg_error_enum": "El valor debe ser uno de los valores enumerados",
|
||||
"edt_msg_error_hostname": "El nombre de host tiene un formato incorrecto",
|
||||
"edt_msg_error_invalid_epoch": "La fecha debe ser superior al 1 de enero de 1970",
|
||||
"edt_msg_error_ipv4": "El valor debe ser una dirección IPv4 válida en forma de 4 números entre 0 y 255, separados por puntos",
|
||||
"edt_msg_error_ipv6": "El valor debe ser una dirección IPv6 válida",
|
||||
"edt_msg_error_maxItems": "El valor debe tener como máximo $1",
|
||||
"edt_msg_error_maxLength": "El valor debe tener un máximo de $1 caracteres",
|
||||
"edt_msg_error_maxProperties": "El objeto debe tener como máximo $1 propiedades",
|
||||
|
@ -745,6 +811,8 @@
|
|||
"edt_msg_error_type": "El valor debe ser del tipo $1",
|
||||
"edt_msg_error_type_union": "El valor debe ser uno de los tipos proporcionados",
|
||||
"edt_msg_error_uniqueItems": "Formación debe tener elementos únicos",
|
||||
"edt_msgcust_error_hostname_ip": "No es un nombre de host válido ni IPv4 ni IPv6",
|
||||
"edt_msgcust_error_hostname_ip4": "No es un nombre de host válido ni IPv4",
|
||||
"effectsconfigurator_button_conttest": "Test contínuo",
|
||||
"effectsconfigurator_button_deleffect": "Eliminar Efecto",
|
||||
"effectsconfigurator_button_editeffect": "Cargar Efecto",
|
||||
|
@ -787,11 +855,11 @@
|
|||
"general_comp_BOBLIGHTSERVER": "Servidor Boblight",
|
||||
"general_comp_FLATBUFSERVER": "Servidor de Flatbuffers",
|
||||
"general_comp_FORWARDER": "JSON/PROTO Progresivo",
|
||||
"general_comp_GRABBER": "Captura de plataforma",
|
||||
"general_comp_LEDDEVICE": "Dispositivo LED",
|
||||
"general_comp_GRABBER": "Captura de pantalla",
|
||||
"general_comp_LEDDEVICE": "Salida LED",
|
||||
"general_comp_PROTOSERVER": "Servidor de Buffers de Protocolo",
|
||||
"general_comp_SMOOTHING": "Suavizado",
|
||||
"general_comp_V4L": "Captura USB",
|
||||
"general_comp_V4L": "Captura USB-Entrada",
|
||||
"general_country_cn": "China",
|
||||
"general_country_de": "Alemania",
|
||||
"general_country_es": "España",
|
||||
|
@ -803,12 +871,17 @@
|
|||
"general_country_us": "Estados Unidos",
|
||||
"general_disabled": "Deshabilitado",
|
||||
"general_enabled": "Habilitado",
|
||||
"general_speech_ca": "Catalán",
|
||||
"general_speech_cs": "Czech",
|
||||
"general_speech_da": "Danés",
|
||||
"general_speech_de": "Alemán",
|
||||
"general_speech_el": "Griego",
|
||||
"general_speech_en": "Inglés",
|
||||
"general_speech_es": "Español",
|
||||
"general_speech_fr": "Francés",
|
||||
"general_speech_hu": "Húngaro",
|
||||
"general_speech_it": "Italiano",
|
||||
"general_speech_ja": "Japonés",
|
||||
"general_speech_nb": "Noruego (Bokmål)",
|
||||
"general_speech_nl": "Holandés",
|
||||
"general_speech_pl": "Polaco",
|
||||
|
@ -851,16 +924,16 @@
|
|||
"info_restart_contus": "Si todavía te quedas por aquí después de 20 segundos y no tienes idea de por qué, abre un nuevo tema en nuestro foro de soporte ...",
|
||||
"info_restart_contusa": "... con tus últimos pasos. ¡Gracias!",
|
||||
"info_restart_rightback": "¡Hyperion regresará inmediatamente!",
|
||||
"info_restart_title": "Reinicia ahora...",
|
||||
"info_restart_title": "Reiniciando actualmente...",
|
||||
"main_ledsim_btn_togglelednumber": "Números LED",
|
||||
"main_ledsim_btn_toggleleds": "Mostrar LEDs",
|
||||
"main_ledsim_btn_togglelivevideo": "video en vivo",
|
||||
"main_ledsim_btn_togglelivevideo": "Video en directo",
|
||||
"main_ledsim_btn_togglesigdetect": "Área de detección de señales",
|
||||
"main_ledsim_text": "Visualización en vivo de los colores LED y opcional el flujo de vídeo actual de tu dispositivo de captura.",
|
||||
"main_ledsim_title": "Visualización LED",
|
||||
"main_menu_about_token": "Acerca de Hyperion",
|
||||
"main_menu_colors_conf_token": "Procesamiento de imágen",
|
||||
"main_menu_configuration_token": "Configuración",
|
||||
"main_menu_configuration_token": "Instancias LED",
|
||||
"main_menu_dashboard_token": "Cuadro de mandos",
|
||||
"main_menu_effect_conf_token": "Efectos",
|
||||
"main_menu_effectsconfigurator_token": "Configurador de Efectos",
|
||||
|
@ -868,7 +941,7 @@
|
|||
"main_menu_grabber_conf_token": "Hardware de Captura",
|
||||
"main_menu_input_selection_token": "Selección de entrada",
|
||||
"main_menu_instcapture_conf_token": "Fuentes",
|
||||
"main_menu_leds_conf_token": "Hardware LED",
|
||||
"main_menu_leds_conf_token": "Salida LED",
|
||||
"main_menu_logging_token": "Log",
|
||||
"main_menu_network_conf_token": "Servicios de red",
|
||||
"main_menu_remotecontrol_token": "Control Remoto",
|
||||
|
@ -903,7 +976,7 @@
|
|||
"remote_maptype_label": "Tipo de Mapeo",
|
||||
"remote_maptype_label_multicolor_mean": "Multicolor",
|
||||
"remote_maptype_label_unicolor_mean": "Unicolor",
|
||||
"remote_optgroup_syseffets": "Efectos Proporcionados",
|
||||
"remote_optgroup_syseffets": "Efectos de Sistema",
|
||||
"remote_optgroup_templates_custom": "Plantillas de Usuario",
|
||||
"remote_optgroup_templates_system": "Plantillas del Sistema",
|
||||
"remote_optgroup_usreffets": "Efectos de Usuario",
|
||||
|
@ -932,7 +1005,7 @@
|
|||
"support_label_webpagetitle": "Página web",
|
||||
"support_label_webrestitle": "Información y recursos de ayuda",
|
||||
"support_label_wikitext": "La fuente de la A a la Z para casi todo lo relacionado con Hyperion",
|
||||
"support_label_wikititle": "Wiki",
|
||||
"support_label_wikititle": "Documentación",
|
||||
"support_label_yttext": "¿Aburrido de las fotos? ¡Comprueba nuestro canal de Youtube!",
|
||||
"update_button_changelog": "Registro completo de cambios",
|
||||
"update_button_install": "Instalar",
|
||||
|
@ -953,7 +1026,7 @@
|
|||
"wiz_cc_chooseid": "Define un nombre para éste perfil.",
|
||||
"wiz_cc_intro1": "Este asistente te guiará a través de la calibración led. Si estás usando Kodi, las fotos y videos de la calibración pueden ser enviados directamente a él. Prerrequisito: Necesitas habilitar \"Permitir el control remoto desde aplicaciones en otros sistemas\" en Kodi.<br />O bien, puede que quieras descargar estos archivos tú mismo y mostrarlos cuando el asistente te pida que ajustes la configuración.",
|
||||
"wiz_cc_kodicon": "Kodi encontrado, proceder con el soporte de Kodi.",
|
||||
"wiz_cc_kodidiscon": "No se encuentra Kodi, proceder sin el soporte de Kodi.",
|
||||
"wiz_cc_kodidiscon": "No se encuentra Kodi, proceder sin apoyo de Kodi (por favor, comprueba si el control remoto por otros sistemas está activado).",
|
||||
"wiz_cc_kodidisconlink": "Descarga enlaces de imagenes:",
|
||||
"wiz_cc_kodimsg_start": "Prueba con éxito - ¡tiempo de continuar!",
|
||||
"wiz_cc_kodishould": "Kodi debería mostrar la siguiente imagen: $1",
|
||||
|
@ -967,6 +1040,7 @@
|
|||
"wiz_cc_testintrok": "Pulsa un botón de abajo para iniciar un vídeo de prueba.",
|
||||
"wiz_cc_testintrowok": "Haz el siguiente enlace para descargar videos de prueba:",
|
||||
"wiz_cc_title": "Asistente de calibración de color",
|
||||
"wiz_cc_try_connect": "Conectando...",
|
||||
"wiz_cololight_desc2": "Ahora elige qué Cololights deben ser añadidos. Para identificar las luces individuales, pulsa el botón de la derecha.",
|
||||
"wiz_cololight_intro1": "Este asistente configura Hyperion para el sistema Cololight. ¡Las características son la detección automática de Cololight y el ajuste automático de la configuración de Hyperion! En resumen: Todo lo que necesitas son algunos clics y listo!<br />Nota: En el caso de Cololight Strip, puede que necesites corregir manualmente el recuento y la disposición de los LEDs.",
|
||||
"wiz_cololight_noprops": "Imposible obtener las propiedades del dispositivo - Define el conteo de LEDs de hardware manualmente",
|
||||
|
@ -975,8 +1049,8 @@
|
|||
"wiz_hue_blinkblue": "Permite a ID $1 encender el azul",
|
||||
"wiz_hue_clientkey": "Llave de cliente:",
|
||||
"wiz_hue_create_user": "Crear Usuario",
|
||||
"wiz_hue_desc1": "Busca automáticamente un puente Hue, en caso de que no encuentre uno necesitas proporcionar la dirección IP y pulsar el botón de recarga a la derecha. Ahora necesitas una identificación de usuario, si no tienes una, crea una nueva.",
|
||||
"wiz_hue_desc2": "Ahora elije qué lámparas se deben agregar. La posición asigna la lámpara a una posición específica en tu \"imagen\". No se agregarán las lámparas deshabilitadas. Para identificar lámparas individuales, presiona el botón de la derecha.",
|
||||
"wiz_hue_desc1": "1. Busca automáticamente un puente Hue, en caso de que no encuentre uno necesitas proporcionar la dirección IP y pulsar el botón de recarga a la derecha. Ahora necesitas una identificación de usuario, si no tienes una, crea una nueva.",
|
||||
"wiz_hue_desc2": "3. Ahora elije qué lámparas se deben agregar. La posición asigna la lámpara a una posición específica en tu \"imagen\". No se agregarán las lámparas deshabilitadas. Para identificar lámparas individuales, presiona el botón de la derecha.",
|
||||
"wiz_hue_e_clientkey_needed": "Se requiere una clave de cliente que coincida con el nombre de usuario para usar la API de entretenimiento. Por favor, introduce una existente o usa el botón de abajo para crear una nueva.",
|
||||
"wiz_hue_e_create_user": "Crear un nuevo usuario y una nueva clave de cliente",
|
||||
"wiz_hue_e_desc1": "Busca automáticamente un puente Hue, en caso de que no pueda encontrar uno, debes proporcionar la dirección IP y pulsar el botón de recarga a la derecha. Ahora necesitas un ID de usuario y la clave de cliente, si no tienes ambas, crea una nueva.",
|
||||
|
@ -991,15 +1065,15 @@
|
|||
"wiz_hue_e_use_group": "Usar grupo",
|
||||
"wiz_hue_e_use_groupid": "Usar ID de grupo $1",
|
||||
"wiz_hue_failure_connection": "El tiempo de conexión expiró. Por favor, pulsa el botón a tiempo.",
|
||||
"wiz_hue_failure_ip": "Comprueba tu dirección IP.",
|
||||
"wiz_hue_failure_ip": "No se ha encontrado ningún Puente, indica un nombre de host o una dirección IP válidos",
|
||||
"wiz_hue_failure_user": "Usuario no encontrado, crea uno nuevo con el botón de abajo o introduce una identificación de usuario válida y pulsa el símbolo de \"recargar\".\n",
|
||||
"wiz_hue_intro1": "Con este ayudante de configuración puedes obtener un nuevo usuario para tu Puente de Matiz y puedes ver tus luces con las ID para la Configuración de Hyperion.",
|
||||
"wiz_hue_ip": "IP Puente de Matiz:",
|
||||
"wiz_hue_ip": "Nombre de host o IP",
|
||||
"wiz_hue_noids": "Este puente de Matiz no tiene bombillas/tiras, por favor, emparéjalos antes con las aplicaciones de Hue",
|
||||
"wiz_hue_press_link": "Por favor, presione el botón de enlace en el Puente de Matiz.",
|
||||
"wiz_hue_searchb": "Buscando el puente...",
|
||||
"wiz_hue_title": "Asistente Puente de Matiz",
|
||||
"wiz_hue_username": "Nombre de usuario:",
|
||||
"wiz_hue_username": "ID de usuario",
|
||||
"wiz_identify": "Identificar",
|
||||
"wiz_identify_light": "Identificar $1",
|
||||
"wiz_identify_tip": "Identificar el dispositivo configurado iluminándolo",
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
{
|
||||
"InfoDialog_access_text": "Selon le niveau des paramètres, vous pourrez ajuster plus d'options ou accéder à plus de fonctionnalités. Le niveau \"Par défaut\" est recommandé.",
|
||||
"InfoDialog_access_title": "Niveau des paramètres",
|
||||
"InfoDialog_changePassword_success": "Mot de passe enregistré !",
|
||||
"InfoDialog_changePassword_title": "Modifier le mot de passe",
|
||||
"InfoDialog_iswitch_text": "Si vous faites fonctionner plus d'une instance Hyperion sur votre réseau local, vous pouvez basculer entre les différentes configurations. Sélectionnez l'instance d'Hyperion que vous souhaitez contrôler ci-dessous !",
|
||||
"InfoDialog_iswitch_title": "Commutateur Hyperion",
|
||||
"InfoDialog_nowrite_foottext": "Le Web UI sera débloqué automatiquement après que vous ayez résolu les problèmes.",
|
||||
"InfoDialog_nostorage_title": "Impossible d'ecrire les paramètres",
|
||||
"InfoDialog_nowrite_foottext": "WebUI sera débloqué automatiquement une fois les problèmes résolus !",
|
||||
"InfoDialog_nowrite_text": "Hyperion ne peut pas écrire votre fichier de configuration actuellement chargé. Réparez les permissions sur le fichier afin de poursuivre.",
|
||||
"InfoDialog_nowrite_title": "Erreur de droit d'écriture !",
|
||||
"about_3rd_party_licenses": "Licences tierces",
|
||||
|
@ -14,12 +17,12 @@
|
|||
"about_resources": "$1 bibliothèques",
|
||||
"about_translations": "Traductions",
|
||||
"about_version": "Version :",
|
||||
"conf_colors_blackborder_intro": "Évitez les barres noires où qu'elles se trouvent. Chaque mode utilise un algorithme de détection différent qui est réglé pour des situations particulières. Augmentez le seuil si cela ne fonctionne pas pour vous.",
|
||||
"conf_colors_blackborder_intro": "Évitez les barres noires où qu'elles se trouvent. Chaque mode utilise un algorithme de détection spécifique pour des situations particulières. Augmentez le seuil en cas de problème.",
|
||||
"conf_colors_color_intro": "Créer un ou plusieurs profils de calibration, ajuster chaque couleur, luminosité, linéarité et plus.",
|
||||
"conf_colors_smoothing_intro": "Le fondu aplatit les changements de couleur/luminosité pour réduire les distractions gênantes.",
|
||||
"conf_colors_smoothing_intro": "Le fondu limite les changements de couleur/luminosité pour réduire l'effet de transition.",
|
||||
"conf_effect_bgeff_intro": "Définissez un effet/couleur d'arrière-plan, qui est affiché lorsqu'Hyperion sera \"inactif\". Commence toujours par une priorité de canal de 255",
|
||||
"conf_effect_fgeff_intro": "Définissez un effet ou une couleur de démarrage et sa durée, il sera utilisé lors du démarrage d'Hyperion.",
|
||||
"conf_effect_path_intro": "Chargement des effets depuis l'emplacement défini. Vous pouvez également désactiver un simple effet par nom pour les cacher des autres effets de la liste.",
|
||||
"conf_effect_path_intro": "Chargement des effets depuis les emplacements définis. Vous pouvez également désactiver des effets par leur nom.",
|
||||
"conf_general_createInst_btn": "Créer une instance",
|
||||
"conf_general_impexp_expbtn": "Exporter",
|
||||
"conf_general_impexp_impbtn": "Importer",
|
||||
|
@ -27,23 +30,36 @@
|
|||
"conf_general_impexp_l2": "Exporter une configuration en cliquant sur \"Exporter\". Votre navigateur démarrera le téléchargement.",
|
||||
"conf_general_impexp_title": "Importer/Exporter la configuration",
|
||||
"conf_general_inst_actionhead": "Action",
|
||||
"conf_general_inst_delreq_h": "Supprimer l'instance de LED",
|
||||
"conf_general_inst_delreq_t": "Êtes-vous sur de vouloir supprimer l'instance \"$1\" ? Tous les réglages seront perdus.",
|
||||
"conf_general_inst_desc": "Utilisez différentes instances de LED simultanément. Chaque instance s'exécute indépendamment permettant différentes dispositons et calibrations. Les instances en cours d'exécution sont disponibles",
|
||||
"conf_general_inst_name_title": "Nouveau nom d'instance",
|
||||
"conf_general_inst_namehead": "Nom d'instance",
|
||||
"conf_general_inst_renreq_t": "Entrez un nouveau nom pour votre configuration dans la champ ci-dessous.",
|
||||
"conf_general_inst_title": "Gestion des instances de LED",
|
||||
"conf_general_intro": "Configuration basique pour Hyperion et WebUI ne rentrant dans aucune autre catégorie.",
|
||||
"conf_general_label_title": "Réglages généraux",
|
||||
"conf_grabber_fg_intro": "La capture de plate-forme est votre système local, capturée comme source d'entrée.",
|
||||
"conf_grabber_fg_intro": "La capture d'écran correspond à l'image affichée par l'appareil sur lequel est installé Hyperion.",
|
||||
"conf_grabber_v4l_intro": "La capture USB utilise un périphérique de capture connecté en USB au système pour obtenir la source d'images à traiter.",
|
||||
"conf_helptable_expl": "Explication",
|
||||
"conf_helptable_option": "Option",
|
||||
"conf_leds_config_error": "Erreur dans la configuration de la disposition",
|
||||
"conf_leds_config_warning": "Verifiez la configuration de la disposition des LEDs",
|
||||
"conf_leds_contr_label_contrtype": "Type de contrôleur : ",
|
||||
"conf_leds_device_intro": "Hyperion prend en charge de nombreux contrôleurs pour transmettre des données à votre appareil cible. Sélectionnez un contrôleur LED dans la liste triée et configurez-le. Nous avons choisi les meilleurs paramètres par défaut pour chaque appareil.",
|
||||
"conf_leds_error_get_properties_title": "Propriétés du périphérique",
|
||||
"conf_leds_layout_advanced": "Réglages avancés",
|
||||
"conf_leds_layout_blacklist_num_title": "Nombre de LEDs",
|
||||
"conf_leds_layout_blacklist_rule_title": "Règle de liste noire",
|
||||
"conf_leds_layout_blacklist_rules_title": "Règles de liste noire",
|
||||
"conf_leds_layout_blacklist_start_title": "Démarrer LED",
|
||||
"conf_leds_layout_btn_checklist": "Afficher la checklist",
|
||||
"conf_leds_layout_button_savelay": "Sauvegarder la disposition",
|
||||
"conf_leds_layout_button_updsim": "Mettre à jour la prévisualisation",
|
||||
"conf_leds_layout_checkp1": "La LED noire est votre première led, la première led est le point d'entrée du signal de données.",
|
||||
"conf_leds_layout_checkp2": "La disposition est toujours celle visible par la face avant de votre TV, jamais par l'arrière.",
|
||||
"conf_leds_layout_checkp3": "Assurez-vous que la direction est correcte. Les LED grises indiquent les LED numéro 2 et 3 pour aider à visualiser la direction des données",
|
||||
"conf_leds_layout_checkp1": "La LED noire est votre première LED, la première LED est le point d'entrée du signal de données.",
|
||||
"conf_leds_layout_checkp2": "La disposition est toujours celle visible par l'avant de votre TV, jamais par l'arrière.",
|
||||
"conf_leds_layout_checkp3": "Assurez-vous que la direction est correcte. Les LED grises indiquent les LED 2 et 3 pour aider à visualiser la direction des données.",
|
||||
"conf_leds_layout_checkp4": "Écart : Pour créer un écart, ne le prenez pas en compte lors que vous définissez le nombre de LED en Haut/Bas/Gauche/Droite. Vous indiquerez la longueur de l'écart après coup, afin de supprimer un certain nombre de LED. Modifier la position de l'écart jusqu'à obtenir l'effet désiré.",
|
||||
"conf_leds_layout_cl_bottom": "Bas",
|
||||
"conf_leds_layout_cl_bottomleft": "Bas gauche (Coin)",
|
||||
"conf_leds_layout_cl_bottomright": "Bas droit (Coin)",
|
||||
|
@ -52,13 +68,13 @@
|
|||
"conf_leds_layout_cl_gaglength": "Taille de l'écart",
|
||||
"conf_leds_layout_cl_gappos": "Position de l'écart",
|
||||
"conf_leds_layout_cl_hleddepth": "Profondeur LED horizontale",
|
||||
"conf_leds_layout_cl_inppos": "Position de l'entrée",
|
||||
"conf_leds_layout_cl_inppos": "Position de départ",
|
||||
"conf_leds_layout_cl_left": "Gauche",
|
||||
"conf_leds_layout_cl_leftbottom": "Gauche 50%-100% Bas",
|
||||
"conf_leds_layout_cl_leftmiddle": "Gauche 25%-75% Milieu",
|
||||
"conf_leds_layout_cl_lefttop": "Gauche 0%-50% Haut",
|
||||
"conf_leds_layout_cl_overlap": "Chevauchement",
|
||||
"conf_leds_layout_cl_reversdir": "Direction inverse",
|
||||
"conf_leds_layout_cl_reversdir": "Inverser le sens",
|
||||
"conf_leds_layout_cl_right": "Droite",
|
||||
"conf_leds_layout_cl_rightbottom": "Droite 50%-100% Bas",
|
||||
"conf_leds_layout_cl_rightmiddle": "Droite 25%-75% Milieu",
|
||||
|
@ -69,8 +85,9 @@
|
|||
"conf_leds_layout_cl_vleddepth": "Profondeur LED verticale",
|
||||
"conf_leds_layout_frame": "Disposition classique (Cadre LED)",
|
||||
"conf_leds_layout_generatedconf": "Configuration générée/courante des LED",
|
||||
"conf_leds_layout_intro": "Vous avez également besoin d'une disposition de LED qui reflète vos positions de LED. La disposition classique est un cadre de télévision, mais nous prenons également en charge la création de matrice à LED (murs à LED). La vue est toujours par rapport à l'avant de votre TV.",
|
||||
"conf_leds_layout_intro": "Vous avez également besoin d'une disposition de LED qui reflète la position de vos LED. La disposition classique correspond à une télévision, mais nous prenons également en charge la création de matrice de LED (murs de LED). La vue est toujours par rapport à l'avant de votre TV.",
|
||||
"conf_leds_layout_ma_cabling": "Câblage",
|
||||
"conf_leds_layout_ma_direction": "Direction",
|
||||
"conf_leds_layout_ma_horiz": "Horizontal",
|
||||
"conf_leds_layout_ma_optbottomleft": "Bas Gauche",
|
||||
"conf_leds_layout_ma_optbottomright": "Bas Droit",
|
||||
|
@ -79,43 +96,53 @@
|
|||
"conf_leds_layout_ma_optsnake": "Serpent",
|
||||
"conf_leds_layout_ma_opttopleft": "Haut Gauche",
|
||||
"conf_leds_layout_ma_opttopright": "Haut Droit",
|
||||
"conf_leds_layout_ma_optvert": "Vertiacal",
|
||||
"conf_leds_layout_ma_optvert": "Vertical",
|
||||
"conf_leds_layout_ma_order": "Ordre",
|
||||
"conf_leds_layout_ma_position": "Entrée",
|
||||
"conf_leds_layout_ma_vert": "Vertical",
|
||||
"conf_leds_layout_matrix": "Disposition en matrice (Mur LED)",
|
||||
"conf_leds_layout_pbl": "Point en bas à gauche",
|
||||
"conf_leds_layout_pbr": "Point en bas à droite",
|
||||
"conf_leds_layout_peview": "Prévisualisation de la disposition des LED",
|
||||
"conf_leds_layout_preview_l1": "Ceci est votre première LED (position de l'entrée)",
|
||||
"conf_leds_layout_preview_l2": "Ceci vous permet de visualiser le sens de direction des LED (deuxième et troisième LED)",
|
||||
"conf_leds_layout_preview_ledpower": "Consommation totale des LED : $1 A",
|
||||
"conf_leds_layout_preview_l1": "Ceci est votre première LED (position de départ)",
|
||||
"conf_leds_layout_preview_l2": "Ceci vous permet de visualiser le sens de direction des LED (deuxième/troisième LED)",
|
||||
"conf_leds_layout_preview_ledpower": "Consommation max. des LED : $1 A",
|
||||
"conf_leds_layout_preview_originCL": "Créé à partir : Disposition classique (Cadre LED)",
|
||||
"conf_leds_layout_preview_originMA": "Crée à partir : Disposition en matrice (Mur LED)",
|
||||
"conf_leds_layout_preview_originTEXT": "Crée à partir : Champ texte",
|
||||
"conf_leds_layout_preview_totalleds": "Nombre total de LED : $1",
|
||||
"conf_leds_layout_textf1": "Ce champ montre (par défaut) votre disposition actuellement chargée et sera écrasée si vous en générez une nouvelle avec les options ci-dessus. Optionnel vous pourrez y apporter des modifications dans le futur.",
|
||||
"conf_leds_layout_ptl": "Point en haut à gauche",
|
||||
"conf_leds_layout_ptlh": "Horizontale",
|
||||
"conf_leds_layout_ptlv": "Verticale",
|
||||
"conf_leds_layout_ptr": "Point en haut à droite",
|
||||
"conf_leds_layout_textf1": "Ce champ montre (par défaut) votre disposition actuellement chargée et sera écrasée si vous en générez une nouvelle avec les options ci-dessus. Vous pourrez également y apporter des modifications par la suite.",
|
||||
"conf_leds_nav_label_ledcontroller": "Contrôleur LED",
|
||||
"conf_leds_nav_label_ledlayout": "Disposition des LED",
|
||||
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
|
||||
"conf_leds_optgroup_RPiPWM": "RPi PWM",
|
||||
"conf_leds_optgroup_RPiSPI": "RPi SPI",
|
||||
"conf_leds_optgroup_debug": "Debogage",
|
||||
"conf_leds_optgroup_network": "Réseau",
|
||||
"conf_leds_optgroup_other": "Autre",
|
||||
"conf_leds_optgroup_usb": "USB/Série",
|
||||
"conf_logging_btn_autoscroll": "Défilement automatique",
|
||||
"conf_logging_btn_clipboard": "Copier le journal dans le presse papier",
|
||||
"conf_logging_btn_pbupload": "Télécharger un rapport pour des demandes au support",
|
||||
"conf_logging_contpolicy": "Signaler la politique de confidentialité",
|
||||
"conf_logging_contpolicy": "la politique de confidentialité des rapports",
|
||||
"conf_logging_label_intro": "Zone pour vérifier les messages du journal, plus ou moins d'informations seront affichées en fonction du niveau de journalisation réglé.",
|
||||
"conf_logging_lastreports": "Rapports précédents",
|
||||
"conf_logging_nomessage": "Pas de message disponible dans le journal.",
|
||||
"conf_logging_report": "Rapport",
|
||||
"conf_logging_uplfailed": "Échec du téléchargement ! Veuillez vérifier votre connexion Internet !",
|
||||
"conf_logging_uploading": "Préparation des données...",
|
||||
"conf_logging_uplpolicy": "En cliquant sur ce bouton vous acceptez le",
|
||||
"conf_logging_yourlink": "Lier à votre rapport",
|
||||
"conf_logging_uplpolicy": "En cliquant sur ce bouton vous acceptez",
|
||||
"conf_logging_yourlink": "Lien de votre rapport",
|
||||
"conf_network_bobl_intro": "Le port pour Boblight",
|
||||
"conf_network_createToken_btn": "Créer un token",
|
||||
"conf_network_fbs_intro": "Le port pour Google Fltbuffers, utilisé pour la transmission rapide des images",
|
||||
"conf_network_forw_intro": "Transférer toutes les entrées vers une seconde instance d'Hyperion qui peut être contrôlée par un autre contrôleur LED.",
|
||||
"conf_network_fbs_intro": "Le port pour Google Flatbuffers, utilisé pour la transmission rapide des images.",
|
||||
"conf_network_forw_intro": "Transférer toutes les entrées vers une seconde instance d'Hyperion qui peut utiliser un autre contrôleur LED.",
|
||||
"conf_network_json_intro": "Le port JSON-RPC de toutes les instances d'Hyperion utilisé pour le contrôle à distance.",
|
||||
"conf_network_net_intro": "Réglages réseau globaux",
|
||||
"conf_network_proto_intro": "Le port pour PROTO de toutes les instances d'Hyperion, utilisé pour les flux d'images (HyperionScreenCap, Extensions Kodi, Android Hyperion Grabber, ...)",
|
||||
"conf_network_tok_cidhead": "Description",
|
||||
"conf_network_tok_comment_title": "Description du token",
|
||||
|
@ -127,7 +154,7 @@
|
|||
"dashboard_active_instance": "Instance sélectionnée",
|
||||
"dashboard_alert_message_confedit": "Votre configuration d'Hyperion a été modifiée. Redémarrer Hyperion pour l'appliquer.",
|
||||
"dashboard_alert_message_confedit_t": "Configuration modifiée",
|
||||
"dashboard_alert_message_confsave_success": "Votre configuration d'Hyperion a correctement été sauvegardée. Vos modifications sont maintenant actives.",
|
||||
"dashboard_alert_message_confsave_success": "Votre configuration d'Hyperion a été sauvegardée. Vos modifications sont maintenant actives.",
|
||||
"dashboard_alert_message_confsave_success_t": "Configuration sauvegardée",
|
||||
"dashboard_alert_message_disabled": "Cette instance est actuellement désactivée ! Pour l'utiliser à nouveau, activez-la dans le tableau de bord.",
|
||||
"dashboard_alert_message_disabled_t": "Instance matérielle LED désactivée",
|
||||
|
@ -141,6 +168,7 @@
|
|||
"dashboard_infobox_label_latesthyp": "Dernière version d'Hyperion : ",
|
||||
"dashboard_infobox_label_platform": "Plateforme",
|
||||
"dashboard_infobox_label_ports": "Ports",
|
||||
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
|
||||
"dashboard_infobox_label_smartacc": "Accès simplifié",
|
||||
"dashboard_infobox_label_statush": "Statut d'Hyperion : ",
|
||||
"dashboard_infobox_label_title": "Information",
|
||||
|
@ -148,16 +176,23 @@
|
|||
"dashboard_infobox_message_updatesuccess": "Vous utilisez la dernière version d'Hyperion.",
|
||||
"dashboard_infobox_message_updatewarning": "Une nouvelle version d'Hyperion est disponible ! ($1)",
|
||||
"dashboard_label_intro": "Ce dashboard vous donne une vue rapide sur l'état d'Hyperion.",
|
||||
"dashboard_message_default_password": "La WebUI utilise le mot de passe par défaut. Nous recommandons de le modifier.",
|
||||
"dashboard_message_default_password_t": "Utilisation du mot de passe par défaut pour la WebUI",
|
||||
"dashboard_message_do_not_show_again": "Ne plus afficher ce message",
|
||||
"dashboard_message_global_setting": "Les réglages sur cette page sont indépendantes des instances. Tout changement sera global a toutes les instances.",
|
||||
"dashboard_message_global_setting_t": "Réglage global",
|
||||
"dashboard_newsbox_label_title": "Hyperion - Blog",
|
||||
"dashboard_newsbox_noconn": "Impossible d'accéder au blog d'Hyperion. Votre connexion internet fonctionne-t-elle ?",
|
||||
"dashboard_newsbox_readmore": "Lire plus",
|
||||
"dashboard_newsbox_visitblog": "Visiter le Blog d'Hyperion",
|
||||
"edt_append_degree": "°",
|
||||
"edt_append_frames": "images",
|
||||
"edt_append_hz": "Hz",
|
||||
"edt_append_leds": "Leds",
|
||||
"edt_append_leds": "LED",
|
||||
"edt_append_ms": "ms",
|
||||
"edt_append_percent": "%",
|
||||
"edt_append_percent_h": "% hori",
|
||||
"edt_append_percent_v": "% vert",
|
||||
"edt_append_pixel": "Pixel",
|
||||
"edt_append_s": "s",
|
||||
"edt_append_sdegree": "s/degré",
|
||||
|
@ -165,10 +200,12 @@
|
|||
"edt_conf_bb_blurRemoveCnt_title": "Pixel flou",
|
||||
"edt_conf_bb_borderFrameCnt_expl": "Nombre d'images avant la définition d'une bordure détectée cohérente",
|
||||
"edt_conf_bb_borderFrameCnt_title": "Bordure d'image",
|
||||
"edt_conf_bb_heading_title": "Détection de barres noires",
|
||||
"edt_conf_bb_maxInconsistentCnt_expl": "Nombre d'images incohérentes ignorée avant qu'une nouvelle bordure n'ait une chance de prouver la cohérence.",
|
||||
"edt_conf_bb_maxInconsistentCnt_title": "Image incohérente",
|
||||
"edt_conf_bb_mode_expl": "Algorithme de traitement. (voir Wiki)",
|
||||
"edt_conf_bb_mode_title": "Mode",
|
||||
"edt_conf_bb_threshold_expl": "Si la détection ne marche pas, augmentez le seuil pour tendre vers un noir \"grisâtre\"",
|
||||
"edt_conf_bb_threshold_title": "Seuil",
|
||||
"edt_conf_bb_unknownFrameCnt_expl": "Nombre de images sans aucune détection avant que la bordure soit paramétrer à 0.",
|
||||
"edt_conf_bb_unknownFrameCnt_title": "image inconnu",
|
||||
|
@ -182,12 +219,14 @@
|
|||
"edt_conf_color_black_title": "Noir",
|
||||
"edt_conf_color_blue_expl": "La valeur bleue calibrée.",
|
||||
"edt_conf_color_blue_title": "Bleu",
|
||||
"edt_conf_color_brightnessComp_expl": "Compense les différences de luminosité entre rouge vert bleu, cyan magenta jaune et blanc. 100 signifie compensation maximale, 0 pour aucune compensation.",
|
||||
"edt_conf_color_brightnessComp_title": "Compensation de luminosité",
|
||||
"edt_conf_color_brightnessGain_title": "Gain de luminosité",
|
||||
"edt_conf_color_brightness_expl": "Paramétrer la luminosité générale des leds.",
|
||||
"edt_conf_color_brightness_title": "Luminosité",
|
||||
"edt_conf_color_channelAdjustment_header_expl": "Créer des profils de couleurs qui pourrait être attribués à un composant. Ajustez la couleur, le gamma, la luminosité, la compensation et plus.",
|
||||
"edt_conf_color_channelAdjustment_header_itemtitle": "Profil",
|
||||
"edt_conf_color_channelAdjustment_header_title": "Ajustement du canal de couleur ",
|
||||
"edt_conf_color_channelAdjustment_header_title": "Ajustement du canal de couleur",
|
||||
"edt_conf_color_cyan_expl": "La valeur cyan calibrée.",
|
||||
"edt_conf_color_cyan_title": "Cyan",
|
||||
"edt_conf_color_gammaBlue_expl": "Le gamma du bleu. 1.0 est neutre. Plus de 1.0 diminue le bleu, moins que 1.0 ajoute du bleu.",
|
||||
|
@ -209,6 +248,7 @@
|
|||
"edt_conf_color_magenta_title": "Magenta",
|
||||
"edt_conf_color_red_expl": "La valeur rouge calibrée.",
|
||||
"edt_conf_color_red_title": "Rouge",
|
||||
"edt_conf_color_saturationGain_expl": "Ajuste la saturation des couleurs. 1.0 signifie aucune changement, au dessus de 1.0 augmente la saturation, en dessous de 1.0 la diminue.",
|
||||
"edt_conf_color_white_expl": "La valeur blanche calibrée.",
|
||||
"edt_conf_color_white_title": "Blanc",
|
||||
"edt_conf_color_yellow_expl": "La valeur jaune calibrée.",
|
||||
|
@ -220,39 +260,55 @@
|
|||
"edt_conf_effp_paths_expl": "Vous pouvez définir des dossiers contenant des effets supplémentaires. Le configurateur d'effets sera enregistré par défaut dans le premier dossier.",
|
||||
"edt_conf_effp_paths_itemtitle": "Chemin",
|
||||
"edt_conf_effp_paths_title": "Chemin(s) d'effets",
|
||||
"edt_conf_enum_BOTH": "Horizontale & Verticale",
|
||||
"edt_conf_enum_HORIZONTAL": "Horizontale",
|
||||
"edt_conf_enum_NO_CHANGE": "Auto",
|
||||
"edt_conf_enum_NTSC": "NTSC",
|
||||
"edt_conf_enum_PAL": "PAL",
|
||||
"edt_conf_enum_SECAM": "SECAM",
|
||||
"edt_conf_enum_VERTICAL": "Verticale",
|
||||
"edt_conf_enum_automatic": "Automatique",
|
||||
"edt_conf_enum_bbclassic": "Classique",
|
||||
"edt_conf_enum_bbdefault": "Defaut",
|
||||
"edt_conf_enum_bbosd": "OSD",
|
||||
"edt_conf_enum_bgr": "BGR",
|
||||
"edt_conf_enum_bottom_up": "De bas en haut",
|
||||
"edt_conf_enum_brg": "BRG",
|
||||
"edt_conf_enum_color": "Couleur",
|
||||
"edt_conf_enum_custom": "Personnalisation",
|
||||
"edt_conf_enum_dl_error": "Erreur",
|
||||
"edt_conf_enum_dl_nodebug": "Pas de Debug",
|
||||
"edt_conf_enum_dl_statechange": "Changement d'état",
|
||||
"edt_conf_enum_effect": "effet",
|
||||
"edt_conf_enum_dl_verbose": "Verbeux",
|
||||
"edt_conf_enum_effect": "Effet",
|
||||
"edt_conf_enum_gbr": "GBR",
|
||||
"edt_conf_enum_grb": "GRB",
|
||||
"edt_conf_enum_left_right": "De la gauche vers la droite",
|
||||
"edt_conf_enum_linear": "Linéaire",
|
||||
"edt_conf_enum_logdebug": "Débug",
|
||||
"edt_conf_enum_logsilent": "Silencieux",
|
||||
"edt_conf_enum_logverbose": "Verbeux",
|
||||
"edt_conf_enum_logwarn": "Avertissement",
|
||||
"edt_conf_enum_multicolor_mean": "Multicolor",
|
||||
"edt_conf_enum_please_select": "Veuillez sélectionner",
|
||||
"edt_conf_enum_rbg": "RBG",
|
||||
"edt_conf_enum_rgb": "RGB",
|
||||
"edt_conf_enum_right_left": "De la droite vers la gauche",
|
||||
"edt_conf_enum_top_down": "De haut en bas",
|
||||
"edt_conf_enum_unicolor_mean": "Unicolore",
|
||||
"edt_conf_fbs_heading_title": "Serveur Flatbuffers",
|
||||
"edt_conf_fbs_timeout_expl": "Si aucune donnée n'est reçue dans la période de temps donnée, le composant sera désactivé.",
|
||||
"edt_conf_fbs_timeout_title": "Temps écoulé",
|
||||
"edt_conf_fg_display_expl": "Sélectionnez l'écran à capturer (dans le cas d'un multi-écran)",
|
||||
"edt_conf_fg_display_title": "Écran",
|
||||
"edt_conf_fg_frequency_Hz_title": "Fréquence de capture",
|
||||
"edt_conf_fg_heading_title": "Platform de capture",
|
||||
"edt_conf_fg_height_expl": "Réduit l'image à la hauteur définie, une image brute nécessite une grande puissance de calcul.",
|
||||
"edt_conf_fg_height_title": "Hauteur",
|
||||
"edt_conf_fg_pixelDecimation_title": "Décimation de l'image",
|
||||
"edt_conf_fg_type_expl": "Type de capture d'écran, 'auto' par défaut",
|
||||
"edt_conf_fg_type_title": "Type",
|
||||
"edt_conf_fg_width_expl": "Réduit l'image à la largeur définie, une image brute nécessite une grande puissance de calcul.",
|
||||
"edt_conf_fg_width_title": "Largeur",
|
||||
"edt_conf_fge_color_expl": "Si le type est défini sur \"Couleur\", choisissez la couleur à afficher.",
|
||||
"edt_conf_fge_color_title": "Couleur",
|
||||
|
@ -263,37 +319,57 @@
|
|||
"edt_conf_fge_heading_title": "Effet/Couleur de démarrage",
|
||||
"edt_conf_fge_type_expl": "Choisissez parmi une couleur ou un effet.",
|
||||
"edt_conf_fge_type_title": "Type",
|
||||
"edt_conf_fw_flat_itemtitle": "cible du flatbuffer",
|
||||
"edt_conf_fw_heading_title": "Transitaire",
|
||||
"edt_conf_fw_json_expl": "Une cible json par ligne. Contient IP: PORT (ex : 127.0.0.1:19446)",
|
||||
"edt_conf_fw_json_itemtitle": "Cible json",
|
||||
"edt_conf_fw_json_title": "Liste des clients json",
|
||||
"edt_conf_fw_service_name_expl": "Nom du fournisseur de service",
|
||||
"edt_conf_fw_service_name_title": "Nom du service",
|
||||
"edt_conf_gen_configVersion_title": "Version de configuration",
|
||||
"edt_conf_gen_heading_title": "Réglages générals",
|
||||
"edt_conf_gen_name_expl": "Un nom défini par l'utilisateur qui est utilisé pour identifier Hyperion. (Utile si vous disposez de plusieurs instances Hyperion)",
|
||||
"edt_conf_gen_name_title": "Nom de la configuration",
|
||||
"edt_conf_gen_showOptHelp_expl": "Afficher toutes les explications disponible dans cette section. Très recommandé pour les débutants !",
|
||||
"edt_conf_gen_showOptHelp_title": "Afficher les explications",
|
||||
"edt_conf_gen_watchedVersionBranch_title": "Branche surveillée :",
|
||||
"edt_conf_gen_watchedVersionBranch_expl": "Selectionne quelle version de branche doit être utilisée pour trouver des nouvelles versions d'Hyperion",
|
||||
"edt_conf_gen_watchedVersionBranch_title": "Branche surveillée",
|
||||
"edt_conf_general_enable_expl": "Si coché, le composant est actif.",
|
||||
"edt_conf_general_enable_title": "Activer",
|
||||
"edt_conf_general_port_expl": "Le port utilisé.",
|
||||
"edt_conf_general_port_title": "Port",
|
||||
"edt_conf_general_priority_expl": "Priorité de ce composant",
|
||||
"edt_conf_general_priority_title": "Canal de priorité",
|
||||
"edt_conf_grabber_discovered_none": "Aucun périphérique de capture trouvé",
|
||||
"edt_conf_grabber_discovered_title": "Périphérique trouvé",
|
||||
"edt_conf_grabber_discovered_title_info": "Sélectionner votre périphérique de capture trouvé",
|
||||
"edt_conf_grabber_discovery_inprogress": "Découverte en cours",
|
||||
"edt_conf_instC_screen_grabber_device_expl": "Le périphérique de capture d'écran utilisé.",
|
||||
"edt_conf_instC_screen_grabber_device_title": "Périphérique de capture d'écran",
|
||||
"edt_conf_instC_systemEnable_expl": "Active la capture d'écran pour cette configuration de LED",
|
||||
"edt_conf_instC_systemEnable_title": "Activer la capture d'écran",
|
||||
"edt_conf_instC_v4lEnable_expl": "Active la capture USB pour cette configuration de LED",
|
||||
"edt_conf_instC_v4lEnable_title": "Activer la capture USB",
|
||||
"edt_conf_instC_video_grabber_device_title": "Périphérique de capture vidéo",
|
||||
"edt_conf_instCapture_heading_title": "Appareils de capture",
|
||||
"edt_conf_js_heading_title": "Serveur JSON",
|
||||
"edt_conf_log_heading_title": "Connexion",
|
||||
"edt_conf_log_level_expl": "Vous verrez plus ou moins d'information selon le niveau de log que vous avez défini.",
|
||||
"edt_conf_log_level_title": "Niveau de log",
|
||||
"edt_conf_net_apiAuth_title": "Authentification API",
|
||||
"edt_conf_net_apiAuth_title": "Authentification de l'API",
|
||||
"edt_conf_net_heading_title": "Réseau",
|
||||
"edt_conf_net_ipWhitelist_title": "Liste blanche d'adresse IP",
|
||||
"edt_conf_net_ipWhitelist_expl": "Vous pouvez mettre les IP en liste blanche au lieu d'autoriser toutes les connexions depuis internet à l'API/interface web",
|
||||
"edt_conf_net_ipWhitelist_title": "Liste blanche d'adresses IP",
|
||||
"edt_conf_net_ip_itemtitle": "IP",
|
||||
"edt_conf_net_localApiAuth_title": "Authentification de l'API locale",
|
||||
"edt_conf_net_restirctedInternetAccessAPI_title": "Limité aux IP",
|
||||
"edt_conf_pbs_heading_title": "Serveur Protocol Buffers",
|
||||
"edt_conf_pbs_timeout_expl": "Si aucune donnée n'est reçue dans la période de temps donnée, le composant sera désactivé.",
|
||||
"edt_conf_pbs_timeout_title": "Temps écoulé",
|
||||
"edt_conf_smooth_continuousOutput_expl": "Mettez à jour les leds mais si l'image n'a pas changé.",
|
||||
"edt_conf_smooth_continuousOutput_title": "Sortie continue",
|
||||
"edt_conf_smooth_heading_title": "Lissage",
|
||||
"edt_conf_smooth_time_ms_expl": "Combien de temps le lissage doit-il récupérer des images ?",
|
||||
"edt_conf_smooth_time_ms_title": "Temps",
|
||||
"edt_conf_smooth_type_expl": "Type de lissage.",
|
||||
"edt_conf_smooth_type_title": "Type",
|
||||
|
@ -301,6 +377,7 @@
|
|||
"edt_conf_smooth_updateDelay_title": "Changer le retard",
|
||||
"edt_conf_smooth_updateFrequency_expl": "Le vitesse de sortie pour le contrôleur led.",
|
||||
"edt_conf_smooth_updateFrequency_title": "Charger la fréquence",
|
||||
"edt_conf_v4l2_blueSignalThreshold_expl": "Assombrie les valeurs bleues faibles (reconnues comme noires)",
|
||||
"edt_conf_v4l2_blueSignalThreshold_title": "Seuil de signal bleu",
|
||||
"edt_conf_v4l2_cropBottom_expl": "Le nombre de pixel sur le bas qui sont retirés de l'image.",
|
||||
"edt_conf_v4l2_cropBottom_title": "Rognagne bas",
|
||||
|
@ -312,20 +389,50 @@
|
|||
"edt_conf_v4l2_cropTop_title": "Rognage haut",
|
||||
"edt_conf_v4l2_device_expl": "Le chemin d'accès à l'interface de capture d'image USB. Mettre en 'Automatique' pour la détection automatique. Exemple : '/dev/video0'",
|
||||
"edt_conf_v4l2_device_title": "Appareil",
|
||||
"edt_conf_v4l2_encoding_title": "Format d'encodage",
|
||||
"edt_conf_v4l2_flip_expl": "Cela permet de retourner l'image horizontalement, verticalement ou les deux.",
|
||||
"edt_conf_v4l2_flip_title": "Retourner Image",
|
||||
"edt_conf_v4l2_fpsSoftwareDecimation_title": "Saut d'images logiciel",
|
||||
"edt_conf_v4l2_framerate_expl": "Nombre d'images par secondes supporté par le périphérique actif",
|
||||
"edt_conf_v4l2_framerate_title": "Images par seconde",
|
||||
"edt_conf_v4l2_greenSignalThreshold_expl": "Assombrie les valeurs vertes faibles (reconnues comme noires)",
|
||||
"edt_conf_v4l2_greenSignalThreshold_title": "Seuil de signal vert",
|
||||
"edt_conf_v4l2_hardware_brightness_expl": "Définie la luminosité matérielle",
|
||||
"edt_conf_v4l2_hardware_brightness_title": "Contrôle matériel de la luminosité",
|
||||
"edt_conf_v4l2_hardware_contrast_expl": "Définie le contraste matériel",
|
||||
"edt_conf_v4l2_hardware_contrast_title": "Contrôle le contraste matériel",
|
||||
"edt_conf_v4l2_hardware_hue_expl": "Définie le hue matériel",
|
||||
"edt_conf_v4l2_hardware_hue_title": "Contrôle matériel de la teinte",
|
||||
"edt_conf_v4l2_hardware_saturation_expl": "Définie la saturation matérielle",
|
||||
"edt_conf_v4l2_hardware_saturation_title": "Contrôle la saturation matériel",
|
||||
"edt_conf_v4l2_heading_title": "Capture USB",
|
||||
"edt_conf_v4l2_input_title": "Entrée",
|
||||
"edt_conf_v4l2_redSignalThreshold_expl": "Assombrie les valeurs rouges faibles (reconnues comme noires)",
|
||||
"edt_conf_v4l2_redSignalThreshold_title": "Seuil de signal rouge",
|
||||
"edt_conf_v4l2_resolution_expl": "Liste des résolutions supportées pour le périphérique actif",
|
||||
"edt_conf_v4l2_resolution_title": "Résolution de l'appareil",
|
||||
"edt_conf_v4l2_sDHOffsetMax_expl": "Zone horizontale maximale pour la détection de signal (0.0 - 1.0)",
|
||||
"edt_conf_v4l2_sDHOffsetMax_title": "Détection de signal Hmax",
|
||||
"edt_conf_v4l2_sDHOffsetMin_expl": "Zone horizontale minimale pour la détection de signal (0.0 - 1.0)",
|
||||
"edt_conf_v4l2_sDHOffsetMin_title": "Détection de signal HMin",
|
||||
"edt_conf_v4l2_sDVOffsetMax_expl": "Zone verticale maximale pour la détection de signal (0.0 - 1.0)",
|
||||
"edt_conf_v4l2_sDVOffsetMax_title": "Détection de signal VMax",
|
||||
"edt_conf_v4l2_sDVOffsetMin_expl": "Zone verticale minimale pour la détection de signal (0.0 - 1.0)",
|
||||
"edt_conf_v4l2_sDVOffsetMin_title": "Détection de signal VMin",
|
||||
"edt_conf_v4l2_signalDetection_expl": "Si activé, la capture USB sera temporairement désactivé lorsque aucun signal n'est détecté. Cela correspond à une perte d'image inférieure au seuil pendant au moins 4 secondes.",
|
||||
"edt_conf_v4l2_signalDetection_title": "Détection du signal",
|
||||
"edt_conf_v4l2_sizeDecimation_expl": "Le rapport de taille de la décimation. 1 signifie aucune décimation (conserve la taille originale)",
|
||||
"edt_conf_v4l2_sizeDecimation_title": "Taille de la décimation",
|
||||
"edt_conf_v4l2_standard_expl": "Sélectionner le standard vidéo de votre région. 'Automatique' garde les valeurs choisie par l'interface v4l2.",
|
||||
"edt_conf_v4l2_standard_title": "Standart Vidéo",
|
||||
"edt_conf_webc_crtPath_expl": "Chemin vers le certificat (doit être au format PEM)",
|
||||
"edt_conf_webc_crtPath_title": "Chemin du certificat",
|
||||
"edt_conf_webc_docroot_expl": "Chemin racine local des interfaces web (uniquement pour le développement de WebUI)",
|
||||
"edt_conf_webc_docroot_title": "Document racine",
|
||||
"edt_conf_webc_heading_title": "Configuration web",
|
||||
"edt_conf_webc_keyPassPhrase_expl": "Optionnel : La clé peut être protégée par un mot de passe",
|
||||
"edt_conf_webc_keyPassPhrase_title": "Mot de passe de clé",
|
||||
"edt_conf_webc_keyPath_expl": "Chemin vers la clé (doit être au format PEM, chiffrée avec RSA)",
|
||||
"edt_conf_webc_keyPath_title": "Chemin de clé privée",
|
||||
"edt_conf_webc_sslport_expl": "Port HTTPS du serveur web",
|
||||
"edt_conf_webc_sslport_title": "Port HTTPS",
|
||||
|
@ -334,30 +441,44 @@
|
|||
"edt_dev_enum_sub_min_warm_adjust": "Soustraire le blanc chaud",
|
||||
"edt_dev_enum_subtract_minimum": "Soustraire le minimum",
|
||||
"edt_dev_enum_white_off": "Blanc cassé",
|
||||
"edt_dev_general_colorOrder_title": "Ordre des octets RVB",
|
||||
"edt_dev_general_hardwareLedCount_title": "Nombre de Leds physiques",
|
||||
"edt_dev_general_autostart_title": "Démarrage automatique",
|
||||
"edt_dev_general_autostart_title_info": "Allumage du périphérique LED durant le démarrage ou non",
|
||||
"edt_dev_general_colorOrder_title": "Ordre des octets RGB",
|
||||
"edt_dev_general_enableAttemptsInterval_title": "Intervalle de relance",
|
||||
"edt_dev_general_enableAttemptsInterval_title_info": "Intervalle entre deux tentatives de connexions.",
|
||||
"edt_dev_general_enableAttempts_title": "Tentatives de connexion",
|
||||
"edt_dev_general_enableAttempts_title_info": "Nombre de tentatives de connexion au périphérique avant d'être en erreur.",
|
||||
"edt_dev_general_hardwareLedCount_title": "Nombre de LED physiques",
|
||||
"edt_dev_general_hardwareLedCount_title_info": "Nombre de LEDs physique pour le périphérique sélectionné",
|
||||
"edt_dev_general_heading_title": "Réglages générals",
|
||||
"edt_dev_general_name_title": "Nom de la configuration",
|
||||
"edt_dev_general_rewriteTime_title": "Temps de rafraichissement",
|
||||
"edt_dev_spec_FCledToOn_title": "Les Led fade candy sont allumées",
|
||||
"edt_dev_spec_FCmanualControl_title": "Contrôle manuel des led fade candy",
|
||||
"edt_dev_spec_FCsetConfig_title": "Paramétrer fade candy",
|
||||
"edt_dev_spec_FCledToOn_title": "Les LED fadecandy sont allumées",
|
||||
"edt_dev_spec_FCmanualControl_title": "Contrôle manuel des LED fadecandy",
|
||||
"edt_dev_spec_FCsetConfig_title": "Paramétrer fadecandy",
|
||||
"edt_dev_spec_LBap102Mode_title": "LightBerry APA102 Mode",
|
||||
"edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo",
|
||||
"edt_dev_spec_baudrate_title": "Baudrate",
|
||||
"edt_dev_spec_baudrate_title": "Vitesse de transmission",
|
||||
"edt_dev_spec_brightnessFactor_title": "Facteur de luminosité",
|
||||
"edt_dev_spec_brightnessMax_title": "Luminosité maximum",
|
||||
"edt_dev_spec_brightnessMin_title": "Luminosité mininum",
|
||||
"edt_dev_spec_brightnessMax_title": "Luminosité maximale",
|
||||
"edt_dev_spec_brightnessMin_title": "Luminosité minimale",
|
||||
"edt_dev_spec_brightnessOverwrite_title": "Ecraser luminosité",
|
||||
"edt_dev_spec_brightness_title": "Luminosité",
|
||||
"edt_dev_spec_candyGamma_title": "Mode 'bougie' (double correction gamma)",
|
||||
"edt_dev_spec_cid_title": "CID",
|
||||
"edt_dev_spec_clientKey_title": "Clé client",
|
||||
"edt_dev_spec_colorComponent_title": "Composant de coulour",
|
||||
"edt_dev_spec_debugLevel_title": "Niveau de debogage",
|
||||
"edt_dev_spec_delayAfterConnect_title": "Retard après connexion",
|
||||
"edt_dev_spec_devices_discovered_none": "Aucun périphérique trouvé",
|
||||
"edt_dev_spec_devices_discovered_title": "Périphériques trouvés",
|
||||
"edt_dev_spec_dithering_title": "Distribution",
|
||||
"edt_dev_spec_dmaNumber_title": "Canal DMA",
|
||||
"edt_dev_spec_gamma_title": "Gamma",
|
||||
"edt_dev_spec_gpioBcm_title": "Pin GPIO",
|
||||
"edt_dev_spec_gpioMap_title": "Correspondance GPIO",
|
||||
"edt_dev_spec_gpioNumber_title": "Numéro GPIO",
|
||||
"edt_dev_spec_groupId_title": "ID de groupe",
|
||||
"edt_dev_spec_header_title": "Configuration spécifique",
|
||||
"edt_dev_spec_interpolation_title": "Interpolation",
|
||||
"edt_dev_spec_intervall_title": "Interval",
|
||||
|
@ -366,7 +487,7 @@
|
|||
"edt_dev_spec_ledIndex_title": "Index de led",
|
||||
"edt_dev_spec_ledType_title": "Type de LED",
|
||||
"edt_dev_spec_lightid_itemtitle": "ID",
|
||||
"edt_dev_spec_lightid_title": "ID(s) Lumière",
|
||||
"edt_dev_spec_lightid_title": "ID(s) des lumières",
|
||||
"edt_dev_spec_lights_itemtitle": "Lumière",
|
||||
"edt_dev_spec_lights_name": "Nom",
|
||||
"edt_dev_spec_lights_title": "Lumière(s)",
|
||||
|
@ -379,10 +500,16 @@
|
|||
"edt_dev_spec_order_left_right_title": "2.",
|
||||
"edt_dev_spec_order_top_down_title": "1.",
|
||||
"edt_dev_spec_outputPath_title": "Chemin de sortie",
|
||||
"edt_dev_spec_panelorganisation_title": "Panneau de séquence de numérotation",
|
||||
"edt_dev_spec_pid_title": "PID",
|
||||
"edt_dev_spec_port_expl": "Port de service [1-65535]",
|
||||
"edt_dev_spec_port_title": "Port",
|
||||
"edt_dev_spec_printTimeStamp_title": "Ajouter un horodatage",
|
||||
"edt_dev_spec_pwmChannel_title": "Canal PWM",
|
||||
"edt_dev_spec_restoreOriginalState_title": "Restaurer l'état des lumières",
|
||||
"edt_dev_spec_serial_title": "Numéro de série",
|
||||
"edt_dev_spec_spipath_title": "chemin SPI",
|
||||
"edt_dev_spec_spipath_title": "Chemin SPI",
|
||||
"edt_dev_spec_stream_protocol_title": "Protocole de diffusion",
|
||||
"edt_dev_spec_switchOffOnBlack_title": "Éteindre avec le noir",
|
||||
"edt_dev_spec_targetIpHost_title": "IP/nom d'hôte cible",
|
||||
"edt_dev_spec_targetIp_title": "IP cible",
|
||||
|
@ -393,11 +520,17 @@
|
|||
"edt_dev_spec_useOrbSmoothing_title": "Utiliser le lissage orb",
|
||||
"edt_dev_spec_useRgbwProtocol_title": "Utiliser le protocole RGBW",
|
||||
"edt_dev_spec_username_title": "Nom d'utilisateur",
|
||||
"edt_dev_spec_verbose_title": "Tracer toutes les commandes Hue",
|
||||
"edt_dev_spec_vid_title": "VID",
|
||||
"edt_dev_spec_whiteLedAlgor_title": "Algorithme LED Blanche",
|
||||
"edt_dev_spec_whitepoint_title": "Point blanc",
|
||||
"edt_eff_alarmcolor": "Couleur d'alarme",
|
||||
"edt_eff_backgroundColor": "Couleur d'arrière plan",
|
||||
"edt_eff_basecolorchange": "Couleur de base",
|
||||
"edt_eff_basecolorchangerate": "Taux du changement de couleur",
|
||||
"edt_eff_basecolorrangeleft": "Plage inférieur du CC",
|
||||
"edt_eff_basecolorrangeright": "Plage supérieur du CC",
|
||||
"edt_eff_blobcount": "Nombre de gouttes",
|
||||
"edt_eff_brightness": "Luminosité",
|
||||
"edt_eff_candle_header": "Bougies",
|
||||
"edt_eff_candle_header_desc": "Bougies chatoyantes",
|
||||
|
@ -407,6 +540,7 @@
|
|||
"edt_eff_colorHour": "Couleur des heures",
|
||||
"edt_eff_colorMarker": "Couleur de marqueur",
|
||||
"edt_eff_colorMinute": "Couleur des minutes",
|
||||
"edt_eff_colorcount": "longueur de couleur",
|
||||
"edt_eff_colorend": "Couleur de fin",
|
||||
"edt_eff_colorendtime": "Temps de maintien de la couleur de début",
|
||||
"edt_eff_colorevel": "Niveau de couleur",
|
||||
|
@ -419,24 +553,34 @@
|
|||
"edt_eff_count": "Nombre",
|
||||
"edt_eff_countries": "Pays",
|
||||
"edt_eff_customColor": "Couleur personnalisée",
|
||||
"edt_eff_enableSecondSwirl": "Deuxième tourbillon",
|
||||
"edt_eff_enum_all": "Tous",
|
||||
"edt_eff_enum_all-together": "Tous ensemble",
|
||||
"edt_eff_enum_list": "List des LED",
|
||||
"edt_eff_enum_list": "Liste des LED",
|
||||
"edt_eff_fade_header": "Fondu",
|
||||
"edt_eff_fade_header_desc": "Fondu de couleurs",
|
||||
"edt_eff_fadefactor": "Multiplicateur du fondu",
|
||||
"edt_eff_fadeintime": "Temps de fondu d'entrée",
|
||||
"edt_eff_fadeouttime": "Temps de fondu de sortie",
|
||||
"edt_eff_flag_header": "Drapeaux",
|
||||
"edt_eff_flag_header_desc": "Vos LED arboreront les couleurs de votre pays. Vous pouvez définir plusieurs drapeaux qui s'alterneront en fonction de l'intervalle défini.",
|
||||
"edt_eff_fps": "images par secondes",
|
||||
"edt_eff_frequency": "Fréquence",
|
||||
"edt_eff_gif_header": "GIF",
|
||||
"edt_eff_gif_header_desc": "Cet effet lit des fichiers .gif, fournit une simple boucle vidéo comme effet.",
|
||||
"edt_eff_grayscale": "Niveaux de gris",
|
||||
"edt_eff_height": "Hauteur",
|
||||
"edt_eff_huechange": "Changement de couleur",
|
||||
"edt_eff_image": "Image",
|
||||
"edt_eff_image_source": "Image source",
|
||||
"edt_eff_image_source_file": "Fichier local",
|
||||
"edt_eff_image_source_url": "URL",
|
||||
"edt_eff_interval": "Intervalle",
|
||||
"edt_eff_knightrider_header": "Chevalier",
|
||||
"edt_eff_knightrider_header_desc": "K.I.T.T est de retour ! Le scanner avant de la voiture, cette fois pas seulement en rouge.",
|
||||
"edt_eff_ledlist": "List de led",
|
||||
"edt_eff_ledlist": "Liste de LED",
|
||||
"edt_eff_ledtest_header": "Test LED",
|
||||
"edt_eff_ledtest_header_desc": "sortie tournante: rouge, verte, blanche, noire",
|
||||
"edt_eff_length": "Longueur",
|
||||
"edt_eff_lightclock_header": "Horloge lumineuse",
|
||||
"edt_eff_maintain_end_color": "Garder la couleur de fin",
|
||||
|
@ -446,8 +590,13 @@
|
|||
"edt_eff_markerWidth": "Largeur de marqueur",
|
||||
"edt_eff_max_len": "Longueur maximale",
|
||||
"edt_eff_min_len": "Longueur minimale",
|
||||
"edt_eff_moodblobs_header": "Gouttes relaxantes",
|
||||
"edt_eff_moodblobs_header_desc": "Détendez vous le soir avec des gouttes se déplaçant lentement et changeant de couleurs.",
|
||||
"edt_eff_offset": "Décalage",
|
||||
"edt_eff_pacman_header": "Pac-Man",
|
||||
"edt_eff_pacman_header_desc": "Petit, affamé et jaune. Qui survivra ?",
|
||||
"edt_eff_plasma_header": "Plasma",
|
||||
"edt_eff_plasma_header_desc": "Distortion coloriphique dans les différentes directions",
|
||||
"edt_eff_police_header": "Police",
|
||||
"edt_eff_police_header_desc": "Gyrophare de police",
|
||||
"edt_eff_rainbowmood_header": "Arc-en-ciel",
|
||||
|
@ -457,9 +606,11 @@
|
|||
"edt_eff_random_header_desc": "Pixel point, point, point",
|
||||
"edt_eff_repeat": "Répéter",
|
||||
"edt_eff_repeatcount": "Nombre de répétitions",
|
||||
"edt_eff_reverseRandomTime": "Inverser chaque",
|
||||
"edt_eff_reversedirection": "Direction inverse",
|
||||
"edt_eff_rotationtime": "Temps de rotation",
|
||||
"edt_eff_saturation": "Saturation",
|
||||
"edt_eff_showseconds": "Afficher les secondes",
|
||||
"edt_eff_sleeptime": "Temps de sommeil",
|
||||
"edt_eff_smooth_custom": "Activer le lissage",
|
||||
"edt_eff_smooth_time_ms": "Temps de lissage",
|
||||
|
@ -470,14 +621,17 @@
|
|||
"edt_eff_sparks_header_desc": "Étoile pétillante, Choisissez entre une couleur statique ou aléatoire. Vous pouvez également régler la luminosité, la saturation et la vitesse.",
|
||||
"edt_eff_speed": "Vitesse",
|
||||
"edt_eff_swirl_header": "Tourbillon de couleur",
|
||||
"edt_eff_swirl_header_desc": "Un tourbillon de couleurs personnalisées. Les couleurs sont réparties équitablement à 360°, le dégradé de couleur est automatiquement calculé. Vous pouvez également ajouter un deuxième tourbillon, il faudra cependant définir une transparence ! Conseil : l'utilisation de la même couleur permet d'obtenir une plus \"grande\" zone et réduit le dégradé.",
|
||||
"edt_eff_systemshutdown_header": "Arrêt système",
|
||||
"edt_eff_systemshutdown_header_desc": "Une courte animation imitant un arrêt système",
|
||||
"edt_eff_traces_header": "Trace de couleur",
|
||||
"edt_eff_traces_header_desc": "Nécessite une refonte",
|
||||
"edt_eff_trails_header": "Étoiles tombantes",
|
||||
"edt_eff_trails_header_desc": "Étoiles colorées qui tombent de haut en bas",
|
||||
"edt_eff_url": "Adresse de l'image",
|
||||
"edt_eff_waves_header": "Vagues",
|
||||
"edt_eff_waves_header_desc": "Vagues de couleurs ! Choisissez vos couleurs, le temps de rotation, la direction inverse et plus.",
|
||||
"edt_eff_whichleds": "Quelles LED",
|
||||
"edt_eff_whitelevel": "Niveau de blanc",
|
||||
"edt_eff_x-mas_header": "Noël",
|
||||
"edt_eff_x-mas_header_desc": "Touches de Noël",
|
||||
|
@ -486,7 +640,7 @@
|
|||
"edt_msg_button_delete_all": "Tout",
|
||||
"edt_msg_button_delete_all_title": "Supprimer tout",
|
||||
"edt_msg_button_delete_last": "Dernier $1",
|
||||
"edt_msg_button_delete_last_title": "Supprimer dernier $1",
|
||||
"edt_msg_button_delete_last_title": "Supprimer le dernier $1",
|
||||
"edt_msg_button_delete_row_title": "Supprimer $1",
|
||||
"edt_msg_button_delete_row_title_short": "Supprimer",
|
||||
"edt_msg_button_expand": "Agrandir",
|
||||
|
@ -536,6 +690,8 @@
|
|||
"general_btn_cancel": "Annuler",
|
||||
"general_btn_continue": "Continuer",
|
||||
"general_btn_delete": "Supprimer",
|
||||
"general_btn_denyAccess": "Révoquer l'accès",
|
||||
"general_btn_grantAccess": "Donner l'accès",
|
||||
"general_btn_iswitch": "Basculer",
|
||||
"general_btn_next": "Suivant",
|
||||
"general_btn_off": "Off",
|
||||
|
@ -545,10 +701,12 @@
|
|||
"general_btn_restarthyperion": "Redémarrer Hyperion",
|
||||
"general_btn_save": "Sauvegarder",
|
||||
"general_btn_saveandreload": "Sauvegarder et recharger",
|
||||
"general_btn_saverestart": "Enregistrer et redémarrer",
|
||||
"general_btn_start": "Démarrer",
|
||||
"general_btn_stop": "Arrêter",
|
||||
"general_btn_yes": "Oui",
|
||||
"general_button_savesettings": "Sauvegarder les réglages",
|
||||
"general_chars_needed": "Plus de caractères nécessaire",
|
||||
"general_col_blue": "bleu",
|
||||
"general_col_green": "vert",
|
||||
"general_col_red": "rouge",
|
||||
|
@ -556,34 +714,45 @@
|
|||
"general_comp_BOBLIGHTSERVER": "Serveur Boblight",
|
||||
"general_comp_FLATBUFSERVER": "Serveur Flatbuffers",
|
||||
"general_comp_FORWARDER": "Transfert",
|
||||
"general_comp_GRABBER": "Platforme de capture",
|
||||
"general_comp_GRABBER": "Capture d'écran",
|
||||
"general_comp_LEDDEVICE": "Périphérique LED",
|
||||
"general_comp_PROTOSERVER": "Serveur Protocolbuffers",
|
||||
"general_comp_PROTOSERVER": "Serveur Protocol Buffers",
|
||||
"general_comp_SMOOTHING": "Fondu",
|
||||
"general_comp_V4L": "Capture USB",
|
||||
"general_country_cn": "Chine",
|
||||
"general_country_de": "Allemagne",
|
||||
"general_country_es": "Espagne",
|
||||
"general_country_fr": "France",
|
||||
"general_country_it": "Italie",
|
||||
"general_country_nl": "Hollande",
|
||||
"general_country_nl": "Pays-Bas",
|
||||
"general_country_ru": "Russie",
|
||||
"general_country_uk": "Royaume-Uni",
|
||||
"general_country_us": "États-Unis",
|
||||
"general_disabled": "désactivé",
|
||||
"general_enabled": "activé",
|
||||
"general_speech_cs": "Tchèque",
|
||||
"general_speech_da": "Danois",
|
||||
"general_speech_de": "Allemand",
|
||||
"general_speech_en": "Anglais",
|
||||
"general_speech_es": "Espagnol",
|
||||
"general_speech_fr": "Français",
|
||||
"general_speech_hu": "Hongrois",
|
||||
"general_speech_it": "Italien",
|
||||
"general_speech_ja": "Japonais",
|
||||
"general_speech_nb": "Norvégien(Bokmål)",
|
||||
"general_speech_nl": "Néerlandais",
|
||||
"general_speech_pl": "Polonais",
|
||||
"general_speech_pt": "Portuguais",
|
||||
"general_speech_ro": "Roumain",
|
||||
"general_speech_ru": "Russe",
|
||||
"general_speech_sv": "Suédois",
|
||||
"general_speech_vi": "Vietnamien",
|
||||
"general_speech_zh-CN": "Chinois (simplifié)",
|
||||
"general_webui_title": "Hyperion - Configuration web",
|
||||
"general_wiki_moreto": "Plus d'informations à propos de \"$1\" sont disponible sur notre Wiki",
|
||||
"infoDialog_checklist_title": "Checklist !",
|
||||
"infoDialog_effconf_created_text": "L'effet \"$1\" a été correctement créé !",
|
||||
"infoDialog_effconf_deleted_text": "L'effet \"$1\" a été correctement supprimé !",
|
||||
"infoDialog_effconf_created_text": "L'effet \"$1\" a été créé !",
|
||||
"infoDialog_effconf_deleted_text": "L'effet \"$1\" a été supprimé !",
|
||||
"infoDialog_general_error_title": "Erreur",
|
||||
"infoDialog_general_success_title": "Succès",
|
||||
"infoDialog_general_warning_title": "Avertissement",
|
||||
|
@ -592,7 +761,11 @@
|
|||
"infoDialog_import_confirm_title": "Confirmation d'importation",
|
||||
"infoDialog_import_hyperror_text": "Le fichier de configuration \"$1\" ne peut pas être importé. Il n'est pas compatible avec Hyperion 2.0 ou supérieur !",
|
||||
"infoDialog_import_jsonerror_text": "Le fichier de configuration sélectionné \"$1\" n'est pas un fichier .json ou est corrompu. Message d'erreur : ($2)",
|
||||
"infoDialog_wizrgb_text": "L'ordre des octets RVB est déjà correctement défini.",
|
||||
"infoDialog_password_current_text": "Mot de passe actuel",
|
||||
"infoDialog_password_minimum_length": "le mot de passe doit faire 8 caractères au minimum. ",
|
||||
"infoDialog_password_new_text": "Nouveau mot de passe",
|
||||
"infoDialog_username_text": "Nom d'utilisateur",
|
||||
"infoDialog_wizrgb_text": "L'ordre des octets RGB est déjà correctement défini.",
|
||||
"infoDialog_writeconf_error_text": "Echec de sauvegarde de votre configuration.",
|
||||
"infoDialog_writeimage_error_text": "Le fichier sélectionné \"$1\" n'est pas une image ou est corrompu ! Veuillez sélectionner une autre image.",
|
||||
"info_404": "La page demandée n'est pas disponible !",
|
||||
|
@ -605,23 +778,24 @@
|
|||
"info_conlost_label_reload": "Arrêt de la reconnexion automatique - dépassement de limite, rafraîchissez la page ou cliquez ici.",
|
||||
"info_conlost_label_title": "Connexion au service Hyperion perdue !",
|
||||
"info_restart_contus": "Si vous êtes ici depuis plus de 20 secondes et vous ne savez pas pourquoi, ouvrez un nouveau sujet dans le forum du support SVP...",
|
||||
"info_restart_contusa": "... détaillant les dernières étapes à franchir. Merci !",
|
||||
"info_restart_contusa": "... détaillant les manipulations effectuées. Merci !",
|
||||
"info_restart_rightback": "Hyperion sera de retour rapidement !",
|
||||
"info_restart_title": "Redémarrage en cours...",
|
||||
"main_ledsim_btn_togglelednumber": "Nombre de LED",
|
||||
"main_ledsim_btn_toggleleds": "Montrer les LEDs",
|
||||
"main_ledsim_btn_toggleleds": "Montrer les LED",
|
||||
"main_ledsim_btn_togglelivevideo": "Vidéo temps réel",
|
||||
"main_ledsim_text": "Visualisation en temps réel des couleurs des LED et optionnellement, le flux vidéo actuel issu du périphérique de capture",
|
||||
"main_ledsim_title": "Visualisation LED",
|
||||
"main_menu_about_token": "À propos d'Hyperion",
|
||||
"main_menu_colors_conf_token": "Traitement d'image",
|
||||
"main_menu_configuration_token": "Configuration",
|
||||
"main_menu_configuration_token": "Configurations LED",
|
||||
"main_menu_dashboard_token": "Tableau de bord",
|
||||
"main_menu_effect_conf_token": "Effets",
|
||||
"main_menu_effectsconfigurator_token": "Configurateur d'effets",
|
||||
"main_menu_general_conf_token": "Général",
|
||||
"main_menu_grabber_conf_token": "Capture matérielle",
|
||||
"main_menu_input_selection_token": "Sélection de l'entrée",
|
||||
"main_menu_instcapture_conf_token": "Sources",
|
||||
"main_menu_leds_conf_token": "Matériel LED",
|
||||
"main_menu_logging_token": "Journal",
|
||||
"main_menu_network_conf_token": "Services réseaux",
|
||||
|
@ -633,7 +807,7 @@
|
|||
"remote_adjustment_intro": "Modifiez la couleur/la luminosité/la compensation durant l'exécution. $1",
|
||||
"remote_adjustment_label": "Ajustement des couleurs",
|
||||
"remote_color_button_reset": "Réinitialiser Couleur/Effet",
|
||||
"remote_color_intro": "Définissez un effet ou une couleur. Vous propres effets sont également répertoriés (si disponibles). $1",
|
||||
"remote_color_intro": "Définissez un effet ou une couleur. Vos propres effets sont également répertoriés (si disponibles). $1",
|
||||
"remote_color_label": "Couleurs/Effets",
|
||||
"remote_color_label_color": "Couleur : ",
|
||||
"remote_components_intro": "Activer et désactiver les composants d'Hyperion pendant l'exécution. $1",
|
||||
|
@ -642,7 +816,8 @@
|
|||
"remote_effects_label_picture": "Image :",
|
||||
"remote_input_clearall": "Effacer les effets/couleurs",
|
||||
"remote_input_duration": "Durée : ",
|
||||
"remote_input_ip": "IP: ",
|
||||
"remote_input_intro": "Hyperion utilise un système de priorité pour choisir une source. Tout ce que vous définissez à une priorité (Effets/Couleurs/Capture d'écran/Capture USB et sources réseau). Par défaut, Hyperion choisit les sources en fonction de leur priorité (le nombre le plus bas représente la source active). Vous pouvez choisir une source manuellement. $1",
|
||||
"remote_input_ip": "IP : ",
|
||||
"remote_input_label": "Sélection de la source",
|
||||
"remote_input_label_autoselect": "Sélection automatique",
|
||||
"remote_input_origin": "Origine",
|
||||
|
@ -652,11 +827,12 @@
|
|||
"remote_input_sourceactiv_btn": "Source Active",
|
||||
"remote_input_status": "Etat/Action",
|
||||
"remote_losthint": "Note : Toutes les modifications seront perdues après redémarrage.",
|
||||
"remote_maptype_intro": "Habituellement, la disposition des LED est responsable de la définition de la zone d'image affichée par les LED, vous pouvez la modifier ici.",
|
||||
"remote_maptype_intro": "Habituellement, la disposition des LED définit quelle LED est en charge d'une partie de l'image. Vous pouvez la modifier ici : $1.",
|
||||
"remote_maptype_label": "Type de correspondance",
|
||||
"remote_maptype_label_multicolor_mean": "Multicolore",
|
||||
"remote_maptype_label_unicolor_mean": "Unicolore",
|
||||
"remote_optgroup_syseffets": "Effets fournis",
|
||||
"remote_optgroup_templates_system": "Modèles Système",
|
||||
"remote_optgroup_usreffets": "Effets utilisateur",
|
||||
"remote_videoMode_2D": "2D",
|
||||
"remote_videoMode_3DSBS": "3DSBS",
|
||||
|
@ -665,7 +841,7 @@
|
|||
"remote_videoMode_label": "Mode vidéo",
|
||||
"support_label_affinstr1": "Cliquez sur le lien associé à votre pays",
|
||||
"support_label_affinstr2": "Peu importe la quantité achetée, cela nous permet de toucher une petite commission en fonction du montant total",
|
||||
"support_label_affinstr3": "Vous payez TOUJOURS le même prix, il n'y a pas de différences. Essayez ! ",
|
||||
"support_label_affinstr3": "Vous payez TOUJOURS le même prix, il n'y a pas de différences. Essayez !",
|
||||
"support_label_btctext": "Adresse : ",
|
||||
"support_label_donate": "Faites un don ou utilisez nos liens d'affiliation",
|
||||
"support_label_donationpp": "Don : ",
|
||||
|
@ -687,12 +863,14 @@
|
|||
"support_label_yttext": "Lassé des images ? Découvrez notre chaîne YouTube !",
|
||||
"update_button_changelog": "Changelog complet",
|
||||
"update_button_install": "Installation",
|
||||
"update_error_getting_versions": "Nous avons eu des problèmes pour déterminer la dernière version disponible.",
|
||||
"update_error_getting_versions": "Nous n'avons pas pu déterminer la dernière version disponible.",
|
||||
"update_label_description": "Description :",
|
||||
"update_label_intro": "Présentation de toutes les versions d'Hyperion disponibles. De plus, vous pouvez mettre à jour ou rétrograder votre version d'Hyperion à tout moment. Trié du plus récent au plus ancien",
|
||||
"update_label_type": "Type :",
|
||||
"update_no_updates_for_branch": "Pas de mise à jour pour le canal sélectionné.",
|
||||
"update_versreminder": "Votre version : $1",
|
||||
"wiz_cc_adjustgamma": "Gamma : Vous devez ici ajuster le niveau de gamma de chaque canal afin d'obtenir le même niveau. Conseil : Neutre est égal à 1.0 ! Par exemple, si votre Gris est un peu rougeâtre, cela signifie que vous devez augmenter le gamma du rouge pour réduire son effet (plus le gamma est élevé, plus la couleur sera absente).",
|
||||
"wiz_cc_adjustit": "Ajuster votre \"$1\" jusqu'à obtenir l'effet désiré. Attention : plus vous vous éloignez des valeur par défaut, plus la plage de couleur sera limité (s'applique aux couleurs intermédiaires). Les résultats peuvent variés en fonction de votre TV/plage de couleur de vos LED.",
|
||||
"wiz_cc_btn_stop": "Arrêter la vidéo",
|
||||
"wiz_cc_btn_switchpic": "Changer d'image",
|
||||
"wiz_cc_chooseid": "Donner un nom à ce profil de couleurs.",
|
||||
|
@ -702,43 +880,53 @@
|
|||
"wiz_cc_kodidisconlink": "Télécharger les images des liens : ",
|
||||
"wiz_cc_kodimsg_start": "Test validé - Il est temps de continuer !",
|
||||
"wiz_cc_kodishould": "Kodi devrait montrer cette image : $1",
|
||||
"wiz_cc_kwebs": "Serveur web Kodi (IP:Port)",
|
||||
"wiz_cc_kwebs": "Serveur web Kodi (Nom d'hôte ou IP)",
|
||||
"wiz_cc_lettvshow": "Afficher sur votre TV cette image : $1",
|
||||
"wiz_cc_lettvshowm": "Vérifier avec ces images : $1",
|
||||
"wiz_cc_link": "Cliquez moi !",
|
||||
"wiz_cc_morethanone": "Vous avez plusieurs profils, sélectionnez le profil que vous souhaitez configurer.",
|
||||
"wiz_cc_testintro": "Il est temps de faire un vrai test",
|
||||
"wiz_cc_summary": "Le résumé de vos réglages. Lors de la lecture d'une vidéo, vous pouvez modifier ou tester les nouvelles valeurs. Si vous êtes satisfait du résultat, cliquez sur Sauvegarder.",
|
||||
"wiz_cc_testintro": "Il est temps de faire un vrai test !",
|
||||
"wiz_cc_testintrok": "Cliquer sur le bouton ci-dessous pour démarrer un test vidéo.",
|
||||
"wiz_cc_testintrowok": "Consultez le lien suivant pour télécharger des vidéos de test : ",
|
||||
"wiz_cc_title": "Assistant de calibration des couleurs",
|
||||
"wiz_cc_try_connect": "Connexion en cours...",
|
||||
"wiz_cololight_noprops": "Récupération des propriétés du périphérique impossible. Définissez manuellement le nombre de LED physiques",
|
||||
"wiz_guideyou": "Le $1 vous guidera à travers les réglages. Cliquez sur le bouton !",
|
||||
"wiz_hue_blinkblue": "Laissez ID $1 s'allumer en bleu",
|
||||
"wiz_hue_clientkey": "Clé Client :",
|
||||
"wiz_hue_create_user": "Créer un nouvel utilisateur",
|
||||
"wiz_hue_desc1": "Il recherche automatiquement un Hue Bridge, au cas où il n'en trouverait pas, vous devez fournir l'adresse IP et appuyer sur le bouton actualiser à droite. Maintenant, vous avez besoin d'un ID utilisateur, si vous n'en avez pas, créez-en un nouveau.",
|
||||
"wiz_hue_desc2": "Choisissez maintenant les lampes à ajouter. La position attribue la lampe à une position spécifique sur votre \"image\". Les lampes désactivées ne seront pas ajoutées. Pour identifier des lampes individuelles, appuyez sur le bouton à droite.",
|
||||
"wiz_hue_e_create_user": "Créer un nouvel utilisateur et clé cliente",
|
||||
"wiz_hue_e_desc2": "Choisissez votre groupe de divertissement, celui qui a toutes les lumières pour l'utiliser avec Hyperion",
|
||||
"wiz_hue_e_noegrpids": "Aucun groupe de divertissement Hue défini",
|
||||
"wiz_hue_e_nogrpids": "Ce pont Hue n'a aucun groupe défini, veuillez en créer au moins un au préalable avec l'application Hue",
|
||||
"wiz_hue_e_use_group": "Utiliser Groupe",
|
||||
"wiz_hue_e_use_groupid": "Utiliser groupe ID $1",
|
||||
"wiz_hue_failure_connection": "Le délai a expiré : Appuyez sur le bouton du Bridge dans les 30 secondes.",
|
||||
"wiz_hue_failure_ip": "Pas de Bridge trouvé, tapez une IP valide",
|
||||
"wiz_hue_failure_user": "Utilisateur inconnu, créez un nouvel utilisateur en cliquant sur le bouton si dessous ou saisissez un identifiant valide et cliquez sur le symbole de rechargement",
|
||||
"wiz_hue_intro1": "Cet assistant configure Hyperion pour le système Philips Hue. Les fonctionnalités sont la détection automatique de Hue Bridge, la création d'utilisateurs, réglage de chaque lumière à une position spécifique sur votre image ou sa déactivation et le réglage automatique des paramètres Hyperion ! Donc en bref: il vous suffit de quelques clics et vous avez terminé !",
|
||||
"wiz_hue_ip": "IP Hue Bridge :",
|
||||
"wiz_hue_ip": "IP Hue Bridge : ",
|
||||
"wiz_hue_noids": "Ce pont Hue n'a pas d'ampoules/bandeau, veuillez les coupler avant avec les applications Hue",
|
||||
"wiz_hue_press_link": "Appuyez sur le bouton de votre pont Philips Hue.",
|
||||
"wiz_hue_searchb": "Recherche d'un pont Philips Hue...",
|
||||
"wiz_hue_press_link": "Appuyez sur le bouton de votre Hue Bridge.",
|
||||
"wiz_hue_searchb": "Recherche d'un pont...",
|
||||
"wiz_hue_title": "Assistant de configuration Philips Hue",
|
||||
"wiz_hue_username": "ID utilisateur : ",
|
||||
"wiz_identify": "Identifié",
|
||||
"wiz_identify_light": "Identifié $1",
|
||||
"wiz_ids_disabled": "Désactivé",
|
||||
"wiz_ids_entire": "Image entière",
|
||||
"wiz_noLights": "Pas de $1 trouvé! Veuillez connecter les lumières au réseau ou configurez les manuellement.",
|
||||
"wiz_pos": "Position/État",
|
||||
"wiz_rgb_expl": "Le point coloré change de couleur (rouge, vert) toutes les x secondes, en même temps que vos LEDs passent à cette couleur. Répondez aux questions en bas pour vérifier/corriger votre ordre d'octets.",
|
||||
"wiz_rgb_intro1": "Cet assistant vous guidera à travers le processus de recherche de l'ordre des couleurs correct pour vos leds. Cliquez sur continuer pour commencer.",
|
||||
"wiz_rgb_intro2": "Quand avez-vous besoin de cet assistant? Exemple : vous définissez la couleur rouge, mais vous obtenez du vert ou du bleu. Vous pouvez également l'utiliser pour la première configuration.",
|
||||
"wiz_rgb_q": "Quelle couleur affiche votre configuration, lorsque le point coloré ci-dessus s'affiche ...",
|
||||
"wiz_rgb_q": "Quelle couleur affiche votre configuration, lorsque le point coloré ci-dessus est ...",
|
||||
"wiz_rgb_qgend": "...vert ?",
|
||||
"wiz_rgb_qrend": "...red ?",
|
||||
"wiz_rgb_switchevery": "Changer de couleur tous les...",
|
||||
"wiz_rgb_qrend": "...rouge ?",
|
||||
"wiz_rgb_switchevery": "Changer de couleur toutes les...",
|
||||
"wiz_rgb_title": "Assistant de configuration d'ordre des octets RVB",
|
||||
"wiz_wizavail": "Assistant de configuration disponible",
|
||||
"wiz_yeelight_unsupported": "Non supporté"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,6 +5,8 @@
|
|||
"InfoDialog_changePassword_title": "Cambia Password",
|
||||
"InfoDialog_iswitch_text": "Se esegui più di un Hyperion nella tua rete locale puoi passare tra configurazioni web. Seleziona l'istanza di Hyperion qui sotto e cambia!",
|
||||
"InfoDialog_iswitch_title": "Cambia Hyperion",
|
||||
"InfoDialog_nostorage_text": "Il tuo browser non supporta localStorage. Non è possibile salvare un'impostazione di lingua specifica (fallback su \"rilevamento automatico\") e livello di accesso (fallback su \"predefinito\"). Alcuni maghi potrebbero essere nascosti. Puoi ancora utilizzare l'interfaccia web senza ulteriori problemi",
|
||||
"InfoDialog_nostorage_title": "Impossibile memorizzare le impostazioni",
|
||||
"InfoDialog_nowrite_foottext": "WebUI sarà sbloccata automaticamente appena avrai risolto il problema!",
|
||||
"InfoDialog_nowrite_text": "Hyperion non può scrivere sull'attuale file di configurazione caricato. Riparare i permessi del file per procedere",
|
||||
"InfoDialog_nowrite_title": "errore dei permessi di scrittura!",
|
||||
|
@ -40,14 +42,29 @@
|
|||
"conf_general_intro": "Impostazioni base di Hyperion e WebUI che non rientrano in altre categorie.",
|
||||
"conf_general_label_title": "Impostazioni generali",
|
||||
"conf_grabber_fg_intro": "Cattura di sistema usa la cattura locale del sistema su cui è installato Hyperion come sorgente di input.",
|
||||
"conf_grabber_inst_grabber_config_info": "Configura in anticipo i dispositivi hardware di acquisizione in modo che vengano utilizzati dall'istanza",
|
||||
"conf_grabber_v4l_intro": "Cattura USB è un dispositivo (di cattura) connesso via USB usato come sorgente di immagini per l'elaborazione.",
|
||||
"conf_helptable_expl": "Spiegazione",
|
||||
"conf_helptable_option": "Opzioni",
|
||||
"conf_leds_config_error": "Errore nella configurazione del layout LED/LED",
|
||||
"conf_leds_config_warning": "Controlla la configurazione del layout LED/LED",
|
||||
"conf_leds_contr_label_contrtype": "Tipo di Controller",
|
||||
"conf_leds_device_info_log": "Nel caso in cui i tuoi LED non funzionino, controlla qui per gli errori:",
|
||||
"conf_leds_device_intro": "Hyperion supporta molti controller per trasmettere dati al tuo dispositivo. Seleziona un controller LED dalla lista e configuralo. Abbiamo scelto le impostazioni di default migliori per ogni dispositivo.",
|
||||
"conf_leds_error_get_properties_text": "Impossibile ottenere le proprietà del dispositivo. Si prega di controllare gli elementi di configurazione.",
|
||||
"conf_leds_error_get_properties_title": "Proprietà del dispositivo",
|
||||
"conf_leds_error_hwled_gt_layout": "Il conteggio dei LED hardware ($1) è maggiore dei LED configurati tramite layout ($2),<br>$3 {{plural:$3|LED|LED}} rimarranno neri se continui.",
|
||||
"conf_leds_error_hwled_gt_maxled": "Il numero di LED hardware ($ 1) è superiore al numero massimo di LED supportati dal dispositivo ($ 2). <br> Il conteggio dei LED hardware è impostato su ($ 3)",
|
||||
"conf_leds_error_hwled_lt_layout": "Il numero di LED hardware ($ 1) è inferiore ai LED configurati tramite layout ($ 2). <br> Il numero di LED configurati nel layout non deve superare i LED disponibili",
|
||||
"conf_leds_info_ws281x": "Hyperion deve essere eseguito con privilegi di 'root' per questo tipo di controller!",
|
||||
"conf_leds_layout_advanced": "Impostazioni Avanzate",
|
||||
"conf_leds_layout_blacklist_num_title": "Numero di LEDs",
|
||||
"conf_leds_layout_blacklist_rule_title": "Regole della lista nera",
|
||||
"conf_leds_layout_blacklist_rules_title": "Regole delle liste nere",
|
||||
"conf_leds_layout_blacklist_start_title": "LED Iniziale",
|
||||
"conf_leds_layout_blacklistleds_title": "I LED della lista nera",
|
||||
"conf_leds_layout_btn_checklist": "Mostra lista",
|
||||
"conf_leds_layout_btn_keystone": "Correzione trapezoidale",
|
||||
"conf_leds_layout_button_savelay": "Salva Layout",
|
||||
"conf_leds_layout_button_updsim": "Aggiorna Anteprima",
|
||||
"conf_leds_layout_checkp1": "Il led nero è il tuo primo led, il primo led è il punto in cui c'è l'input del segnale dati",
|
||||
|
@ -67,6 +84,16 @@
|
|||
"conf_leds_layout_cl_leftbottom": "Sinistra 0% - 100% Sotto",
|
||||
"conf_leds_layout_cl_leftmiddle": "Sinistra 0% - 75% Centro",
|
||||
"conf_leds_layout_cl_lefttop": "Sinistra 0% - 50% Sopra",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft11": "In basso: 75 - 100% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft112": "In basso: 0 - 50% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft12": "In basso: 25 - 50% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft121": "In basso: 50 - 100% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft14": "In basso: 0 - 25% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft34": "In basso: 50 - 75% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosBottomLeftNewMid": "In basso: 25 - 75% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosTopLeft112": "In alto: 0 - 50% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosTopLeft121": "In alto: 50 - 100% da sinistra",
|
||||
"conf_leds_layout_cl_lightPosTopLeftNewMid": "In alto: 25 - 75% da sinistra",
|
||||
"conf_leds_layout_cl_overlap": "Overlap",
|
||||
"conf_leds_layout_cl_reversdir": "Inverti direzione",
|
||||
"conf_leds_layout_cl_right": "Destra",
|
||||
|
@ -81,6 +108,7 @@
|
|||
"conf_leds_layout_generatedconf": "Configurazione LED Generata/Attuale",
|
||||
"conf_leds_layout_intro": "è necessario anche un layout dei led che rifletta la disposizione dei tuoi led. Il layout classico è il comune bordo della tv, ma supportiamo anche la creazione di matrici led (parete led). La visuale sul layout è SEMPRE DI FRONTE alla TV.",
|
||||
"conf_leds_layout_ma_cabling": "Cablaggio",
|
||||
"conf_leds_layout_ma_direction": "Direzione",
|
||||
"conf_leds_layout_ma_horiz": "Orizzontale",
|
||||
"conf_leds_layout_ma_optbottomleft": "Basso a sinistra",
|
||||
"conf_leds_layout_ma_optbottomright": "Basso a destra",
|
||||
|
@ -112,17 +140,21 @@
|
|||
"conf_leds_layout_textf1": "Questo campo testo mostra di default il layout attualmente caricato e viene sovrascritto se ne generi uno nuovo con le opzioni sopra. Se vuoi puoi fare ulteriori modifiche.",
|
||||
"conf_leds_nav_label_ledcontroller": "Controller LED",
|
||||
"conf_leds_nav_label_ledlayout": "Layout LED",
|
||||
"conf_leds_note_layout_overwrite": "Nota: Overwrite crea un layout predefinito per {{plural:$1| un LED| tutti i LED $1}} dati dal conteggio dei LED hardware",
|
||||
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
|
||||
"conf_leds_optgroup_RPiPWM": "RPi PWM",
|
||||
"conf_leds_optgroup_RPiSPI": "RPi SPI",
|
||||
"conf_leds_optgroup_debug": "Debug",
|
||||
"conf_leds_optgroup_network": "Rete",
|
||||
"conf_leds_optgroup_other": "Altro",
|
||||
"conf_leds_optgroup_usb": "USB/Seriale",
|
||||
"conf_logging_btn_autoscroll": "Auto scrolling",
|
||||
"conf_logging_btn_clipboard": "Copia nel registro Appunti",
|
||||
"conf_logging_btn_pbupload": "Invia segnalazione per richieste di supporto",
|
||||
"conf_logging_contpolicy": "Policy per la Privacy delle segnalazioni",
|
||||
"conf_logging_label_intro": "Area per controllare i messaggi di log, a seconda dell'impostazione di loglevel vedrai più o meno informazioni.",
|
||||
"conf_logging_lastreports": "Segnalazioni precedenti",
|
||||
"conf_logging_logoutput": "Log output",
|
||||
"conf_logging_nomessage": "Nessun messaggio di log disponibile.",
|
||||
"conf_logging_report": "Segnala",
|
||||
"conf_logging_uplfailed": "Upload fallito! Controlla la tua connessione a internet!",
|
||||
|
@ -163,7 +195,12 @@
|
|||
"dashboard_infobox_label_instance": "Istanza:",
|
||||
"dashboard_infobox_label_latesthyp": "L'ultima versione di Hyperion:",
|
||||
"dashboard_infobox_label_platform": "Piattaforma:",
|
||||
"dashboard_infobox_label_port_boblight": "Server Boblight:",
|
||||
"dashboard_infobox_label_port_flat": "Flatbuffer:",
|
||||
"dashboard_infobox_label_port_json": "JSON-Server:",
|
||||
"dashboard_infobox_label_port_proto": "Protobuffer:",
|
||||
"dashboard_infobox_label_ports": "Porte",
|
||||
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
|
||||
"dashboard_infobox_label_smartacc": "Accesso Smart",
|
||||
"dashboard_infobox_label_statush": "Status Hyperion:",
|
||||
"dashboard_infobox_label_title": "Informazioni",
|
||||
|
@ -181,6 +218,7 @@
|
|||
"dashboard_newsbox_readmore": "Leggi ancora",
|
||||
"dashboard_newsbox_visitblog": "Visita Hyperion-Blog",
|
||||
"edt_append_degree": "°",
|
||||
"edt_append_frames": "frames",
|
||||
"edt_append_hz": "Hz",
|
||||
"edt_append_leds": "LEDs",
|
||||
"edt_append_ms": "ms",
|
||||
|
@ -216,6 +254,8 @@
|
|||
"edt_conf_color_blue_title": "Blu",
|
||||
"edt_conf_color_brightnessComp_expl": "Compensa la differenza di luminosità tra rosso verde blu, ciano magneta giallo e bianco. 100 significa massima compensazione, 0 nessuna compensazione",
|
||||
"edt_conf_color_brightnessComp_title": "Compensazione luminosità",
|
||||
"edt_conf_color_brightnessGain_expl": "Regola la luminosità dei colori. 1.0 significa nessun cambiamento, oltre 1.0 aumenta la luminosità, sotto 1.0 diminuisce la luminosità",
|
||||
"edt_conf_color_brightnessGain_title": "Intensità della luminosità",
|
||||
"edt_conf_color_brightness_expl": "Imposta la luminosità complessiva dei leds",
|
||||
"edt_conf_color_brightness_title": "Luminosità",
|
||||
"edt_conf_color_channelAdjustment_header_expl": "Crea profilo di colore che può essere assegnato a un componente specifico. Regola colore, gamma, luminosità, compensazione e altro.",
|
||||
|
@ -242,6 +282,8 @@
|
|||
"edt_conf_color_magenta_title": "Magenta",
|
||||
"edt_conf_color_red_expl": "Il valore calibrato del rosso.",
|
||||
"edt_conf_color_red_title": "Rosso",
|
||||
"edt_conf_color_saturationGain_expl": "Regola la saturazione dei colori. 1.0 significa nessun cambiamento, oltre 1.0 aumenta la saturazione, sotto 1.0 desatura.",
|
||||
"edt_conf_color_saturationGain_title": "Intensità della saturazione",
|
||||
"edt_conf_color_white_expl": "Il valore calibrato del bianco.",
|
||||
"edt_conf_color_white_title": "Bianco",
|
||||
"edt_conf_color_yellow_expl": "Il valore calibrato del giallo.",
|
||||
|
@ -253,10 +295,13 @@
|
|||
"edt_conf_effp_paths_expl": "Puoi definire altre cartelle che contengono effetti aggiuntivi. Il configuratore di effetti salva sempre all'interno della prima cartella.",
|
||||
"edt_conf_effp_paths_itemtitle": "Percorso",
|
||||
"edt_conf_effp_paths_title": "Percorso Effetti",
|
||||
"edt_conf_enum_BOTH": "Orizzontale e Verticale",
|
||||
"edt_conf_enum_HORIZONTAL": "Orizzontale",
|
||||
"edt_conf_enum_NO_CHANGE": "Auto",
|
||||
"edt_conf_enum_NTSC": "NTSC",
|
||||
"edt_conf_enum_PAL": "PAL",
|
||||
"edt_conf_enum_SECAM": "SECAM",
|
||||
"edt_conf_enum_VERTICAL": "Verticale",
|
||||
"edt_conf_enum_automatic": "Automatico",
|
||||
"edt_conf_enum_bbclassic": "Classico",
|
||||
"edt_conf_enum_bbdefault": "Default",
|
||||
|
@ -287,12 +332,15 @@
|
|||
"edt_conf_enum_logverbose": "Verboso",
|
||||
"edt_conf_enum_logwarn": "Avvertimento",
|
||||
"edt_conf_enum_multicolor_mean": "Multicolore",
|
||||
"edt_conf_enum_please_select": "Seleziona",
|
||||
"edt_conf_enum_rbg": "RBG",
|
||||
"edt_conf_enum_rgb": "RGB",
|
||||
"edt_conf_enum_right_left": "Da destra a sinistra",
|
||||
"edt_conf_enum_top_down": "Dall'alto verso il basso",
|
||||
"edt_conf_enum_transeffect_smooth": "Dolce",
|
||||
"edt_conf_enum_transeffect_sudden": "Repentina",
|
||||
"edt_conf_enum_udp_ddp": "DDP",
|
||||
"edt_conf_enum_udp_raw": "RAW",
|
||||
"edt_conf_enum_unicolor_mean": "Monocromatico",
|
||||
"edt_conf_fbs_heading_title": "Server Flatbuffers",
|
||||
"edt_conf_fbs_timeout_expl": "Se nessuna informazione viene ricevuta per un dato periodo, il componente verrà disabilitato (soft).",
|
||||
|
@ -321,11 +369,19 @@
|
|||
"edt_conf_fge_type_title": "Tipo",
|
||||
"edt_conf_fw_flat_expl": "Una destinazione flatbuffer per riga. Contiene IP:PORTA:(Esempio: 127.0.0.1:19401)",
|
||||
"edt_conf_fw_flat_itemtitle": "Destinatario flatbuffer",
|
||||
"edt_conf_fw_flat_services_discovered_expl": "Obiettivi flatbuffer scoperti",
|
||||
"edt_conf_fw_flat_services_discovered_title": "Obiettivi flatbuffer scoperti",
|
||||
"edt_conf_fw_flat_title": "Lista dei client flatbuffer",
|
||||
"edt_conf_fw_heading_title": "Forwarder",
|
||||
"edt_conf_fw_json_expl": "Una destinazione json per riga. Contiene IP:PORTA:(Esempio: 127.0.0.1:19446)",
|
||||
"edt_conf_fw_json_itemtitle": "Destinatario json",
|
||||
"edt_conf_fw_json_services_discovered_expl": "Server Hyperion scoperti che forniscono servizi JSON-API",
|
||||
"edt_conf_fw_json_services_discovered_title": "Target JSON rilevati",
|
||||
"edt_conf_fw_json_title": "Lista dei client json",
|
||||
"edt_conf_fw_remote_service_discovered_none": "Nessun servizio remoto rilevato",
|
||||
"edt_conf_fw_service_name_expl": "Nome del fornitore di servizi",
|
||||
"edt_conf_fw_service_name_title": "Nome di Servizio",
|
||||
"edt_conf_gen_configVersion_title": "Versione di configurazione",
|
||||
"edt_conf_gen_heading_title": "impostazioni Generali",
|
||||
"edt_conf_gen_name_expl": "Un nome definito dall'utente che viene utilizzato per riconoscere Hyperion. (Utile con più di un'istanza di Hyperion)",
|
||||
"edt_conf_gen_name_title": "Nome configurazione",
|
||||
|
@ -339,10 +395,19 @@
|
|||
"edt_conf_general_port_title": "Porta",
|
||||
"edt_conf_general_priority_expl": "Priorità di questo componente",
|
||||
"edt_conf_general_priority_title": "Priorità canale.",
|
||||
"edt_conf_grabber_discovered_expl": "Seleziona il tuo dispositivo di acquisizione scoperto",
|
||||
"edt_conf_grabber_discovered_none": "Nessun dispositivo di acquisizione rilevato",
|
||||
"edt_conf_grabber_discovered_title": "Dispositivo scoperto",
|
||||
"edt_conf_grabber_discovered_title_info": "Seleziona il tuo dispositivo di acquisizione scoperto",
|
||||
"edt_conf_grabber_discovery_inprogress": "ricerca in corso",
|
||||
"edt_conf_instC_screen_grabber_device_expl": "l dispositivo di cattura dello schermo utilizzato",
|
||||
"edt_conf_instC_screen_grabber_device_title": "Dispositivo di cattura dello schermo",
|
||||
"edt_conf_instC_systemEnable_expl": "Abilita la cattura della piattaforma per questa istanza di hardware led",
|
||||
"edt_conf_instC_systemEnable_title": "Abilita cattura piattaforma",
|
||||
"edt_conf_instC_v4lEnable_expl": "Abilita la cattura USB per questa istanza di hardware led",
|
||||
"edt_conf_instC_v4lEnable_title": "Abilita cattura USB",
|
||||
"edt_conf_instC_video_grabber_device_expl": "Il dispositivo di acquisizione video utilizzato",
|
||||
"edt_conf_instC_video_grabber_device_title": "Dispositivo di acquisizione video",
|
||||
"edt_conf_instCapture_heading_title": "Cattura Istanza",
|
||||
"edt_conf_js_heading_title": "Server JSON",
|
||||
"edt_conf_log_heading_title": "Logging",
|
||||
|
@ -374,8 +439,6 @@
|
|||
"edt_conf_smooth_heading_title": "Sfumatura",
|
||||
"edt_conf_smooth_interpolationRate_expl": "Velocità di calcolo dei regolari frame intermedi",
|
||||
"edt_conf_smooth_interpolationRate_title": "Tasso di interpolazione",
|
||||
"edt_conf_smooth_outputRate_expl": "Velocità di uscita al tuo controller LED.",
|
||||
"edt_conf_smooth_outputRate_title": "Velocità di uscita",
|
||||
"edt_conf_smooth_time_ms_expl": "Quanto a lungo la sfumatura dovrebbe raggiungere le immagini?",
|
||||
"edt_conf_smooth_time_ms_title": "Durata",
|
||||
"edt_conf_smooth_type_expl": "Tipo di sfumatura.",
|
||||
|
@ -390,21 +453,41 @@
|
|||
"edt_conf_v4l2_cecDetection_title": "Rilevamento CEC",
|
||||
"edt_conf_v4l2_cropBottom_expl": "Numero di pixels in basso che vengono rimossi dall'immagine.",
|
||||
"edt_conf_v4l2_cropBottom_title": "Ritaglia in basso",
|
||||
"edt_conf_v4l2_cropHeightValidation_error": "Ritaglia in alto + Ritaglia in basso non può essere maggiore di Altezza ($ 1)",
|
||||
"edt_conf_v4l2_cropLeft_expl": "Numero di pixels sulla sinistra che vengono rimossi dall'immagine.",
|
||||
"edt_conf_v4l2_cropLeft_title": "Ritaglia sinistra",
|
||||
"edt_conf_v4l2_cropRight_expl": "Numero di pixels sulla destra che vengono rimossi dall'immagine.",
|
||||
"edt_conf_v4l2_cropRight_title": "Ritaglia destra",
|
||||
"edt_conf_v4l2_cropTop_expl": "Numero di pixels in alto che vengono rimossi dall'immagine.",
|
||||
"edt_conf_v4l2_cropTop_title": "Ritaglia in alto",
|
||||
"edt_conf_v4l2_cropWidthValidation_error": "Ritaglia a sinistra + Ritaglia a destra non può essere maggiore di Larghezza ($1)",
|
||||
"edt_conf_v4l2_device_expl": "Percorso del dispositivo di cattura USB. Imposta su 'Automatico' per riconoscimento automatico. Esempio: '/dev/video0'",
|
||||
"edt_conf_v4l2_device_title": "Dispositivo",
|
||||
"edt_conf_v4l2_encoding_expl": "Forza la codifica video per i grabber multiformato",
|
||||
"edt_conf_v4l2_encoding_title": "Formato di codifica",
|
||||
"edt_conf_v4l2_flip_expl": "Ciò consente di capovolgere l'immagine orizzontalmente, verticalmente o entrambi.",
|
||||
"edt_conf_v4l2_flip_title": "Capovolgimento dell'immagine",
|
||||
"edt_conf_v4l2_fpsSoftwareDecimation_expl": "Per risparmiare risorse verrà elaborato solo ogni n-esimo frame. Per es. se il grabber è impostato a 30fps con questa opzione impostata a 5 il risultato finale sarà di circa 6fps",
|
||||
"edt_conf_v4l2_fpsSoftwareDecimation_title": "Salto del frame del software",
|
||||
"edt_conf_v4l2_framerate_expl": "Frame al secondo supportati per il dispositivo attivo",
|
||||
"edt_conf_v4l2_framerate_title": "Frame al secondo",
|
||||
"edt_conf_v4l2_greenSignalThreshold_expl": "Scurisce valori bassi di verde (riconosciuti come nero)",
|
||||
"edt_conf_v4l2_greenSignalThreshold_title": "Soglia segnale verde",
|
||||
"edt_conf_v4l2_hardware_brightness_expl": "Imposta la luminosità dell'hardware",
|
||||
"edt_conf_v4l2_hardware_brightness_title": "Controllo hardware della luminosità",
|
||||
"edt_conf_v4l2_hardware_contrast_expl": "Imposta il contrasto hardware",
|
||||
"edt_conf_v4l2_hardware_contrast_title": "Controllo hardware del contrasto",
|
||||
"edt_conf_v4l2_hardware_hue_expl": "Imposta la tonalità dell'hardware",
|
||||
"edt_conf_v4l2_hardware_hue_title": "Controllo della tonalità hardware",
|
||||
"edt_conf_v4l2_hardware_saturation_expl": "Imposta la saturazione hardware",
|
||||
"edt_conf_v4l2_hardware_saturation_title": "Controllo della saturazione hardware",
|
||||
"edt_conf_v4l2_hardware_set_defaults": "Controlli hardware predefiniti",
|
||||
"edt_conf_v4l2_hardware_set_defaults_tip": "Imposta i valori predefiniti del dispositivo per luminosità, contrasto, tonalità e saturazione",
|
||||
"edt_conf_v4l2_heading_title": "Cattura USB",
|
||||
"edt_conf_v4l2_input_expl": "Seleziona l'input video per il tuo dispositivo. 'Automatico' mantiene il Valero scelto dall'interfaccia v4l2.",
|
||||
"edt_conf_v4l2_input_title": "Input",
|
||||
"edt_conf_v4l2_noSignalCounterThreshold_expl": "Conteggio dei fotogrammi (controllalo con l'attuale modalità FPS del grabber) dopo il quale viene attivato il segnale di assenza",
|
||||
"edt_conf_v4l2_noSignalCounterThreshold_title": "Soglia del contatore di segnale",
|
||||
"edt_conf_v4l2_redSignalThreshold_expl": "Scurisce valori bassi di rosso (riconosciuti come nero)",
|
||||
"edt_conf_v4l2_redSignalThreshold_title": "Soglia segnale rosso",
|
||||
"edt_conf_v4l2_resolution_expl": "Lista Risoluzioni supportate per il dispositivo attivo",
|
||||
|
@ -435,12 +518,21 @@
|
|||
"edt_conf_webc_sslport_expl": "Porta del webserver HTTPS",
|
||||
"edt_conf_webc_sslport_title": "Porta HTTPS",
|
||||
"edt_dev_auth_key_title": "Token di autenticazione",
|
||||
"edt_dev_auth_key_title_info": "Token di autenticazione necessario per accedere al dispositivo",
|
||||
"edt_dev_enum_sub_min_cool_adjust": "Regolazione freddo min",
|
||||
"edt_dev_enum_sub_min_warm_adjust": "Regolazione calore min",
|
||||
"edt_dev_enum_subtract_minimum": "Sottrai minimo",
|
||||
"edt_dev_enum_white_off": "Bianco off",
|
||||
"edt_dev_general_autostart_title": "avvio automatico",
|
||||
"edt_dev_general_autostart_title_info": "Il dispositivo LED è acceso durante l'avvio oppure no",
|
||||
"edt_dev_general_colorOrder_title": "Ordine byte RGB",
|
||||
"edt_dev_general_colorOrder_title_info": "L'ordine dei colori del dispositivo",
|
||||
"edt_dev_general_enableAttemptsInterval_title": "Intervallo tra tentativi",
|
||||
"edt_dev_general_enableAttemptsInterval_title_info": "Intervallo tra due tentativi di connessione.",
|
||||
"edt_dev_general_enableAttempts_title": "Tentativi di connessione",
|
||||
"edt_dev_general_enableAttempts_title_info": "Numero di tentativi di connessione di un dispositivo prima che entri in uno stato di errore.",
|
||||
"edt_dev_general_hardwareLedCount_title": "Numero di LED Hardware",
|
||||
"edt_dev_general_hardwareLedCount_title_info": "Il numero di LED fisici disponibili per il dispositivo specificato",
|
||||
"edt_dev_general_heading_title": "Impostazioni Generali",
|
||||
"edt_dev_general_name_title": "Nome configurazione",
|
||||
"edt_dev_general_rewriteTime_title": "Tempo di ricarica",
|
||||
|
@ -449,21 +541,28 @@
|
|||
"edt_dev_spec_FCsetConfig_title": "Imposta configurazione Fadecandy",
|
||||
"edt_dev_spec_LBap102Mode_title": "Modalità LightBerry APA102",
|
||||
"edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo",
|
||||
"edt_dev_spec_ada_mode_title": "Adalight - Standard",
|
||||
"edt_dev_spec_awa_mode_title": "HyperSerial - Alta velocità",
|
||||
"edt_dev_spec_baudrate_title": "Baudrate",
|
||||
"edt_dev_spec_blackLightsTimeout_title": "Timeout rilevamento segnale su nero",
|
||||
"edt_dev_spec_brightnessFactor_title": "Fattore luminosità",
|
||||
"edt_dev_spec_brightnessMax_title": "Luminosità massima",
|
||||
"edt_dev_spec_brightnessMin_title": "Luminosità minima",
|
||||
"edt_dev_spec_brightnessMin_title": "Luminosità minima",
|
||||
"edt_dev_spec_brightnessOverwrite_title": "Sovrascrivi luminosità",
|
||||
"edt_dev_spec_brightnessThreshold_title": "Luminosità minima per rilevamento segnale",
|
||||
"edt_dev_spec_brightness_title": "Luminosità",
|
||||
"edt_dev_spec_candyGamma_title": "Modalità \"Candy\" (doppia correzione gamma)",
|
||||
"edt_dev_spec_chanperfixture_title": "Canali per dispositivo",
|
||||
"edt_dev_spec_cid_title": "CID",
|
||||
"edt_dev_spec_clientKey_title": "Clientkey",
|
||||
"edt_dev_spec_colorComponent_title": "Componente colore",
|
||||
"edt_dev_spec_debugLevel_title": "Livello Debug",
|
||||
"edt_dev_spec_debugStreamer_title": "Debug Streamer",
|
||||
"edt_dev_spec_delayAfterConnect_title": "Ritardo dopo la connessione",
|
||||
"edt_dev_spec_devices_discovered_none": "Nessun dispositivo rilevato",
|
||||
"edt_dev_spec_devices_discovered_title": "Dispositivi trovato",
|
||||
"edt_dev_spec_devices_discovered_title_info": "Seleziona il tuo dispositivo LED trovato",
|
||||
"edt_dev_spec_devices_discovered_title_info_custom": "Seleziona il tuo dispositivo LED trovato o configurane uno personalizzato",
|
||||
"edt_dev_spec_devices_discovery_inprogress": "Ricerca in corso",
|
||||
"edt_dev_spec_dithering_title": "Dithering",
|
||||
"edt_dev_spec_dmaNumber_title": "Canale DMA",
|
||||
"edt_dev_spec_gamma_title": "Gamma",
|
||||
|
@ -478,6 +577,7 @@
|
|||
"edt_dev_spec_intervall_title": "Intervallo",
|
||||
"edt_dev_spec_invert_title": "Inverti segnale",
|
||||
"edt_dev_spec_latchtime_title": "Tempo di latch",
|
||||
"edt_dev_spec_latchtime_title_info": "Il tempo di latch è l'intervallo di tempo richiesto da un dispositivo fino all'elaborazione del successivo aggiornamento. Durante tale periodo di tempo, tutti gli aggiornamenti effettuati vengono ignorati.",
|
||||
"edt_dev_spec_ledIndex_title": "Indice LED",
|
||||
"edt_dev_spec_ledType_title": "Tipo LED",
|
||||
"edt_dev_spec_lightid_itemtitle": "ID",
|
||||
|
@ -491,6 +591,8 @@
|
|||
"edt_dev_spec_networkDeviceName_title": "Nome dispositivo di rete",
|
||||
"edt_dev_spec_networkDevicePort_title": "Porta",
|
||||
"edt_dev_spec_numberOfLeds_title": "Numero di LEDs",
|
||||
"edt_dev_spec_onBlackTimeToPowerOff": "È ora di spegnere la lampada se viene attivato il livello di nero",
|
||||
"edt_dev_spec_onBlackTimeToPowerOn": "È ora di accendere la lampada se il segnale viene ripristinato",
|
||||
"edt_dev_spec_orbIds_title": "Orb ID",
|
||||
"edt_dev_spec_order_left_right_title": "2.",
|
||||
"edt_dev_spec_order_top_down_title": "1.",
|
||||
|
@ -498,18 +600,29 @@
|
|||
"edt_dev_spec_panel_start_position": "Pannello d'inizio [0-max panels]",
|
||||
"edt_dev_spec_panelorganisation_title": "Sequenza numerazione pannelli",
|
||||
"edt_dev_spec_pid_title": "PID",
|
||||
"edt_dev_spec_port_expl": "Porta di servizio [1-65535]",
|
||||
"edt_dev_spec_port_title": "Porta",
|
||||
"edt_dev_spec_printTimeStamp_title": "Aggiungi timestamp",
|
||||
"edt_dev_spec_pwmChannel_title": "Canale PWM",
|
||||
"edt_dev_spec_razer_device_title": "Dispositivo Razer Chroma",
|
||||
"edt_dev_spec_restoreOriginalState_title": "Ripristina lo stato delle luci",
|
||||
"edt_dev_spec_restoreOriginalState_title_info": "Ripristina lo stato originale del dispositivo quando il dispositivo è disabilitato",
|
||||
"edt_dev_spec_rgbw_calibration_blue": "Aspetto del canale blu/bianco",
|
||||
"edt_dev_spec_rgbw_calibration_enable": "Calibrazione del canale del bianco (solo RGBW)",
|
||||
"edt_dev_spec_rgbw_calibration_green": "Aspetto canale verde/bianco",
|
||||
"edt_dev_spec_rgbw_calibration_limit": "Limite canale bianco",
|
||||
"edt_dev_spec_rgbw_calibration_red": "Aspetto del canale rosso/bianco",
|
||||
"edt_dev_spec_serial_title": "Numero seriale",
|
||||
"edt_dev_spec_spipath_title": "Percorso SPI",
|
||||
"edt_dev_spec_sslHSTimeoutMax_title": "Timeout massimo handkshake streamer",
|
||||
"edt_dev_spec_sslHSTimeoutMin_title": "Timeout minimo handkshake streamer",
|
||||
"edt_dev_spec_sslReadTimeout_title": "Timeout lettura streamer",
|
||||
"edt_dev_spec_stream_protocol_title": "Protocollo di streaming",
|
||||
"edt_dev_spec_switchOffOnBlack_title": "Spegni o accendi il nero",
|
||||
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Spegni, sotto il minimo",
|
||||
"edt_dev_spec_syncOverwrite_title": "Disabilita la sincronizzazione",
|
||||
"edt_dev_spec_targetIpHost_expl": "Nome host (DNS/mDNS) o indirizzo IP (IPv4 o IPv6)",
|
||||
"edt_dev_spec_targetIpHost_title": "IP di destinazione/nome host",
|
||||
"edt_dev_spec_targetIpHost_title_info": "Il nome host o l'indirizzo IP del dispositivo",
|
||||
"edt_dev_spec_targetIp_title": "IP di destinazione",
|
||||
"edt_dev_spec_transeffect_title": "Effetto Transizione",
|
||||
"edt_dev_spec_transistionTimeExtra_title": "Tempo extra di buio",
|
||||
|
@ -573,9 +686,14 @@
|
|||
"edt_eff_frequency": "Frequenza",
|
||||
"edt_eff_gif_header": "GIF",
|
||||
"edt_eff_gif_header_desc": "Questo effetto riproduce file .gif. Fornisci un semplice loop video come effetto.",
|
||||
"edt_eff_grayscale": "Scala di grigi",
|
||||
"edt_eff_height": "Altezza",
|
||||
"edt_eff_huechange": "Cambiamento colore",
|
||||
"edt_eff_image": "file immagine",
|
||||
"edt_eff_image_source": "Fonte immagine",
|
||||
"edt_eff_image_source_file": "File locale",
|
||||
"edt_eff_image_source_url": "URL",
|
||||
"edt_eff_initial_blink": "Flash per attirare l'attenzione",
|
||||
"edt_eff_interval": "Intervallo",
|
||||
"edt_eff_knightrider_header": "Supercar",
|
||||
"edt_eff_knightrider_header_desc": "K.I.T.T. è tornato! Lo scanner frontale della nota automobile, questa volta non solo in rosso.",
|
||||
|
@ -613,6 +731,7 @@
|
|||
"edt_eff_reversedirection": "Inverti direzione",
|
||||
"edt_eff_rotationtime": "Tempo di rotazione",
|
||||
"edt_eff_saturation": "Saturazione",
|
||||
"edt_eff_set_post_color": "Imposta il colore del post dopo l'allarme",
|
||||
"edt_eff_showseconds": "Mostra secondi",
|
||||
"edt_eff_sleeptime": "Tempo di riposo",
|
||||
"edt_eff_smooth_custom": "Abilita sfumatura",
|
||||
|
@ -631,6 +750,7 @@
|
|||
"edt_eff_traces_header_desc": "Necessita redesign",
|
||||
"edt_eff_trails_header": "Scie",
|
||||
"edt_eff_trails_header_desc": "Stelle colorate che cadono dall'alto verso il basso",
|
||||
"edt_eff_url": "Indirizzo dell'immagine",
|
||||
"edt_eff_waves_header": "Onde",
|
||||
"edt_eff_waves_header_desc": "Onde di colore! Scegli i colori, tempo di rotazione, direzione e altro.",
|
||||
"edt_eff_whichleds": "Quali Leds",
|
||||
|
@ -655,6 +775,10 @@
|
|||
"edt_msg_error_disallow": "Il valore non deve essere di tipo $1",
|
||||
"edt_msg_error_disallow_union": "Il valore non deve essere di uno dei tipi forniti non ammessi",
|
||||
"edt_msg_error_enum": "Il valore deve essere uno tra quelli enumerati",
|
||||
"edt_msg_error_hostname": "Il nome host ha il formato errato",
|
||||
"edt_msg_error_invalid_epoch": "La data deve essere successiva al 1° gennaio 1970",
|
||||
"edt_msg_error_ipv4": "Il valore deve essere un indirizzo IPv4 valido sotto forma di 4 numeri compresi tra 0 e 255, separati da punti",
|
||||
"edt_msg_error_ipv6": "Il valore deve essere un indirizzo IPv6 valido",
|
||||
"edt_msg_error_maxItems": "Il valore deve contenere al massimo $1 elementi",
|
||||
"edt_msg_error_maxLength": "Il valore deve essere al massimo lungo $1 caratteri",
|
||||
"edt_msg_error_maxProperties": "L'oggetto deve avere al massimo $1 proprietà",
|
||||
|
@ -675,6 +799,8 @@
|
|||
"edt_msg_error_type": "Il valore deve essere di tipo $1",
|
||||
"edt_msg_error_type_union": "Il valore deve essere di uno dei tipi forniti",
|
||||
"edt_msg_error_uniqueItems": "Il vettore deve contenere elementi diversi",
|
||||
"edt_msgcust_error_hostname_ip": "Non è un nome host valido né IPv4 né IPv6",
|
||||
"edt_msgcust_error_hostname_ip4": "Non è un nome host valido né IPv4",
|
||||
"effectsconfigurator_button_conttest": "Test continuo",
|
||||
"effectsconfigurator_button_deleffect": "Cancella Effetto",
|
||||
"effectsconfigurator_button_editeffect": "Carica Effetto",
|
||||
|
@ -686,7 +812,7 @@
|
|||
"effectsconfigurator_label_effectname": "Nome Effetto",
|
||||
"effectsconfigurator_label_intro": "Crea nuovi effetti calibrati a tuo piacimento a partire dagli effetti base. A seconda dell'effetto sono disponibili opzioni come colore, velocità, direzione e altri.",
|
||||
"general_access_advanced": "Avanzate",
|
||||
"general_access_default": "Default",
|
||||
"general_access_default": "Predefinito",
|
||||
"general_access_expert": "Esperto",
|
||||
"general_btn_back": "Indietro",
|
||||
"general_btn_cancel": "Annulla",
|
||||
|
@ -699,6 +825,7 @@
|
|||
"general_btn_off": "Off",
|
||||
"general_btn_ok": "OK",
|
||||
"general_btn_on": "On",
|
||||
"general_btn_overwrite": "Sovrascrivi",
|
||||
"general_btn_rename": "Rinomina",
|
||||
"general_btn_restarthyperion": "Riavvia Hyperion",
|
||||
"general_btn_save": "Salva",
|
||||
|
@ -718,7 +845,7 @@
|
|||
"general_comp_FORWARDER": "Forwarder",
|
||||
"general_comp_GRABBER": "Cattura di Sistema",
|
||||
"general_comp_LEDDEVICE": "Dispositivo LED",
|
||||
"general_comp_PROTOSERVER": "Server Protocol Buffers",
|
||||
"general_comp_PROTOSERVER": "Buffer del protocollo del server",
|
||||
"general_comp_SMOOTHING": "Sfumatura",
|
||||
"general_comp_V4L": "Cattura USB",
|
||||
"general_country_cn": "Cina",
|
||||
|
@ -730,14 +857,23 @@
|
|||
"general_country_ru": "Russia",
|
||||
"general_country_uk": "Regno Unito",
|
||||
"general_country_us": "Stati Uniti",
|
||||
"general_disabled": "disabilitato",
|
||||
"general_enabled": "abilitato",
|
||||
"general_speech_ca": "Catalano",
|
||||
"general_speech_cs": "Czech",
|
||||
"general_speech_da": "Danimarca",
|
||||
"general_speech_de": "Tedesco",
|
||||
"general_speech_el": "Greco",
|
||||
"general_speech_en": "Inglese",
|
||||
"general_speech_es": "Spagnolo",
|
||||
"general_speech_fr": "Francese",
|
||||
"general_speech_hu": "Ungheria",
|
||||
"general_speech_it": "Italiano",
|
||||
"general_speech_ja": "Giapponese",
|
||||
"general_speech_nb": "Norvegese (Bokmål)",
|
||||
"general_speech_nl": "Olandese",
|
||||
"general_speech_pl": "Polacco",
|
||||
"general_speech_pt": "Portoghese",
|
||||
"general_speech_ro": "Rumeno",
|
||||
"general_speech_ru": "Russo",
|
||||
"general_speech_sv": "Svedese",
|
||||
|
@ -757,6 +893,10 @@
|
|||
"infoDialog_import_confirm_title": "Conferma import",
|
||||
"infoDialog_import_hyperror_text": "Il file di configurazione selezionato \"$1\" non può essere importato. Non è compatibile con Hyperion 2.0 e superiori!",
|
||||
"infoDialog_import_jsonerror_text": "Il file di configurazione selezionato \"$1\" non è un file .json o è corrotto. Messaggio di errore: ($2)",
|
||||
"infoDialog_password_current_text": "Password attuale",
|
||||
"infoDialog_password_minimum_length": "Le password devono contenere almeno 8 caratteri.",
|
||||
"infoDialog_password_new_text": "Nuova Password",
|
||||
"infoDialog_username_text": "Nome utente",
|
||||
"infoDialog_wizrgb_text": "L'ordine dei Byte RGB è già impostato correttamente.",
|
||||
"infoDialog_writeconf_error_text": "Salvataggio della configurazione fallito.",
|
||||
"infoDialog_writeimage_error_text": "Il file selezionato \"$1\" non è un immagine o è corrotto! Seleziona un altro file.",
|
||||
|
@ -776,6 +916,7 @@
|
|||
"main_ledsim_btn_togglelednumber": "Numeri LED",
|
||||
"main_ledsim_btn_toggleleds": "Mostra LEDs",
|
||||
"main_ledsim_btn_togglelivevideo": "Video live",
|
||||
"main_ledsim_btn_togglesigdetect": "Area di rilevamento del segnale",
|
||||
"main_ledsim_text": "Visualizzazione live dei colori dei led e, opzionalmente, lo stream video dal dispositivo di cattura.",
|
||||
"main_ledsim_title": "Visualizzazione LED",
|
||||
"main_menu_about_token": "Info su Hyperion",
|
||||
|
@ -787,6 +928,7 @@
|
|||
"main_menu_general_conf_token": "Generale",
|
||||
"main_menu_grabber_conf_token": "Hardware di cattura",
|
||||
"main_menu_input_selection_token": "Selezione Input",
|
||||
"main_menu_instcapture_conf_token": "Fonti",
|
||||
"main_menu_leds_conf_token": "Hardware LED",
|
||||
"main_menu_logging_token": "Log",
|
||||
"main_menu_network_conf_token": "Servizi di Rete",
|
||||
|
@ -886,6 +1028,7 @@
|
|||
"wiz_cc_testintrok": "Premi il bottone qui sotto per iniziare un test video.",
|
||||
"wiz_cc_testintrowok": "Guarda il link di seguito per il download dei video di test",
|
||||
"wiz_cc_title": "Assistente calibrazione colore",
|
||||
"wiz_cc_try_connect": "Connessione...",
|
||||
"wiz_cololight_desc2": "Ora scegli quali Cololights dovrebbero essere aggiunti. Per identificare le singole luci, premere il pulsante a destra.",
|
||||
"wiz_cololight_intro1": "Questa procedura guidata configura Hyperion per il sistema Cololight. Le caratteristiche sono il rilevamento automatico di Cololight e la regolazione automatica delle impostazioni di Hyperion! In breve: bastano pochi clic e il gioco è fatto!<br />Nota: in caso di una Strip Cololight, potrebbe essere necessario correggere manualmente il numero e il layout dei LED",
|
||||
"wiz_cololight_noprops": "Impossibile ottenere le proprietà del dispositivo: definire manualmente il numero dei LED",
|
||||
|
@ -921,6 +1064,7 @@
|
|||
"wiz_hue_username": "ID Utente",
|
||||
"wiz_identify": "Identifica",
|
||||
"wiz_identify_light": "Identifica $1",
|
||||
"wiz_identify_tip": "Identifica il dispositivo configurato accendendolo",
|
||||
"wiz_ids_disabled": "Disattivato",
|
||||
"wiz_ids_entire": "Immagine intera",
|
||||
"wiz_noLights": "Nessun $1 trovato! Per favore connetti le luci alla rete o configurale manualmente",
|
||||
|
|
|
@ -0,0 +1,301 @@
|
|||
{
|
||||
"InfoDialog_access_title": "設定レベル",
|
||||
"InfoDialog_nowrite_title": "書き込み権限エラー!",
|
||||
"about_build": "ビルド",
|
||||
"about_builddate": "ビルド日付",
|
||||
"about_translations": "翻訳について",
|
||||
"about_version": "バージョン",
|
||||
"conf_general_impexp_expbtn": "出力",
|
||||
"conf_general_impexp_impbtn": "入力",
|
||||
"conf_general_impexp_l1": "下記の設定ファイルを選択し、「インポート」をクリックしてください",
|
||||
"conf_general_impexp_l2": "設定をエクスポートするには「エクスポート」をクリックしてください。",
|
||||
"conf_general_impexp_title": "設定ファイルをインポート・エクスポートする",
|
||||
"conf_general_label_title": "一般設定",
|
||||
"conf_helptable_expl": "説明",
|
||||
"conf_helptable_option": "オプション",
|
||||
"conf_leds_contr_label_contrtype": "コントローラータイプ",
|
||||
"conf_leds_layout_advanced": "詳細設定",
|
||||
"conf_leds_layout_btn_checklist": "チェックリストを表示",
|
||||
"conf_leds_layout_button_savelay": "レイアウト保存",
|
||||
"conf_leds_layout_button_updsim": "プレビュー",
|
||||
"conf_leds_layout_cl_bottom": "下",
|
||||
"conf_leds_layout_cl_gappos": "ギャップの位置",
|
||||
"conf_leds_layout_cl_inppos": "インプットの位置",
|
||||
"conf_leds_layout_cl_left": "左",
|
||||
"conf_leds_layout_cl_right": "右",
|
||||
"conf_leds_layout_cl_top": "上",
|
||||
"conf_leds_layout_frame": "クラッシックレイアウト",
|
||||
"conf_leds_layout_ma_cabling": "配線",
|
||||
"conf_leds_layout_ma_horiz": "水平",
|
||||
"conf_leds_layout_ma_optbottomleft": "左下",
|
||||
"conf_leds_layout_ma_optbottomright": "右下",
|
||||
"conf_leds_layout_ma_opthoriz": "水平",
|
||||
"conf_leds_layout_ma_optparallel": "パラレル",
|
||||
"conf_leds_layout_ma_optsnake": "スネーク",
|
||||
"conf_leds_layout_ma_opttopleft": "左上",
|
||||
"conf_leds_layout_ma_opttopright": "右上",
|
||||
"conf_leds_layout_ma_optvert": "垂直",
|
||||
"conf_leds_layout_ma_order": "並び順",
|
||||
"conf_leds_layout_ma_position": "インプット",
|
||||
"conf_leds_layout_ma_vert": "垂直",
|
||||
"conf_leds_layout_matrix": "マトリックスレイアウト",
|
||||
"conf_leds_layout_peview": "LEDレイアウトのプレビュー",
|
||||
"conf_leds_layout_preview_l1": "一番目のLEDの位置",
|
||||
"conf_leds_layout_preview_l2": "データの向きを示す",
|
||||
"conf_leds_layout_preview_ledpower": "最大パワー消費電力率:",
|
||||
"conf_leds_layout_preview_originCL": "クラッシックレイアウトから作成",
|
||||
"conf_leds_layout_preview_originMA": "マトリックスレイアウトから作成",
|
||||
"conf_leds_layout_preview_originTEXT": "テキストから作成",
|
||||
"conf_leds_layout_preview_totalleds": "LED数:",
|
||||
"conf_leds_nav_label_ledcontroller": "LEDコントローラー",
|
||||
"conf_leds_nav_label_ledlayout": "LEDレイアウト",
|
||||
"conf_leds_optgroup_network": "ネットワーク",
|
||||
"conf_leds_optgroup_usb": "USB/シリアル",
|
||||
"conf_logging_btn_autoscroll": "オートスクロール",
|
||||
"conf_logging_report": "レポートと連携する",
|
||||
"conf_logging_uplpolicy": "ボタンをクリックして同意する",
|
||||
"dashboard_alert_message_confedit": "設定変更しました。適用するには、ハイペリオンを再起動してください。",
|
||||
"dashboard_alert_message_confedit_t": "設定変更しました",
|
||||
"dashboard_alert_message_confsave_success": "設定を保存し、有効化にしました。",
|
||||
"dashboard_alert_message_confsave_success_t": "設定を保存しました",
|
||||
"dashboard_alert_message_disabled": "インスタンスが無効になっています。使用するにはダッシュボードにて有効にしてください。",
|
||||
"dashboard_alert_message_disabled_t": "LEDハードウェアインスタンスを無効",
|
||||
"dashboard_componentbox_label_comp": "コンポネント",
|
||||
"dashboard_componentbox_label_status": "ステータス",
|
||||
"dashboard_componentbox_label_title": "コンポネント・ステータス",
|
||||
"dashboard_infobox_label_currenthyp": "バージョン",
|
||||
"dashboard_infobox_label_disableh": "インスタンスを無効にする",
|
||||
"dashboard_infobox_label_enableh": "インスタンスを有効にする",
|
||||
"dashboard_infobox_label_instance": "インスタンス",
|
||||
"dashboard_infobox_label_latesthyp": "最新バージョン",
|
||||
"dashboard_infobox_label_platform": "プラットフォーム",
|
||||
"dashboard_infobox_label_ports": "ポート",
|
||||
"dashboard_infobox_label_smartacc": "スマートアクセス",
|
||||
"dashboard_infobox_label_statush": "ステータス",
|
||||
"dashboard_infobox_label_title": "システム情報",
|
||||
"dashboard_infobox_message_updatesuccess": "最新版を使用しています",
|
||||
"dashboard_infobox_message_updatewarning": "最新版のアップデートあります!",
|
||||
"dashboard_label_intro": "ハイペリオンのステータスを確認できる画面です",
|
||||
"dashboard_newsbox_label_title": "ブログ",
|
||||
"dashboard_newsbox_noconn": "ハイペリオンサーバーに接続して最新情報を見れない場合は、インターネット接続を確認してください。",
|
||||
"dashboard_newsbox_readmore": "詳細を読む",
|
||||
"dashboard_newsbox_visitblog": "ハイペリオンのブログを見る",
|
||||
"edt_conf_bb_mode_title": "モード",
|
||||
"edt_conf_color_black_title": "ブラック",
|
||||
"edt_conf_color_blue_title": "青",
|
||||
"edt_conf_color_brightness_title": "明るさ",
|
||||
"edt_conf_color_channelAdjustment_header_itemtitle": "プロファイル",
|
||||
"edt_conf_color_channelAdjustment_header_title": "カラーチャネルの調整",
|
||||
"edt_conf_color_cyan_title": "シアン",
|
||||
"edt_conf_color_green_title": "緑",
|
||||
"edt_conf_color_heading_title": "色の調整",
|
||||
"edt_conf_color_id_title": "ID",
|
||||
"edt_conf_color_leds_title": "LEDインデックス",
|
||||
"edt_conf_color_magenta_title": "マジェスタ",
|
||||
"edt_conf_color_red_title": "赤",
|
||||
"edt_conf_color_white_title": "ホワイト",
|
||||
"edt_conf_color_yellow_title": "黄",
|
||||
"edt_conf_enum_NO_CHANGE": "自動",
|
||||
"edt_conf_enum_NTSC": "NTSC",
|
||||
"edt_conf_enum_PAL": "PAL",
|
||||
"edt_conf_enum_automatic": "自動",
|
||||
"edt_conf_enum_bbclassic": "クラシック",
|
||||
"edt_conf_enum_bbdefault": "デフォルト",
|
||||
"edt_conf_enum_bbosd": "OSD",
|
||||
"edt_conf_enum_bgr": "BGR 青・緑・赤",
|
||||
"edt_conf_enum_brg": "BRG 青・赤・緑",
|
||||
"edt_conf_enum_color": "色",
|
||||
"edt_conf_enum_effect": "効果",
|
||||
"edt_conf_enum_gbr": "GBR 緑・青・赤",
|
||||
"edt_conf_enum_grb": "GRB 緑・赤・青",
|
||||
"edt_conf_enum_logdebug": "デバッグ",
|
||||
"edt_conf_enum_logwarn": "警告",
|
||||
"edt_conf_enum_multicolor_mean": "マルチカラー",
|
||||
"edt_conf_enum_rbg": "RBG 赤・青・緑",
|
||||
"edt_conf_enum_rgb": "RGB 赤・緑・青",
|
||||
"edt_conf_enum_unicolor_mean": "ユニカラー",
|
||||
"edt_conf_fg_type_title": "タイプ",
|
||||
"edt_conf_fge_type_title": "タイプ",
|
||||
"edt_conf_gen_heading_title": "全般設定",
|
||||
"edt_conf_gen_name_title": "設定の名前",
|
||||
"edt_conf_gen_showOptHelp_title": "説明を表示する",
|
||||
"edt_conf_general_enable_expl": "コンポネントを有効にする。",
|
||||
"edt_conf_general_enable_title": "有効にする",
|
||||
"edt_conf_general_port_expl": "使用ポート",
|
||||
"edt_conf_general_port_title": "ポート",
|
||||
"edt_conf_general_priority_expl": "このコンポネントの優先度",
|
||||
"edt_conf_general_priority_title": "有線チャネル",
|
||||
"edt_conf_smooth_heading_title": "スムージング",
|
||||
"edt_conf_smooth_time_ms_title": "時刻",
|
||||
"edt_conf_smooth_type_expl": "スムージングタイプ",
|
||||
"edt_conf_smooth_type_title": "タイプ",
|
||||
"edt_conf_v4l2_device_title": "デバイス",
|
||||
"edt_conf_v4l2_heading_title": "USBキャプチャ",
|
||||
"edt_conf_v4l2_standard_title": "ビデオスタンダード",
|
||||
"edt_dev_auth_key_title": "認証トークン",
|
||||
"edt_dev_enum_sub_min_cool_adjust": "クールホワイトを減らす",
|
||||
"edt_dev_enum_sub_min_warm_adjust": "ワームホワイトを減らす",
|
||||
"edt_dev_general_autostart_title": "オートスタート",
|
||||
"edt_dev_general_colorOrder_title": "RGBの並び",
|
||||
"edt_dev_general_hardwareLedCount_title": "ハードウェアLED数",
|
||||
"edt_dev_general_heading_title": "一般設定",
|
||||
"edt_dev_general_name_title": "設定の名前",
|
||||
"edt_dev_spec_FCledToOn_title": "フェードキャンディーLEDを有効にする",
|
||||
"edt_dev_spec_FCsetConfig_title": "フェードキャンディの設定",
|
||||
"edt_dev_spec_baudrate_title": "ボーレート",
|
||||
"edt_dev_spec_cid_title": "CID",
|
||||
"edt_dev_spec_colorComponent_title": "カラーコンポネント",
|
||||
"edt_dev_spec_dmaNumber_title": "DMAチャネル",
|
||||
"edt_dev_spec_gpioBcm_title": "GPIOピン",
|
||||
"edt_dev_spec_gpioMap_title": "GPIOマッピング",
|
||||
"edt_dev_spec_gpioNumber_title": "GPIO番号",
|
||||
"edt_dev_spec_intervall_title": "インタバル",
|
||||
"edt_dev_spec_ledIndex_title": "LEDインデックス",
|
||||
"edt_dev_spec_ledType_title": "LEDタイプ",
|
||||
"edt_dev_spec_lightid_itemtitle": "ID",
|
||||
"edt_dev_spec_lightid_title": "ライトID",
|
||||
"edt_dev_spec_maxPacket_title": "最大パケット",
|
||||
"edt_dev_spec_maximumLedCount_title": "最大LED数",
|
||||
"edt_dev_spec_numberOfLeds_title": "LED数",
|
||||
"edt_dev_spec_outputPath_title": "出力パス",
|
||||
"edt_dev_spec_pid_title": "PID",
|
||||
"edt_dev_spec_port_title": "ポート",
|
||||
"edt_dev_spec_serial_title": "シリアル番号",
|
||||
"edt_dev_spec_spipath_title": "SPIデバイス",
|
||||
"edt_dev_spec_targetIpHost_title": "ホスト名/IPアドレス",
|
||||
"edt_dev_spec_targetIp_title": "IPアドレス",
|
||||
"edt_dev_spec_uid_title": "UID",
|
||||
"edt_dev_spec_universe_title": "ユニバース",
|
||||
"edt_dev_spec_useRgbwProtocol_title": "RGBWプロトコルを使用する",
|
||||
"edt_dev_spec_username_title": "ユーザー名",
|
||||
"edt_dev_spec_vid_title": "VID",
|
||||
"edt_eff_image_source_url": "URL",
|
||||
"effectsconfigurator_button_deleffect": "効果を削除する",
|
||||
"effectsconfigurator_button_editeffect": "効果をロードする",
|
||||
"effectsconfigurator_button_saveeffect": "効果を保存",
|
||||
"effectsconfigurator_button_starttest": "テスト開始",
|
||||
"effectsconfigurator_button_stoptest": "テスト中止",
|
||||
"effectsconfigurator_editdeleff": "効果を削除/ロードする",
|
||||
"effectsconfigurator_label_chooseeff": "テンプレートを選択する",
|
||||
"effectsconfigurator_label_effectname": "効果名",
|
||||
"general_access_advanced": "アドバンスト",
|
||||
"general_access_default": "一般",
|
||||
"general_access_expert": "エキスパート",
|
||||
"general_btn_back": "戻る",
|
||||
"general_btn_cancel": "キャンセル",
|
||||
"general_btn_continue": "続行",
|
||||
"general_btn_iswitch": "スイッチ",
|
||||
"general_btn_next": "次へ",
|
||||
"general_btn_off": "切",
|
||||
"general_btn_ok": "OK",
|
||||
"general_btn_on": "入",
|
||||
"general_btn_restarthyperion": "ハイペリオンを再起動する",
|
||||
"general_btn_save": "保存",
|
||||
"general_btn_saveandreload": "保存してリフレッシュ",
|
||||
"general_btn_yes": "はい",
|
||||
"general_button_savesettings": "設定保存",
|
||||
"general_col_blue": "青",
|
||||
"general_col_green": "緑",
|
||||
"general_col_red": "赤",
|
||||
"general_comp_BLACKBORDER": "黒帯検出",
|
||||
"general_comp_BOBLIGHTSERVER": "ボブライト・サーバー",
|
||||
"general_comp_FLATBUFSERVER": "フラットバッファ・サーバー",
|
||||
"general_comp_FORWARDER": "フォワーダー",
|
||||
"general_comp_GRABBER": "画面キャプチャ",
|
||||
"general_comp_LEDDEVICE": "LED出力",
|
||||
"general_comp_PROTOSERVER": "プロトコルバッファ・サーバー",
|
||||
"general_comp_SMOOTHING": "スムージング",
|
||||
"general_comp_V4L": "キャプチャ - USB入力",
|
||||
"general_country_de": "ドイツ",
|
||||
"general_country_es": "スペイン",
|
||||
"general_country_fr": "仏国",
|
||||
"general_country_it": "イタリア",
|
||||
"general_country_nl": "オランダ",
|
||||
"general_country_uk": "英国",
|
||||
"general_country_us": "米国",
|
||||
"general_speech_cs": "チェコ語",
|
||||
"general_speech_de": "ドイツ語",
|
||||
"general_speech_en": "英語",
|
||||
"general_speech_es": "スペイン語",
|
||||
"general_speech_it": "イタリア語",
|
||||
"general_webui_title": "ハイペリオン - ウェブ設定",
|
||||
"infoDialog_checklist_title": "チェックリスト!",
|
||||
"infoDialog_effconf_created_text": "\"$1\"は正しく作成されました!",
|
||||
"infoDialog_effconf_deleted_text": "\"$1\"は正しく削除されました!",
|
||||
"infoDialog_general_error_title": "エラー",
|
||||
"infoDialog_general_success_title": "大成功!",
|
||||
"infoDialog_general_warning_title": "警告",
|
||||
"infoDialog_import_comperror_text": "残念!このブラウザーはインポートを対応していません。別なブラウザーで試してください。",
|
||||
"infoDialog_import_confirm_title": "インポートの確認",
|
||||
"infoDialog_wizrgb_text": "RGBの並び順を修正しました。",
|
||||
"info_conlost_label_autorefresh": "このページは自動的に更新します。",
|
||||
"info_conlost_label_reason": "原因:",
|
||||
"info_conlost_label_reason1": "- インターネットにせt属されていない",
|
||||
"info_conlost_label_reason2": "‐ ハイペリオンがアップデート中",
|
||||
"info_conlost_label_reason3": "- ハイペリオンが起動されていない",
|
||||
"info_restart_title": "再起動中…",
|
||||
"main_ledsim_btn_togglelednumber": "LED番号を表示する",
|
||||
"main_ledsim_btn_toggleleds": "LEDを表示する",
|
||||
"main_ledsim_btn_togglelivevideo": "LEDビデオ",
|
||||
"main_ledsim_title": "LEDの視覚化",
|
||||
"main_menu_about_token": "ハイペリオンについて",
|
||||
"main_menu_colors_conf_token": "イメージ・プロセシング",
|
||||
"main_menu_configuration_token": "LEDのインスタンス",
|
||||
"main_menu_dashboard_token": "ダッシュボード",
|
||||
"main_menu_effect_conf_token": "効果",
|
||||
"main_menu_effectsconfigurator_token": "効果設定",
|
||||
"main_menu_general_conf_token": "一般",
|
||||
"main_menu_grabber_conf_token": "キャプチャ・ハードウェア",
|
||||
"main_menu_input_selection_token": "入力選択",
|
||||
"main_menu_leds_conf_token": "LED出力",
|
||||
"main_menu_logging_token": "ログ",
|
||||
"main_menu_network_conf_token": "ネットワーク設定",
|
||||
"main_menu_remotecontrol_token": "リモート・コントロール設定",
|
||||
"main_menu_support_token": "サポート",
|
||||
"main_menu_system_token": "システム",
|
||||
"main_menu_update_token": "アップデート",
|
||||
"main_menu_webconfig_token": "ウェブ設定",
|
||||
"remote_adjustment_label": "色の調整",
|
||||
"remote_color_button_reset": "色/効果をリセット",
|
||||
"remote_color_label": "色/効果",
|
||||
"remote_color_label_color": "色:",
|
||||
"remote_effects_label_effects": "効果:",
|
||||
"remote_input_clearall": "全ての効果/色をクリアする",
|
||||
"remote_input_ip": "IP:",
|
||||
"remote_input_label": "ソース選択",
|
||||
"remote_input_label_autoselect": "自動選択",
|
||||
"remote_input_owner": "タイプ",
|
||||
"remote_input_priority": "優先度",
|
||||
"remote_input_setsource_btn": "ソース選択",
|
||||
"remote_maptype_label_multicolor_mean": "マルチカラー",
|
||||
"remote_maptype_label_unicolor_mean": "ユニカラー",
|
||||
"remote_optgroup_syseffets": "システム設定",
|
||||
"remote_optgroup_usreffets": "ユーザー設定",
|
||||
"remote_videoMode_label": "ビデオモード",
|
||||
"support_label_forumtitle": "フォーラム",
|
||||
"support_label_ghtext": "GitHubへ",
|
||||
"support_label_title": "ハイペリオンをサポートする",
|
||||
"support_label_wikititle": "ドキュメンテーション",
|
||||
"update_button_changelog": "変更ログ",
|
||||
"update_button_install": "インストール",
|
||||
"update_error_getting_versions": "最新バージョンをとけていできません",
|
||||
"update_label_description": "説明",
|
||||
"update_label_type": "タイプ:",
|
||||
"update_versreminder": "使用中のバージョン:",
|
||||
"wiz_cc_btn_stop": "ビデオを停止する",
|
||||
"wiz_cc_btn_switchpic": "画像の切り替え:",
|
||||
"wiz_cc_kodimsg_start": "テスト成功 - 次へ進みましょう!",
|
||||
"wiz_cc_kodishould": "Kodiに次の画像が表示されます:$1",
|
||||
"wiz_cc_kwebs": "Kodiウェブサーバー(ホスト名またはIPアドレス)",
|
||||
"wiz_cc_testintro": "テストしましょう!",
|
||||
"wiz_cc_title": "色調整ウィザード",
|
||||
"wiz_hue_create_user": "ユーザーIDを新規作成",
|
||||
"wiz_hue_ip": "ホスト名またはIPアドレス",
|
||||
"wiz_hue_searchb": "ブリッジを検証中…",
|
||||
"wiz_hue_title": "フィリップスヒューウィザード",
|
||||
"wiz_hue_username": "ユーザーID",
|
||||
"wiz_rgb_qgend": "緑?",
|
||||
"wiz_rgb_qrend": "赤?",
|
||||
"wiz_rgb_title": "RGBの並び順",
|
||||
"wiz_wizavail": "ウィザードを使用可能"
|
||||
}
|
|
@ -1,16 +1,36 @@
|
|||
{
|
||||
"about_translations": "Oversettelser",
|
||||
"about_version": "Versjon",
|
||||
"conf_general_impexp_expbtn": "Eksporter",
|
||||
"conf_general_impexp_impbtn": "Importer",
|
||||
"conf_general_impexp_l1": "Import en konfigurasjon ved å velge en konfigurasjonsfil nedenfor og trykk \"Importer\".",
|
||||
"conf_general_impexp_l2": "Eksporter en konfigurasjon ved å trykke \"Eksporter\". Nettleseren din starter en nedlastning.",
|
||||
"conf_general_impexp_title": "Import/eksport konfigurasjon",
|
||||
"conf_general_label_title": "Generelle innstillinger",
|
||||
"conf_helptable_expl": "Forklaring",
|
||||
"conf_helptable_option": "Valg",
|
||||
"conf_leds_contr_label_contrtype": "Kontrollertype:",
|
||||
"conf_leds_layout_advanced": "Avanserte innstillinger",
|
||||
"conf_leds_layout_btn_checklist": "Vis sjekkliste",
|
||||
"conf_leds_layout_button_savelay": "Lagre Oppsett",
|
||||
"conf_leds_layout_button_updsim": "Oppdater Forhåndsvining",
|
||||
"conf_leds_layout_cl_bottom": "Bunn",
|
||||
"conf_leds_layout_cl_left": "Venstre",
|
||||
"conf_leds_layout_cl_right": "Høyre",
|
||||
"conf_leds_layout_cl_top": "Topp",
|
||||
"conf_leds_layout_frame": "Klassisk Oppsett (LED Ramme)",
|
||||
"conf_leds_layout_matrix": "Matrix Oppsett (LED-vegg)",
|
||||
"conf_leds_layout_peview": "LED-oppsett forhåndsvisning",
|
||||
"conf_leds_layout_ptlh": "Horisontal",
|
||||
"conf_leds_layout_ptlv": "Vertikal",
|
||||
"conf_leds_nav_label_ledcontroller": "LED kontroller",
|
||||
"conf_leds_nav_label_ledlayout": "LED-oppsett",
|
||||
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
|
||||
"conf_leds_optgroup_RPiPWM": "RPi PWM",
|
||||
"conf_leds_optgroup_RPiSPI": "RPi SPI",
|
||||
"conf_leds_optgroup_network": "Nettverk",
|
||||
"dashboard_alert_message_confedit": "Dine Hyperion konfigureringer er blitt endre. For å bruke de, restart Hyperion",
|
||||
"conf_leds_optgroup_usb": "USB/Serial",
|
||||
"dashboard_alert_message_confedit": "Din Hyperion konfigureringer er blitt endret. For å aktivere dem, restart Hyperion.",
|
||||
"dashboard_alert_message_confedit_t": "Konfigurering endret",
|
||||
"dashboard_alert_message_confsave_success": "Dine Hyperionkonfigureringer er vellykket endret. Dine endringer er nå aktive.",
|
||||
"dashboard_alert_message_confsave_success_t": "Konfigurasjon lagret",
|
||||
|
@ -19,6 +39,7 @@
|
|||
"dashboard_componentbox_label_title": "Komponentstatus",
|
||||
"dashboard_infobox_label_currenthyp": "Din Hyperion versjon:",
|
||||
"dashboard_infobox_label_disableh": "Deaktiver forekomst: $1",
|
||||
"dashboard_infobox_label_enableh": "Aktiver forekomst: $1",
|
||||
"dashboard_infobox_label_instance": "Forekomst:",
|
||||
"dashboard_infobox_label_latesthyp": "Siste Hyperion versjon:",
|
||||
"dashboard_infobox_label_platform": "Plattform:",
|
||||
|
@ -29,16 +50,40 @@
|
|||
"dashboard_infobox_message_updatesuccess": "Du kjører siste versjon av Hyperion.",
|
||||
"dashboard_infobox_message_updatewarning": "En nyere versjon av Hyperion er tilgjengelig! ($1)",
|
||||
"dashboard_label_intro": "Dashbordet gir en enkel oversikt over statusen til Hyperion.",
|
||||
"dashboard_message_do_not_show_again": "Ikke vis denne meldingen igjen",
|
||||
"dashboard_newsbox_label_title": "Hyperion-Blogg",
|
||||
"dashboard_newsbox_noconn": "Kan ikke koble Hyperion Serveren for å motta siste inlegg, fungerer internettilkoblingen?",
|
||||
"dashboard_newsbox_noconn": "Kan ikke koble Hyperion Serveren for å motta siste innlegg, fungerer internettilkoblingen?",
|
||||
"dashboard_newsbox_readmore": "Les mer",
|
||||
"dashboard_newsbox_visitblog": "Besøk Hyperion-Bloggen",
|
||||
"edt_conf_enum_dl_error": "Feil",
|
||||
"edt_conf_enum_hsv": "HSV",
|
||||
"edt_conf_enum_right_left": "Høyre til venstre",
|
||||
"edt_dev_spec_clientKey_title": "Klientnøkkel",
|
||||
"edt_dev_spec_lights_itemtitle": "Lys",
|
||||
"edt_dev_spec_lights_name": "Navn",
|
||||
"edt_dev_spec_networkDevicePort_title": "Port",
|
||||
"edt_dev_spec_order_left_right_title": "2.",
|
||||
"edt_dev_spec_order_top_down_title": "1.",
|
||||
"edt_eff_grayscale": "Gråskala",
|
||||
"edt_eff_image_source": "Bildekilde",
|
||||
"edt_eff_image_source_file": "Lokal fil",
|
||||
"edt_eff_image_source_url": "URL",
|
||||
"edt_eff_ledtest_header": "LED Test",
|
||||
"edt_eff_plasma_header": "Plasma",
|
||||
"edt_eff_url": "Bildeadresse",
|
||||
"effectsconfigurator_button_deleffect": "Slett effekt",
|
||||
"effectsconfigurator_button_editeffect": "Last inn effekt",
|
||||
"effectsconfigurator_button_starttest": "Start test",
|
||||
"effectsconfigurator_button_stoptest": "Stop test",
|
||||
"effectsconfigurator_label_effectname": "Effektnavn",
|
||||
"general_access_advanced": "Avansert",
|
||||
"general_access_default": "Standard",
|
||||
"general_access_expert": "Ekspert",
|
||||
"general_btn_back": "Tilbake",
|
||||
"general_btn_cancel": "Avbryt",
|
||||
"general_btn_continue": "Fortsett",
|
||||
"general_btn_denyAccess": "Nekt tilgang",
|
||||
"general_btn_grantAccess": "Gi tilgang",
|
||||
"general_btn_iswitch": "Bytt",
|
||||
"general_btn_next": "Neste",
|
||||
"general_btn_off": "Av",
|
||||
|
@ -47,24 +92,47 @@
|
|||
"general_btn_restarthyperion": "Start Hyperion på nytt",
|
||||
"general_btn_save": "Lagre",
|
||||
"general_btn_saveandreload": "Lagre og last inn på nytt",
|
||||
"general_btn_saverestart": "Lagre og restart",
|
||||
"general_btn_yes": "Ja",
|
||||
"general_col_blue": "blå",
|
||||
"general_col_green": "grønn",
|
||||
"general_col_red": "rød",
|
||||
"general_comp_BLACKBORDER": "Blackbar gjennkjennelse",
|
||||
"general_comp_BOBLIGHTSERVER": "Boblight Server",
|
||||
"general_comp_SMOOTHING": "Utjevning",
|
||||
"general_country_cn": "Kina",
|
||||
"general_country_de": "Tyskland",
|
||||
"general_country_es": "Spania",
|
||||
"general_country_fr": "Frankrike",
|
||||
"general_country_it": "Italia",
|
||||
"general_country_nl": "Nederland",
|
||||
"general_country_ru": "Russland",
|
||||
"general_country_uk": "Storbritania",
|
||||
"general_country_us": "USA",
|
||||
"general_speech_cs": "Tsjekkisk",
|
||||
"general_speech_de": "Tysk",
|
||||
"general_speech_en": "Engelsk",
|
||||
"general_speech_es": "Spansk",
|
||||
"general_speech_fr": "Fransk",
|
||||
"general_speech_it": "Italiensk",
|
||||
"general_speech_nl": "Nederlandsk",
|
||||
"general_speech_pl": "Polsk",
|
||||
"general_speech_ro": "Rumensk",
|
||||
"general_speech_ru": "Russisk",
|
||||
"general_speech_sv": "Svensk",
|
||||
"general_speech_tr": "Tyrkisk",
|
||||
"general_speech_vi": "Vietnamesisk",
|
||||
"general_speech_zh-CN": "Kinesisk (forenklet)",
|
||||
"general_webui_title": "Hyperion - Webkonfigurasjon",
|
||||
"infoDialog_checklist_title": "Sjekkliste!",
|
||||
"infoDialog_general_success_title": "Suksess",
|
||||
"infoDialog_general_warning_title": "Advarsel",
|
||||
"infoDialog_import_confirm_title": "Bekreft import",
|
||||
"infoDialog_password_minimum_length": "Passord må bestå av minst 8 tegn",
|
||||
"infoDialog_username_text": "Brukernavn",
|
||||
"infoDialog_writeconf_error_text": "Lagringen av konfigurasjonen din feilet.",
|
||||
"info_conlost_label_autorecon": "Vil koble til på nytt når Hyperion er tilgjengelig.",
|
||||
"info_conlost_label_reason": "Mulige årsaker:",
|
||||
"main_ledsim_btn_togglelednumber": "Antall LED",
|
||||
"main_ledsim_btn_toggleleds": "Vis LED",
|
||||
"main_ledsim_btn_togglelivevideo": "Direktevideo",
|
||||
|
@ -76,10 +144,37 @@
|
|||
"main_menu_effect_conf_token": "Effekter",
|
||||
"main_menu_effectsconfigurator_token": "Effekt konfigurerer",
|
||||
"main_menu_general_conf_token": "Generell",
|
||||
"main_menu_instcapture_conf_token": "Kilder",
|
||||
"main_menu_logging_token": "Logg",
|
||||
"main_menu_network_conf_token": "Nettverkstjenester",
|
||||
"main_menu_remotecontrol_token": "Fjern-kontroll",
|
||||
"main_menu_support_token": "Støtte",
|
||||
"main_menu_system_token": "System",
|
||||
"main_menu_update_token": "Oppdater"
|
||||
"main_menu_update_token": "Oppdater",
|
||||
"main_menu_webconfig_token": "Web-konfigurasjon",
|
||||
"remote_adjustment_label": "Fargejusteringer",
|
||||
"remote_color_button_reset": "Nullstill Farge/Effekt",
|
||||
"remote_color_label_color": "Farge:",
|
||||
"remote_effects_label_effects": "Effekt:",
|
||||
"remote_effects_label_picture": "Bilde:",
|
||||
"remote_input_duration": "Varighet",
|
||||
"remote_input_label": "Kildevalg",
|
||||
"remote_input_owner": "Type",
|
||||
"remote_input_priority": "Prioritet",
|
||||
"remote_input_setsource_btn": "Velg kilde",
|
||||
"remote_input_sourceactiv_btn": "Kilde aktiv",
|
||||
"remote_videoMode_2D": "2D",
|
||||
"remote_videoMode_3DSBS": "3DSBS",
|
||||
"remote_videoMode_3DTAB": "3DTAB",
|
||||
"remote_videoMode_label": "Videomodus",
|
||||
"support_label_btctext": "Adresse:",
|
||||
"support_label_donationpp": "Doner:",
|
||||
"support_label_spreadtheword": "Spre ordet",
|
||||
"update_button_install": "Installer",
|
||||
"update_label_description": "Beskrivelse:",
|
||||
"wiz_hue_username": "Bruker ID:",
|
||||
"wiz_identify": "Identifiser",
|
||||
"wiz_identify_light": "Identifiser $1",
|
||||
"wiz_rgb_qgend": "...grønn?",
|
||||
"wiz_rgb_qrend": "...rød?"
|
||||
}
|
|
@ -10,12 +10,15 @@
|
|||
"InfoDialog_nowrite_foottext": "Interfejs WebUI zostanie odblokowany automatycznie po rozwiązaniu problemu!",
|
||||
"InfoDialog_nowrite_text": "Hyperion nie może zapisać do aktualnie załadowanego pliku konfiguracyjnego. zmień uprawnienia zapisu plików, aby kontynuować.",
|
||||
"InfoDialog_nowrite_title": "Nie masz uprawnień do zapisu!",
|
||||
"InfoDialog_systemRestart_title": "Restart",
|
||||
"InfoDialog_systemResume_title": "Wznów",
|
||||
"InfoDialog_systemSuspend_title": "Zawieś",
|
||||
"about_3rd_party_licenses": "Licencje stron trzecich",
|
||||
"about_3rd_party_licenses_error": "Mieliśmy problem z gromadzeniem informacji o licencjach stron trzecich z sieci. <br /> Kliknij ten link do zasobu GitHub.",
|
||||
"about_build": "Build:",
|
||||
"about_builddate": "Data buildu:",
|
||||
"about_contribute": "Rozwijaj Hyperion razem z nami!",
|
||||
"about_credits": "Pozdrowienia dla wszystkich programistów! Polska wersja Artur Klimek KAmerOK",
|
||||
"about_credits": "Pozdrowienia dla wszystkich programistów! Polska lokalizacja Artur Klimek -KAmerOK",
|
||||
"about_resources": "$1 biblioteki",
|
||||
"about_translations": "Tłumaczenia",
|
||||
"about_version": "Wersja:",
|
||||
|
@ -51,8 +54,12 @@
|
|||
"conf_leds_contr_label_contrtype": "Typ kontrolera:",
|
||||
"conf_leds_device_info_log": "Jeśli diody LED nie działają, sprawdź tutaj błędy:",
|
||||
"conf_leds_device_intro": "Hyperion obsługuje wiele kontrolerów przesyłania danych do urządzenia docelowego. Wybierz kontroler LED z posortowanej listy i skonfiguruj go. Wybraliśmy najlepsze ustawienia domyślne dla każdego urządzenia.",
|
||||
"conf_leds_error_get_properties_text": "Nie udało się pobrać właściwości urządzenia. Sprawdź elementy konfiguracji.",
|
||||
"conf_leds_error_get_properties_title": "Właściwości urządzenia",
|
||||
"conf_leds_error_hwled_gt_layout": "Sprzętowa liczba diod LED ($1) jest większa niż diod LED skonfigurowanych za pomocą układu ($2), <br>$3 {{plural:$3|LED|LEDs}} pozostaną czarne, jeśli będziesz kontynuować.",
|
||||
"conf_leds_error_hwled_gt_maxled": "Liczba sprzętowych diod LED ($1) jest większa niż maksymalna liczba diod obsługiwanych przez urządzenie ($2). <br> Licznik sprzętowych diod LED jest ustawiony na ($3).",
|
||||
"conf_leds_error_hwled_lt_layout": "Sprzętowa liczba diod LED ($1) jest mniejsza niż diody LED skonfigurowane w układzie ($2). <br> Liczba diod LED skonfigurowanych w układzie nie może przekraczać dostępnych diod LED",
|
||||
"conf_leds_info_ws281x": "Hyperion musi działać z uprawnieniami 'root' dla tego typu kontrolera!",
|
||||
"conf_leds_layout_advanced": "Ustawienia dodatkowe",
|
||||
"conf_leds_layout_blacklist_num_title": "Liczba diod LED",
|
||||
"conf_leds_layout_blacklist_rule_title": "Reguła czarnej listy",
|
||||
|
@ -60,6 +67,7 @@
|
|||
"conf_leds_layout_blacklist_start_title": "Start LED",
|
||||
"conf_leds_layout_blacklistleds_title": "Czarna lista diod LED",
|
||||
"conf_leds_layout_btn_checklist": "Pokaż listę kontrolną",
|
||||
"conf_leds_layout_btn_keystone": "Korekcja trapezu",
|
||||
"conf_leds_layout_button_savelay": "Zapisz układ",
|
||||
"conf_leds_layout_button_updsim": "Odśwież podgląd",
|
||||
"conf_leds_layout_checkp1": "Czarna dioda jest pierwszą diodą, pierwsza dioda to punkt, do którego podłączasz kontroler.",
|
||||
|
@ -79,6 +87,16 @@
|
|||
"conf_leds_layout_cl_leftbottom": "Lewy 50% - 100% Dół",
|
||||
"conf_leds_layout_cl_leftmiddle": "Lewy 25% - 75% Środek",
|
||||
"conf_leds_layout_cl_lefttop": "Lewy 0% - 50% Góra",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft11": "Dół: 75 - 100% od lewej",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft112": "Dół: 0 - 50% od lewej",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft12": "Dół: 25 - 50% od lewej",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft121": "Dół: 50 - 100% od lewej",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft14": "Dół: 0 - 25% od lewej",
|
||||
"conf_leds_layout_cl_lightPosBottomLeft34": "Dół: 50 - 75% od lewej",
|
||||
"conf_leds_layout_cl_lightPosBottomLeftNewMid": "Dół: 25 - 75% od lewej",
|
||||
"conf_leds_layout_cl_lightPosTopLeft112": "Góra: 0 - 50% od lewej",
|
||||
"conf_leds_layout_cl_lightPosTopLeft121": "Góra: 50 - 100% od lewej",
|
||||
"conf_leds_layout_cl_lightPosTopLeftNewMid": "Góra: 25 - 75% od lewej",
|
||||
"conf_leds_layout_cl_overlap": "Zakładka",
|
||||
"conf_leds_layout_cl_reversdir": "Odwrócony kierunek",
|
||||
"conf_leds_layout_cl_right": "Prawo",
|
||||
|
@ -89,10 +107,11 @@
|
|||
"conf_leds_layout_cl_topleft": "Górny Lewy narożnik",
|
||||
"conf_leds_layout_cl_topright": "Górny Prawy narożnik",
|
||||
"conf_leds_layout_cl_vleddepth": "Pionowa głębokość LED",
|
||||
"conf_leds_layout_frame": "Układ Klasyczny (Ramka LED)",
|
||||
"conf_leds_layout_frame": "Układ Klasyczny (Ramka TV - LED)",
|
||||
"conf_leds_layout_generatedconf": "Wygenerowana / Aktualna konfiguracja LED",
|
||||
"conf_leds_layout_intro": "Potrzebujesz układu diod LED, który odzwierciedla twoje pozycje diod. Klasyczny układ to ramka telewizora, ale obsługujemy także tworzenie matrycy led (ściany led). Widok tego układu jest ZAWSZE Z PRZODU telewizora",
|
||||
"conf_leds_layout_intro": "Potrzebujesz układu LED, który odzwierciedla twoje pozycje diod. Klasyczny układ to ramka telewizora, ale obsługujemy także tworzenie matrycy LED (ściany LED). Widok dla tego układu jest ZAWSZE Z PRZODU telewizora",
|
||||
"conf_leds_layout_ma_cabling": "Okablowanie",
|
||||
"conf_leds_layout_ma_direction": "Kierunek",
|
||||
"conf_leds_layout_ma_horiz": "Poziomo",
|
||||
"conf_leds_layout_ma_optbottomleft": "Lewy dół",
|
||||
"conf_leds_layout_ma_optbottomright": "Prawy dół",
|
||||
|
@ -112,7 +131,7 @@
|
|||
"conf_leds_layout_preview_l1": "To jest twoja pierwsza dioda LED (pozycja wejściowa)",
|
||||
"conf_leds_layout_preview_l2": "To wizualizuje kierunek danych (druga / trzecia dioda LED)",
|
||||
"conf_leds_layout_preview_ledpower": "Maksymalny pobór prądu: $1 A",
|
||||
"conf_leds_layout_preview_originCL": "Utworzono z: Układ klasyczny (Ramka LED)",
|
||||
"conf_leds_layout_preview_originCL": "Utworzono z: Układ klasyczny (Ramka TV - LED)",
|
||||
"conf_leds_layout_preview_originMA": "Utworzono z: Układ matrycowy (Ściana LED)",
|
||||
"conf_leds_layout_preview_originTEXT": "Utworzono z: Skrypt",
|
||||
"conf_leds_layout_preview_totalleds": "Liczba wszystkich LED: $1",
|
||||
|
@ -179,6 +198,7 @@
|
|||
"dashboard_infobox_label_instance": "Instancja:",
|
||||
"dashboard_infobox_label_latesthyp": "Najnowsza wersja Hyperion:",
|
||||
"dashboard_infobox_label_platform": "Platforma:",
|
||||
"dashboard_infobox_label_port_boblight": "Serwer Boblight:",
|
||||
"dashboard_infobox_label_port_flat": "Flatbuffer:",
|
||||
"dashboard_infobox_label_port_json": "Server-JSON:",
|
||||
"dashboard_infobox_label_port_proto": "Protobuffer:",
|
||||
|
@ -187,11 +207,11 @@
|
|||
"dashboard_infobox_label_smartacc": "Szybki dostęp",
|
||||
"dashboard_infobox_label_statush": "Status Hyperion:",
|
||||
"dashboard_infobox_label_title": "Informacje",
|
||||
"dashboard_infobox_label_watchedversionbranch": "Obserwowany branch:",
|
||||
"dashboard_infobox_label_watchedversionbranch": "Obserwowana gałąź:",
|
||||
"dashboard_infobox_message_updatesuccess": "Posiadasz najnowszą wersję Hyperion",
|
||||
"dashboard_infobox_message_updatewarning": "Dostępna jest nowsza wersja Hyperion! ($1)",
|
||||
"dashboard_label_intro": "Ten pulpit nawigacyjny zapewnia szybki przegląd statusu Hyperion.",
|
||||
"dashboard_message_default_password": "Ustawione jest domyślne hasło do WebUi. Zdecydowanie zalecamy je zmienić.",
|
||||
"dashboard_message_default_password": "Ustawione jest domyślne hasło do WebUi. Zdecydowanie zalecamy je zmienić. ",
|
||||
"dashboard_message_default_password_t": "Ustawione jest domyślne hasło WebUi",
|
||||
"dashboard_message_do_not_show_again": "Nie pokazuj tej wiadomości ponownie",
|
||||
"dashboard_message_global_setting": "Ustawienia na tej stronie nie zależą od konkretnej instancji. Zmiany będą przechowywane globalnie dla wszystkich instancji.",
|
||||
|
@ -201,6 +221,7 @@
|
|||
"dashboard_newsbox_readmore": "Więcej",
|
||||
"dashboard_newsbox_visitblog": "Odwiedź Hyperion-Blog",
|
||||
"edt_append_degree": "°",
|
||||
"edt_append_frames": "klatki",
|
||||
"edt_append_hz": "Hz",
|
||||
"edt_append_leds": "Diody LED",
|
||||
"edt_append_ms": "ms",
|
||||
|
@ -236,6 +257,8 @@
|
|||
"edt_conf_color_blue_title": "Niebieski",
|
||||
"edt_conf_color_brightnessComp_expl": "Kompensuje różnice jasności między czerwonym, zielonym, niebieskim, cyjanowym, purpurowym, żółtym i białym. 100 oznacza pełną kompensację, 0 oznacza brak kompensacji",
|
||||
"edt_conf_color_brightnessComp_title": "Kompensacja jasności",
|
||||
"edt_conf_color_brightnessGain_expl": "Reguluje jasność kolorów. 1.0 oznacza brak zmian, powyżej 1.0 zwiększa jasność, poniżej 1.0 zmniejsza jasność.",
|
||||
"edt_conf_color_brightnessGain_title": "Wzmocnienie jasności",
|
||||
"edt_conf_color_brightness_expl": "Ustaw jasność LEDów",
|
||||
"edt_conf_color_brightness_title": "Jasność",
|
||||
"edt_conf_color_channelAdjustment_header_expl": "Utwórz profile kolorów, które można przypisać do określonego profilu. Dostosuj kolor, gamma, jasność, kompensację i więcej",
|
||||
|
@ -262,6 +285,8 @@
|
|||
"edt_conf_color_magenta_title": "Magenta",
|
||||
"edt_conf_color_red_expl": "Skalibrowana wartość koloru czerwonego",
|
||||
"edt_conf_color_red_title": "Czerwony",
|
||||
"edt_conf_color_saturationGain_expl": "Reguluje nasycenie kolorów. 1.0 oznacza brak zmian, powyżej 1.0 zwiększa nasycenie, poniżej 1.0 zmniejsza nasycenie.",
|
||||
"edt_conf_color_saturationGain_title": "Wzmocnienie nasycenia",
|
||||
"edt_conf_color_white_expl": "Skalibrowana wartość koloru białego.",
|
||||
"edt_conf_color_white_title": "Biały",
|
||||
"edt_conf_color_yellow_expl": "Skalibrowana wartość koloru żółtego",
|
||||
|
@ -317,6 +342,8 @@
|
|||
"edt_conf_enum_top_down": "Z góry na dół",
|
||||
"edt_conf_enum_transeffect_smooth": "Gładki",
|
||||
"edt_conf_enum_transeffect_sudden": "Nagły",
|
||||
"edt_conf_enum_udp_ddp": "DDP",
|
||||
"edt_conf_enum_udp_raw": "SUROWE",
|
||||
"edt_conf_enum_unicolor_mean": "Mieszaj kolory do jednego koloru",
|
||||
"edt_conf_fbs_heading_title": "Server Flatbuffers",
|
||||
"edt_conf_fbs_timeout_expl": "Jeśli w danym okresie nie zostaną odebrane żadne dane, komponent zostanie (miękko) wyłączony.",
|
||||
|
@ -345,11 +372,18 @@
|
|||
"edt_conf_fge_type_title": "Rodzaj",
|
||||
"edt_conf_fw_flat_expl": "Jeden element flatbuffer na linię. Zawiera adres IP: PORT (przykład: 127.0.0.1:19401)",
|
||||
"edt_conf_fw_flat_itemtitle": "Źródło flatbuffer",
|
||||
"edt_conf_fw_flat_services_discovered_expl": "Wykryto serwery Hyperion świadczące usługi flatbuffer",
|
||||
"edt_conf_fw_flat_services_discovered_title": "Odkryto cele Flatbuffer",
|
||||
"edt_conf_fw_flat_title": "Lista klientów flatbuffer",
|
||||
"edt_conf_fw_heading_title": "Przekierowanie",
|
||||
"edt_conf_fw_json_expl": "Jeden element Json na linię. Zawiera adres IP: PORT (przykład: 127.0.0.1:19446)",
|
||||
"edt_conf_fw_json_itemtitle": "Element Json",
|
||||
"edt_conf_fw_json_services_discovered_expl": "Wykryto serwery Hyperion świadczące usługi JSON-API",
|
||||
"edt_conf_fw_json_services_discovered_title": "Odkryto cele JSON",
|
||||
"edt_conf_fw_json_title": "Lista klientów Json",
|
||||
"edt_conf_fw_remote_service_discovered_none": "Nie wykryto usług zdalnych",
|
||||
"edt_conf_fw_service_name_expl": "Nazwa usługodawcy",
|
||||
"edt_conf_fw_service_name_title": "Nazwa serwisu",
|
||||
"edt_conf_gen_configVersion_title": "Wersja konfiguracji",
|
||||
"edt_conf_gen_heading_title": "Ustawienia główne",
|
||||
"edt_conf_gen_name_expl": "Nazwa zdefiniowana przez użytkownika, która służy do identyfikacji Hyperion. (Pomocne, jeśli masz więcej niż jedną instancję Hyperion)",
|
||||
|
@ -357,7 +391,7 @@
|
|||
"edt_conf_gen_showOptHelp_expl": "Pokaż wszystkie dostępne wyjaśnienia w każdej sekcji. Polecane dla początkujących!",
|
||||
"edt_conf_gen_showOptHelp_title": "Pokaż objaśnienia",
|
||||
"edt_conf_gen_watchedVersionBranch_expl": "Wybiera wersję, która powinna być używana podczas wyszukiwania nowych wersji Hyperion.",
|
||||
"edt_conf_gen_watchedVersionBranch_title": "Obserwowany branch:",
|
||||
"edt_conf_gen_watchedVersionBranch_title": "Obserwowana gałąź",
|
||||
"edt_conf_general_enable_expl": "Jeśli zaznaczone, komponent jest włączony.",
|
||||
"edt_conf_general_enable_title": "Aktywuj",
|
||||
"edt_conf_general_port_expl": "Ten Port jest już używany",
|
||||
|
@ -366,7 +400,7 @@
|
|||
"edt_conf_general_priority_title": "Kanał priorytetowy",
|
||||
"edt_conf_grabber_discovered_expl": "Wybierz wykryte urządzenie do przechwytywania",
|
||||
"edt_conf_grabber_discovered_none": "Nie wykryto urządzenia do przechwytywania",
|
||||
"edt_conf_grabber_discovered_title": "Wykryto urządzenie",
|
||||
"edt_conf_grabber_discovered_title": "Wykryte urządzenia",
|
||||
"edt_conf_grabber_discovered_title_info": "Wybierz wykryte urządzenie do przechwytywania",
|
||||
"edt_conf_grabber_discovery_inprogress": "Wykrywanie w toku",
|
||||
"edt_conf_instC_screen_grabber_device_expl": "Używane urządzenie do przechwytywania ekranu",
|
||||
|
@ -375,8 +409,8 @@
|
|||
"edt_conf_instC_systemEnable_title": "Włącz przechwytywanie pulpitu",
|
||||
"edt_conf_instC_v4lEnable_expl": "Umożliwia przechwytywanie obrazu z graberra USB dla tego kontrolera LED",
|
||||
"edt_conf_instC_v4lEnable_title": "Włącz przechwytywanie USB",
|
||||
"edt_conf_instC_video_grabber_device_expl": "Używane urządzenie do przechwytywania wideo",
|
||||
"edt_conf_instC_video_grabber_device_title": "Urządzenie do przechwytywania wideo",
|
||||
"edt_conf_instC_video_grabber_device_expl": "Używane urządzenie do przechwytywania obrazu wideo",
|
||||
"edt_conf_instC_video_grabber_device_title": "Urządzenie do przechwytywania obrazu",
|
||||
"edt_conf_instCapture_heading_title": "Instancja przechwytywania",
|
||||
"edt_conf_js_heading_title": "Server JSON",
|
||||
"edt_conf_log_heading_title": "Logowanie",
|
||||
|
@ -408,9 +442,7 @@
|
|||
"edt_conf_smooth_heading_title": "Wygładzanie",
|
||||
"edt_conf_smooth_interpolationRate_expl": "Szybkość obliczania wygładzanych ramek pośrednich.",
|
||||
"edt_conf_smooth_interpolationRate_title": "Współczynnik interpolacji",
|
||||
"edt_conf_smooth_outputRate_expl": "Prędkość wyjściowa do twojego kontrolera led.",
|
||||
"edt_conf_smooth_outputRate_title": "Szybkość wyjściowa",
|
||||
"edt_conf_smooth_time_ms_expl": "Jak długo wygładzanie powinno zbierać zdjęcia?",
|
||||
"edt_conf_smooth_time_ms_expl": "Jak długo wygładzanie powinno zbierać obrazy?",
|
||||
"edt_conf_smooth_time_ms_title": "Czas",
|
||||
"edt_conf_smooth_type_expl": "Rodzaj wygładzania.",
|
||||
"edt_conf_smooth_type_title": "Rodzaj",
|
||||
|
@ -487,15 +519,21 @@
|
|||
"edt_conf_webc_keyPath_expl": "Ścieżka do pliku klucza dla powyższego certyfikatu (format PEM, zaszyfrowany za pomocą RSA)",
|
||||
"edt_conf_webc_keyPath_title": "Ścieżka klucza prywatnego",
|
||||
"edt_conf_webc_sslport_expl": "Port serwera internetowego HTTPS",
|
||||
"edt_conf_webc_sslport_title": "HTTPS Port",
|
||||
"edt_conf_webc_sslport_title": "Port HTTPS",
|
||||
"edt_dev_auth_key_title": "Token uwierzytelnienia",
|
||||
"edt_dev_auth_key_title_info": "Aby uzyskać dostęp do urządzenia, wymagany jest token uwierzytelniający",
|
||||
"edt_dev_enum_sub_min_cool_adjust": "Odejmij zimną biel",
|
||||
"edt_dev_enum_sub_min_warm_adjust": "Odejmij ciepłą biel",
|
||||
"edt_dev_enum_subtract_minimum": "Odejmij minimum",
|
||||
"edt_dev_enum_white_off": "Wyłącz biały",
|
||||
"edt_dev_general_autostart_title": "Autostart",
|
||||
"edt_dev_general_autostart_title_info": "Urządzenie LED jest włączone podczas uruchamiania lub nie",
|
||||
"edt_dev_general_colorOrder_title": "Kolejność bajtów RGB",
|
||||
"edt_dev_general_colorOrder_title_info": "Kolejność kolorów urządzenia",
|
||||
"edt_dev_general_enableAttemptsInterval_title": "Interwał ponawiania",
|
||||
"edt_dev_general_enableAttemptsInterval_title_info": "Odstęp między dwiema próbami połączenia.",
|
||||
"edt_dev_general_enableAttempts_title": "Próby połączenia",
|
||||
"edt_dev_general_enableAttempts_title_info": "Liczba prób podłączenia urządzenia przed przejściem w stan błędu.",
|
||||
"edt_dev_general_hardwareLedCount_title": "Fizyczna liczba LED",
|
||||
"edt_dev_general_hardwareLedCount_title_info": "Liczba fizycznych diod dostępnych dla danego urządzenia",
|
||||
"edt_dev_general_heading_title": "Ustawienia główne",
|
||||
|
@ -506,6 +544,8 @@
|
|||
"edt_dev_spec_FCsetConfig_title": "Ustaw konfigurację zanikania",
|
||||
"edt_dev_spec_LBap102Mode_title": "Tryb \"LightBerry APA102\"",
|
||||
"edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo",
|
||||
"edt_dev_spec_ada_mode_title": "Adalight - Standard",
|
||||
"edt_dev_spec_awa_mode_title": "HyperSerial - High speed",
|
||||
"edt_dev_spec_baudrate_title": "Prędkość (Baudrate)",
|
||||
"edt_dev_spec_blackLightsTimeout_title": "Limit czasu wykrywania sygnału na czarno",
|
||||
"edt_dev_spec_brightnessFactor_title": "Współczynnik jasności",
|
||||
|
@ -514,12 +554,12 @@
|
|||
"edt_dev_spec_brightnessOverwrite_title": "Nadpisz jasność",
|
||||
"edt_dev_spec_brightnessThreshold_title": "Minimalna jasność wykrywania sygnału",
|
||||
"edt_dev_spec_brightness_title": "Jasność",
|
||||
"edt_dev_spec_candyGamma_title": "Tryb „Candy” (podwójna korekcja gamma)",
|
||||
"edt_dev_spec_chanperfixture_title": "Kanały na urządzenie",
|
||||
"edt_dev_spec_cid_title": "CID",
|
||||
"edt_dev_spec_clientKey_title": "Klucz klienta",
|
||||
"edt_dev_spec_colorComponent_title": "Składnik koloru",
|
||||
"edt_dev_spec_debugLevel_title": "Poziom debugowania połączenia Streamera",
|
||||
"edt_dev_spec_debugStreamer_title": "Streamer Debug",
|
||||
"edt_dev_spec_delayAfterConnect_title": "Przerwa po połączeniu",
|
||||
"edt_dev_spec_devices_discovered_none": "Nie wykryto żadnych urządzeń",
|
||||
"edt_dev_spec_devices_discovered_title": "Wykryte urządzenia",
|
||||
|
@ -554,6 +594,8 @@
|
|||
"edt_dev_spec_networkDeviceName_title": "Nazwa urządzenia sieciowego",
|
||||
"edt_dev_spec_networkDevicePort_title": "Port",
|
||||
"edt_dev_spec_numberOfLeds_title": "Ilość diod LED",
|
||||
"edt_dev_spec_onBlackTimeToPowerOff": "Czas na wyłączenie lampy, jeśli poziom czerni zostanie wyzwolony",
|
||||
"edt_dev_spec_onBlackTimeToPowerOn": "Czas na włączenie lampy, jeśli sygnał zostanie przywrócony",
|
||||
"edt_dev_spec_orbIds_title": "Orb ID(s)",
|
||||
"edt_dev_spec_order_left_right_title": "2.",
|
||||
"edt_dev_spec_order_top_down_title": "1.",
|
||||
|
@ -561,19 +603,27 @@
|
|||
"edt_dev_spec_panel_start_position": "Startpanel [0-maks paneli]",
|
||||
"edt_dev_spec_panelorganisation_title": "Sekwencja numeracji paneli",
|
||||
"edt_dev_spec_pid_title": "PID",
|
||||
"edt_dev_spec_port_expl": "Port serwisowy [1-65535]",
|
||||
"edt_dev_spec_port_title": "Port",
|
||||
"edt_dev_spec_printTimeStamp_title": "Dodaj znacznik czasu",
|
||||
"edt_dev_spec_pwmChannel_title": "Kanał PWM",
|
||||
"edt_dev_spec_razer_device_title": "Urządzenie Razer Chroma",
|
||||
"edt_dev_spec_restoreOriginalState_title": "Przywróć oryginalny stan świateł, gdy są wyłączone",
|
||||
"edt_dev_spec_restoreOriginalState_title_info": "Przywróć pierwotny stan urządzenia, gdy jest ono wyłączone",
|
||||
"edt_dev_spec_rgbw_calibration_blue": "Wygląd kanału niebieskiego/białego",
|
||||
"edt_dev_spec_rgbw_calibration_enable": "Kalibracja kanału bieli (tylko RGBW)",
|
||||
"edt_dev_spec_rgbw_calibration_green": "Wygląd kanału zielonego/białego",
|
||||
"edt_dev_spec_rgbw_calibration_limit": "Limit kanału białego",
|
||||
"edt_dev_spec_rgbw_calibration_red": "Wygląd kanału czerwonego/białego",
|
||||
"edt_dev_spec_serial_title": "Numer seryjny",
|
||||
"edt_dev_spec_spipath_title": "SPI path",
|
||||
"edt_dev_spec_sslHSTimeoutMax_title": "Maksymalny limit czasu uzgadniania streamera",
|
||||
"edt_dev_spec_sslHSTimeoutMin_title": "Minimalny limit czasu uzgadniania Streamera",
|
||||
"edt_dev_spec_sslReadTimeout_title": "Limit czasu odczytu Streamera",
|
||||
"edt_dev_spec_stream_protocol_title": "Protokół przesyłania strumieniowego",
|
||||
"edt_dev_spec_switchOffOnBlack_title": "Wyłącz na czarno",
|
||||
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Wyłączanie poniżej minimum",
|
||||
"edt_dev_spec_syncOverwrite_title": "Wyłącz synchronizację",
|
||||
"edt_dev_spec_targetIpHost_expl": "Nazwa hosta (DNS/mDNS) lub adres IP (IPv4 lub IPv6)",
|
||||
"edt_dev_spec_targetIpHost_title": "Docelowe IP/Nazwa hosta",
|
||||
"edt_dev_spec_targetIpHost_title_info": "Nazwa hosta lub adres IP urządzenia",
|
||||
"edt_dev_spec_targetIp_title": "Docelowe IP",
|
||||
|
@ -622,7 +672,7 @@
|
|||
"edt_eff_count": "Liczba",
|
||||
"edt_eff_countries": "Kraje",
|
||||
"edt_eff_customColor": "Kolor niestandardowy",
|
||||
"edt_eff_enableSecondSwirl": "Second Swirl",
|
||||
"edt_eff_enableSecondSwirl": "Kolejny wirujący kolor",
|
||||
"edt_eff_enableshutdown": "Prawdziwe wyłączenie",
|
||||
"edt_eff_enum_all": "Wszystko",
|
||||
"edt_eff_enum_all-together": "Wszystko razem",
|
||||
|
@ -639,9 +689,13 @@
|
|||
"edt_eff_frequency": "Częstotliwość",
|
||||
"edt_eff_gif_header": "Gify",
|
||||
"edt_eff_gif_header_desc": "Ten efekt odtwarza pliki .gif, zapewniając prosty efekt jak pętla wideo jako efekt.",
|
||||
"edt_eff_grayscale": "Skala szarości",
|
||||
"edt_eff_height": "Wysokość",
|
||||
"edt_eff_huechange": "Zmiana koloru",
|
||||
"edt_eff_image": "Plik obrazu",
|
||||
"edt_eff_image_source": "Źródło obrazu",
|
||||
"edt_eff_image_source_file": "Plik lokalny",
|
||||
"edt_eff_image_source_url": "URL",
|
||||
"edt_eff_initial_blink": "Rozbłysk dla lepszej uwagi",
|
||||
"edt_eff_interval": "Intervał",
|
||||
"edt_eff_knightrider_header": "Knight Rider (Nieustraszony)",
|
||||
|
@ -668,7 +722,7 @@
|
|||
"edt_eff_plasma_header_desc": "Zniekształcenie kolorów w różnych kierunkach",
|
||||
"edt_eff_police_header": "Policja",
|
||||
"edt_eff_police_header_desc": "Świeci jak samochód policyjny w akcji",
|
||||
"edt_eff_postcolor": "Kolor postu",
|
||||
"edt_eff_postcolor": "Post kolor",
|
||||
"edt_eff_rainbowmood_header": "Tęczowy nastrój",
|
||||
"edt_eff_rainbowmood_header_desc": "Wszystkie diody tęczowy nastrój",
|
||||
"edt_eff_randomCenter": "Środek losowo",
|
||||
|
@ -680,6 +734,7 @@
|
|||
"edt_eff_reversedirection": "Odwrotny kierunek",
|
||||
"edt_eff_rotationtime": "Czas obrotu",
|
||||
"edt_eff_saturation": "Nasycenie",
|
||||
"edt_eff_set_post_color": "Ustaw post kolor po zakończeniu",
|
||||
"edt_eff_showseconds": "Pokaż sekundy",
|
||||
"edt_eff_sleeptime": "Czas wstrzymania",
|
||||
"edt_eff_smooth_custom": "Włącz zanikania",
|
||||
|
@ -698,6 +753,7 @@
|
|||
"edt_eff_traces_header_desc": "Wymaga przeprojektowania",
|
||||
"edt_eff_trails_header": "Spadające gwiazdy",
|
||||
"edt_eff_trails_header_desc": "Kolorowe gwiazdki opadające z góry na dół",
|
||||
"edt_eff_url": "Adres obrazu",
|
||||
"edt_eff_waves_header": "Fale",
|
||||
"edt_eff_waves_header_desc": "Fale koloru! Wybierz kolory, czas obrotu, kierunek do tyłu i więcej.",
|
||||
"edt_eff_whichleds": "Które diody LED",
|
||||
|
@ -722,6 +778,10 @@
|
|||
"edt_msg_error_disallow": "Wartość nie może być typu $1",
|
||||
"edt_msg_error_disallow_union": "Wartość nie może być jednym z podanych niedozwolonych typów",
|
||||
"edt_msg_error_enum": "Wartość musi być jedną z wartości wyliczonych",
|
||||
"edt_msg_error_hostname": "Nazwa hosta ma zły format",
|
||||
"edt_msg_error_invalid_epoch": "Data musi być późniejsza niż 1 stycznia 1970",
|
||||
"edt_msg_error_ipv4": "Wartość musi być poprawnym adresem IPv4 w postaci 4 liczb z zakresu od 0 do 255, oddzielonych kropkami",
|
||||
"edt_msg_error_ipv6": "Wartość musi być prawidłowym adresem IPv6",
|
||||
"edt_msg_error_maxItems": "Wartość musi zawierać najwyżej $1",
|
||||
"edt_msg_error_maxLength": "Wartość musi wynosić maksymalnie $1",
|
||||
"edt_msg_error_maxProperties": "Obiekt musi mieć najwyżej $1 właściwości",
|
||||
|
@ -742,6 +802,8 @@
|
|||
"edt_msg_error_type": "Wartość musi być typu $1",
|
||||
"edt_msg_error_type_union": "Wartość musi być jednym z podanych typów",
|
||||
"edt_msg_error_uniqueItems": "Tablica musi zawierać unikalne elementy",
|
||||
"edt_msgcust_error_hostname_ip": "Nieprawidłowa nazwa hosta IPv4 lub IPv6",
|
||||
"edt_msgcust_error_hostname_ip4": "Nieprawidłowa nazwa hosta IPv4",
|
||||
"effectsconfigurator_button_conttest": "Test ciągły",
|
||||
"effectsconfigurator_button_deleffect": "Usuń efekt",
|
||||
"effectsconfigurator_button_editeffect": "Załaduj efekt",
|
||||
|
@ -763,9 +825,9 @@
|
|||
"general_btn_grantAccess": "Przyznaj dostęp",
|
||||
"general_btn_iswitch": "Przełącznik",
|
||||
"general_btn_next": "Dalej",
|
||||
"general_btn_off": "Wyłączony",
|
||||
"general_btn_off": "Wyłączone",
|
||||
"general_btn_ok": "OK",
|
||||
"general_btn_on": "Uruchomiony",
|
||||
"general_btn_on": "Aktywne",
|
||||
"general_btn_overwrite": "Nadpisz",
|
||||
"general_btn_rename": "Zmień nazwe",
|
||||
"general_btn_restarthyperion": "Zrestartuj Hyperion",
|
||||
|
@ -780,7 +842,7 @@
|
|||
"general_col_blue": "niebieski",
|
||||
"general_col_green": "zielony",
|
||||
"general_col_red": "czerwony",
|
||||
"general_comp_BLACKBORDER": "Wykryw. czarnych pasków",
|
||||
"general_comp_BLACKBORDER": "Usuń czarne pasy",
|
||||
"general_comp_BOBLIGHTSERVER": "Serwer Boblight",
|
||||
"general_comp_FLATBUFSERVER": "Serwer FlatBuffers",
|
||||
"general_comp_FORWARDER": "Przekierowanie",
|
||||
|
@ -800,15 +862,20 @@
|
|||
"general_country_us": "Stany Zjednoczone (United States)",
|
||||
"general_disabled": "wyłączony",
|
||||
"general_enabled": "włączony",
|
||||
"general_speech_ca": "Kataloński",
|
||||
"general_speech_cs": "Czeski (Czech)",
|
||||
"general_speech_da": "Duński",
|
||||
"general_speech_de": "Niemiecki (German)",
|
||||
"general_speech_el": "Grecki",
|
||||
"general_speech_en": "Angielski (English)",
|
||||
"general_speech_es": "Hiszpański (Spanish)",
|
||||
"general_speech_fr": "Francuski (French)",
|
||||
"general_speech_hu": "Węgierski",
|
||||
"general_speech_it": "Włoski (Italian)",
|
||||
"general_speech_ja": "język japoński",
|
||||
"general_speech_nb": "Norweski (Norwegian)",
|
||||
"general_speech_nl": "Niderlandzki (Nederlands)",
|
||||
"general_speech_pl": "Polski (Artur Klimek)",
|
||||
"general_speech_pl": "Polski (Polish)",
|
||||
"general_speech_pt": "Portugalski (Portuguese)",
|
||||
"general_speech_ro": "Rumuński (Romanian)",
|
||||
"general_speech_ru": "Rosyjski (Russian)",
|
||||
|
@ -964,6 +1031,7 @@
|
|||
"wiz_cc_testintrok": "Kliknij przycisk poniżej, aby rozpocząć testowe wideo.",
|
||||
"wiz_cc_testintrowok": "Sprawdź poniższy link, aby pobrać filmy testowe:",
|
||||
"wiz_cc_title": "Kreator kalibracji kolorów",
|
||||
"wiz_cc_try_connect": "Łączenie...",
|
||||
"wiz_cololight_desc2": "Teraz wybierz, który \"Cololight\" chcesz dodać. Aby zidentyfikować pojedyncze światła, naciśnij przycisk po prawej stronie.",
|
||||
"wiz_cololight_intro1": "Ten kreator konfiguruje Hyperion dla systemu Cololight. Funkcje to automatyczne wykrywanie Cololight i automatyczne dostrajanie ustawień Hyperiona! W skrócie: wystarczy kilka kliknięć i gotowe! <br /> Uwaga: w przypadku Cololight Strip może być konieczne ręczne skorygowanie liczby i układu diod LED.",
|
||||
"wiz_cololight_noprops": "Nie można pobrać konfiguracji urządzenia - ręcznie zdefiniuj liczbę diod LED sprzętu",
|
||||
|
@ -980,7 +1048,7 @@
|
|||
"wiz_hue_e_desc2": "Teraz wybierz swoją grupę rozrywkową, w której jesteś wszystkie światła do użytku z Hyperionem.",
|
||||
"wiz_hue_e_desc3": "Teraz możesz wybrać, w jakiej pozycji powinna znajdować się odpowiednia lampa „na zdjęciu”. Wstępnego wyboru pozycji dokonano na podstawie skonfigurowanych pozycji świateł w grupie rozrywkowej. To tylko zalecenie i można go dostosować do własnych potrzeb. Dlatego możesz je krótko podświetlić, klikając prawy przycisk, aby poprawić wybór.",
|
||||
"wiz_hue_e_intro1": "Ten kreator konfiguruje Hyperion dla dobrze znanego systemu Philips Hue Entertainment. Funkcje obejmują automatyczne wykrywanie Hue Bridge, tworzenie kluczy użytkownika i klienta, wybór grupy rozrywkowej i ustawianie świateł grupowych w określonej pozycji na zdjęciu oraz automatyczne dostrajanie ustawień Hyperion! Krótko mówiąc: wystarczy kilka kliknięć i gotowe!",
|
||||
"wiz_hue_e_noapisupport": "Kreator wyłączył obsługę interfejsu API rozrywki i będzie działał w trybie klasycznym.",
|
||||
"wiz_hue_e_noapisupport": "Kreator wyłączył obsługę interfejsu API i będzie działał w trybie klasycznym.",
|
||||
"wiz_hue_e_noapisupport_hint": "Opcja \"<b> Użyj interfejsu API Hue Entertainmen</b>” nie została zaznaczona.",
|
||||
"wiz_hue_e_noegrpids": "Brak zdefiniowanych grup rozrywkowych na tym moście Hue.",
|
||||
"wiz_hue_e_nogrpids": "Ten mostek Hue nie ma zdefiniowanych grup. Utwórz przynajmniej jedną za pomocą aplikacji Hue.",
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
"InfoDialog_changePassword_title": "Alterar a senha",
|
||||
"InfoDialog_iswitch_text": "Se você executar o Hyperion mais de uma vez em sua rede local, poderá alternar entre as configurações da web. Selecione a instância do Hyperion abaixo e mude!",
|
||||
"InfoDialog_iswitch_title": "Switcher Hyperion",
|
||||
"InfoDialog_nostorage_text": "O seu navegador não suporta localStorage. Você não pode salvar uma configuração de especifica de linguagem (retorna para 'detecção automática') e nível de acesso (retorno para 'padrão'). Algumas funções podem estarem escondidas. Você pode usar sem futuros problemas",
|
||||
"InfoDialog_nostorage_title": "Não foi possível salvar as configurações",
|
||||
"InfoDialog_nowrite_foottext": "O WebUI será desbloqueado automaticamente depois que você resolver o problema!",
|
||||
"InfoDialog_nowrite_text": "O Hyperion não pode gravar em seu arquivo de configuração carregado atualmente. Repare as permissões do arquivo para continuar.",
|
||||
"InfoDialog_nowrite_title": "erro de permissão de gravação!",
|
||||
|
@ -40,6 +42,7 @@
|
|||
"conf_general_intro": "Configurações básicas do Hyperion e da WebUI que não se encaixam em outra categoria.",
|
||||
"conf_general_label_title": "Configurações gerais",
|
||||
"conf_grabber_fg_intro": "A captura da plataforma é a captura do seu sistema local como fonte de entrada em que o Hyperion está instalado.",
|
||||
"conf_grabber_inst_grabber_config_info": "Configure seus dispositivos de hardware de captura para serem usados pela instância no modo avançado",
|
||||
"conf_grabber_v4l_intro": "Captura USB é um dispositivo (de captura) conectado via USB que é usado para inserir imagens de origem para processamento.",
|
||||
"conf_helptable_expl": "Explicação",
|
||||
"conf_helptable_option": "Opção",
|
||||
|
@ -48,8 +51,12 @@
|
|||
"conf_leds_contr_label_contrtype": "Tipo de controlador:",
|
||||
"conf_leds_device_info_log": "Caso seus LEDs não funcionem, verifique aqui se há erros:",
|
||||
"conf_leds_device_intro": "Hyperion suporta vários controladores para transmitir sinal para o seu dispositivo. Selecione o contolador de LED da lista e configure. Nós escolhemos as melhores configurações padrão para cada dispositivo.",
|
||||
"conf_leds_error_get_properties_text": "Falha ao obter as propriedades do dispositivo. Verifique os itens de configuração.",
|
||||
"conf_leds_error_get_properties_title": "Propriedades do dispositivo",
|
||||
"conf_leds_error_hwled_gt_layout": "A contagem de LEDs do hardware ($1) é maior do que os LEDs configurados via layout ($2),<br>$3 {{plural:$3|LED|LEDs}} permanecerá preto se você continuar.",
|
||||
"conf_leds_error_hwled_gt_maxled": "A contagem de LEDs de hardware ($1) é maior que o número máximo de LEDs suportados pelo dispositivo ($2). <br> A contagem de LEDs do hardware está definida para ($3).",
|
||||
"conf_leds_error_hwled_lt_layout": "A contagem de LEDs do hardware ($1) é menor do que os LEDs configurados por layout ($2).<br>O número de LEDs configurados no layout não deve exceder os LEDs disponíveis",
|
||||
"conf_leds_info_ws281x": "Hyperion deve rodar com privilégios 'root' para este tipo de controle!",
|
||||
"conf_leds_layout_advanced": "Configurações Avançadas",
|
||||
"conf_leds_layout_blacklist_num_title": "Número de LEDs",
|
||||
"conf_leds_layout_blacklist_rule_title": "Regra da lista negra",
|
||||
|
@ -90,6 +97,7 @@
|
|||
"conf_leds_layout_generatedconf": "Configuração de LED gerado / atual",
|
||||
"conf_leds_layout_intro": "Você tambem precisa do layout dos leds, que refere a posição dos leds. O layout clássico que é usado geralmente é a moldura de tv, mas também suportamos a criação de matriz de leds (paredes de leds). A vista desse layout é sempre da FRENTE da tv.",
|
||||
"conf_leds_layout_ma_cabling": "Cabeamento",
|
||||
"conf_leds_layout_ma_direction": "Direção",
|
||||
"conf_leds_layout_ma_horiz": "Horizontal",
|
||||
"conf_leds_layout_ma_optbottomleft": "Base esquerda",
|
||||
"conf_leds_layout_ma_optbottomright": "Base direita",
|
||||
|
@ -125,10 +133,12 @@
|
|||
"conf_leds_optgroup_RPiGPIO": "RPi CPIO",
|
||||
"conf_leds_optgroup_RPiPWM": "RPi PWM",
|
||||
"conf_leds_optgroup_RPiSPI": "RPi SPI",
|
||||
"conf_leds_optgroup_debug": "Depuração",
|
||||
"conf_leds_optgroup_network": "Rede",
|
||||
"conf_leds_optgroup_other": "Outro",
|
||||
"conf_leds_optgroup_usb": "USB/Serial",
|
||||
"conf_logging_btn_autoscroll": "Rolagem automática",
|
||||
"conf_logging_btn_clipboard": "Copiar Registros",
|
||||
"conf_logging_btn_pbupload": "Faça upload de um relatório para solicitações de suporte",
|
||||
"conf_logging_contpolicy": "Política de Privacidade do Relatório",
|
||||
"conf_logging_label_intro": "Área para verificar as mensagens de log, você verá mais ou menos informações dependendo do nível de log definido.",
|
||||
|
@ -174,7 +184,12 @@
|
|||
"dashboard_infobox_label_instance": "Instância:",
|
||||
"dashboard_infobox_label_latesthyp": "Última versão do Hyperion:",
|
||||
"dashboard_infobox_label_platform": "Plataforma:",
|
||||
"dashboard_infobox_label_port_boblight": "Servidor Boblight:",
|
||||
"dashboard_infobox_label_port_flat": "Flatbuffer:",
|
||||
"dashboard_infobox_label_port_json": "Servidor-JSON:",
|
||||
"dashboard_infobox_label_port_proto": "Protobuffer:",
|
||||
"dashboard_infobox_label_ports": "Portas",
|
||||
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
|
||||
"dashboard_infobox_label_smartacc": "Acesso inteligente",
|
||||
"dashboard_infobox_label_statush": "Estado do Hyperion:",
|
||||
"dashboard_infobox_label_title": "Informação",
|
||||
|
@ -192,6 +207,7 @@
|
|||
"dashboard_newsbox_readmore": "Leia mais",
|
||||
"dashboard_newsbox_visitblog": "Visite o Blog do Hyperion",
|
||||
"edt_append_degree": "°",
|
||||
"edt_append_frames": "frames",
|
||||
"edt_append_hz": "hz",
|
||||
"edt_append_leds": "LEDS",
|
||||
"edt_append_ms": "ms",
|
||||
|
@ -264,10 +280,13 @@
|
|||
"edt_conf_effp_paths_expl": "Você pode definir mais pastas que contêm efeitos. O configurador de efeitos sempre salvará dentro da primeira pasta.",
|
||||
"edt_conf_effp_paths_itemtitle": "Caminho",
|
||||
"edt_conf_effp_paths_title": "Caminho (s) do efeito",
|
||||
"edt_conf_enum_BOTH": "Horizontal e Vertical",
|
||||
"edt_conf_enum_HORIZONTAL": "Horizontal",
|
||||
"edt_conf_enum_NO_CHANGE": "Automático",
|
||||
"edt_conf_enum_NTSC": "NTSC",
|
||||
"edt_conf_enum_PAL": "PAL",
|
||||
"edt_conf_enum_SECAM": "SECAM",
|
||||
"edt_conf_enum_VERTICAL": "Vertical",
|
||||
"edt_conf_enum_automatic": "Automatico",
|
||||
"edt_conf_enum_bbclassic": "Clássico",
|
||||
"edt_conf_enum_bbdefault": "Padrão",
|
||||
|
@ -352,10 +371,19 @@
|
|||
"edt_conf_general_port_title": "Porta",
|
||||
"edt_conf_general_priority_expl": "A prioridade deste componente",
|
||||
"edt_conf_general_priority_title": "Canal prioritário",
|
||||
"edt_conf_grabber_discovered_expl": "Selecione o seu dispositivo de captura enontrado",
|
||||
"edt_conf_grabber_discovered_none": "Não foi encontrado dispositivo de captura",
|
||||
"edt_conf_grabber_discovered_title": "Dispositivo encontrado",
|
||||
"edt_conf_grabber_discovered_title_info": "Selecione o seu dispositivo de captura descoberto",
|
||||
"edt_conf_grabber_discovery_inprogress": "Descobrimento em andamento",
|
||||
"edt_conf_instC_screen_grabber_device_expl": "O dispositivo de captura de tela usado",
|
||||
"edt_conf_instC_screen_grabber_device_title": "Dispositivo de captura de tela",
|
||||
"edt_conf_instC_systemEnable_expl": "Ativa a captura da plataforma para esta instância de hardware",
|
||||
"edt_conf_instC_systemEnable_title": "Habilitar captura de plataforma",
|
||||
"edt_conf_instC_v4lEnable_expl": "Ativa a captura USB para esta instância de hardware",
|
||||
"edt_conf_instC_v4lEnable_title": "Ativa captura USB",
|
||||
"edt_conf_instC_video_grabber_device_expl": "O dispositivo de captura de video usado",
|
||||
"edt_conf_instC_video_grabber_device_title": "Dispositivo de captura de video",
|
||||
"edt_conf_instCapture_heading_title": "Captura de Instância",
|
||||
"edt_conf_js_heading_title": "Servidor JSON",
|
||||
"edt_conf_log_heading_title": "Registro",
|
||||
|
@ -403,21 +431,41 @@
|
|||
"edt_conf_v4l2_cecDetection_title": "Detecção CEC",
|
||||
"edt_conf_v4l2_cropBottom_expl": "Contagem de pixels na parte inferior que são removidos da imagem.",
|
||||
"edt_conf_v4l2_cropBottom_title": "Cortar base",
|
||||
"edt_conf_v4l2_cropHeightValidation_error": "Corte superior + Corte inferior não pode ser maior que a Altura ($1)",
|
||||
"edt_conf_v4l2_cropLeft_expl": "Contagem de pixels no lado esquerdo que são removidos da imagem.",
|
||||
"edt_conf_v4l2_cropLeft_title": "Cortar à esquerda",
|
||||
"edt_conf_v4l2_cropRight_expl": "Contagem de pixels no lado direito que são removidos da imagem.",
|
||||
"edt_conf_v4l2_cropRight_title": "Cortar à direita",
|
||||
"edt_conf_v4l2_cropTop_expl": "Contagem de pixels na parte superior que são removidos da imagem.",
|
||||
"edt_conf_v4l2_cropTop_title": "Cortar topo",
|
||||
"edt_conf_v4l2_cropWidthValidation_error": "Corte esquerdo + Corte direito não pode ser maior que a Largura ($1)",
|
||||
"edt_conf_v4l2_device_expl": "O caminho para a interface de captura USB. Defina como 'Automático' para detecção automática. Exemplo: '/ dev / video0'",
|
||||
"edt_conf_v4l2_device_title": "Dispositivo",
|
||||
"edt_conf_v4l2_encoding_expl": "Forçar a codificação de vídeo para grabbers com capacidade multiformato",
|
||||
"edt_conf_v4l2_encoding_title": "Formato de encoding",
|
||||
"edt_conf_v4l2_flip_expl": "Isso permite que você inverta a imagem horizontalmente, verticalmente ou ambos.",
|
||||
"edt_conf_v4l2_flip_title": "Espelhar imagem",
|
||||
"edt_conf_v4l2_fpsSoftwareDecimation_expl": "Para economizar recursos, cada enésimo quadro será processado apenas. Por ex. se o grabber estiver definido para 30fps com esta opção definida para 5, o resultado final será em torno de 6fps",
|
||||
"edt_conf_v4l2_fpsSoftwareDecimation_title": "Pulo de quadros do software",
|
||||
"edt_conf_v4l2_framerate_expl": "Os quadros por segundo suportados do dispositivo ativo",
|
||||
"edt_conf_v4l2_framerate_title": "Quadros por segundo",
|
||||
"edt_conf_v4l2_greenSignalThreshold_expl": "Escurece valores verdes baixos (reconhecidos como pretos)",
|
||||
"edt_conf_v4l2_greenSignalThreshold_title": "Limite do sinal verde",
|
||||
"edt_conf_v4l2_hardware_brightness_expl": "Definir brilho do hardware",
|
||||
"edt_conf_v4l2_hardware_brightness_title": "Controle de brilho for hardware",
|
||||
"edt_conf_v4l2_hardware_contrast_expl": "Definir contraste do hardware",
|
||||
"edt_conf_v4l2_hardware_contrast_title": "Controle de contraste do hardware",
|
||||
"edt_conf_v4l2_hardware_hue_expl": "Definir hue do hardware",
|
||||
"edt_conf_v4l2_hardware_hue_title": "Controle de hue do hardware",
|
||||
"edt_conf_v4l2_hardware_saturation_expl": "Definir saturação do hardware",
|
||||
"edt_conf_v4l2_hardware_saturation_title": "Controle de saturação do hardware",
|
||||
"edt_conf_v4l2_hardware_set_defaults": "Controles do hardware padrão",
|
||||
"edt_conf_v4l2_hardware_set_defaults_tip": "Defina os valores padrão do dispositivo para brilho, contraste, matiz e saturação",
|
||||
"edt_conf_v4l2_heading_title": "Captura USB",
|
||||
"edt_conf_v4l2_input_expl": "Selecione a entrada de vídeo do seu dispositivo. 'Automático' mantém o valor escolhido pela interface v4l2.",
|
||||
"edt_conf_v4l2_input_title": "Entrada",
|
||||
"edt_conf_v4l2_noSignalCounterThreshold_expl": "Contagem de quadros (verifique isso com o modo FPS atual do grabber) após o qual o sem sinal é acionado",
|
||||
"edt_conf_v4l2_noSignalCounterThreshold_title": "Limite do contador de sinal",
|
||||
"edt_conf_v4l2_redSignalThreshold_expl": "Escurece valores baixos de vermelho (reconhecido como preto)",
|
||||
"edt_conf_v4l2_redSignalThreshold_title": "Limite de sinal vermelho",
|
||||
"edt_conf_v4l2_resolution_expl": "Uma lista de resoluções suportadas do dispositivo ativo",
|
||||
|
@ -453,6 +501,8 @@
|
|||
"edt_dev_enum_sub_min_warm_adjust": "Subtrair o branco quente",
|
||||
"edt_dev_enum_subtract_minimum": "Subtrair mínimo",
|
||||
"edt_dev_enum_white_off": "Branco apagado",
|
||||
"edt_dev_general_autostart_title": "Iniciar automaticamente",
|
||||
"edt_dev_general_autostart_title_info": "O dispositivo LED está ligado durante a inicialização ou não",
|
||||
"edt_dev_general_colorOrder_title": "Ordem de bytes RGB",
|
||||
"edt_dev_general_colorOrder_title_info": "A ordem de cores do dispositivo",
|
||||
"edt_dev_general_hardwareLedCount_title": "Contagem de LED de hardware",
|
||||
|
@ -468,8 +518,6 @@
|
|||
"edt_dev_spec_baudrate_title": "Taxa de transmissão",
|
||||
"edt_dev_spec_blackLightsTimeout_title": "Tempo limite de detecção de sinal em preto",
|
||||
"edt_dev_spec_brightnessFactor_title": "Fator de brilho",
|
||||
"edt_dev_spec_brightnessMax_title": "Brilho máximo",
|
||||
"edt_dev_spec_brightnessMin_title": "Brilho mínimo",
|
||||
"edt_dev_spec_brightnessOverwrite_title": "Sobrescrever brilho",
|
||||
"edt_dev_spec_brightnessThreshold_title": "Signal detection brightness minimum",
|
||||
"edt_dev_spec_brightness_title": "Brilho",
|
||||
|
@ -478,7 +526,6 @@
|
|||
"edt_dev_spec_clientKey_title": "Chavecliente:",
|
||||
"edt_dev_spec_colorComponent_title": "Componente de cor",
|
||||
"edt_dev_spec_debugLevel_title": "Nível de Depuração",
|
||||
"edt_dev_spec_debugStreamer_title": "Streamer Debug",
|
||||
"edt_dev_spec_delayAfterConnect_title": "Atrasar após conectar",
|
||||
"edt_dev_spec_devices_discovered_none": "Nenhum dispositivo foi descoberto",
|
||||
"edt_dev_spec_devices_discovered_title": "Dispositivos descobertos",
|
||||
|
@ -523,13 +570,13 @@
|
|||
"edt_dev_spec_port_title": "Porta",
|
||||
"edt_dev_spec_printTimeStamp_title": "Adicionar carimbo de data / hora",
|
||||
"edt_dev_spec_pwmChannel_title": "Canal PWM",
|
||||
"edt_dev_spec_razer_device_title": "Dispositivo Razer Chroma",
|
||||
"edt_dev_spec_restoreOriginalState_title": "Restaurar o estado das luzes",
|
||||
"edt_dev_spec_restoreOriginalState_title_info": "Restaura o estado original do dispositivo quando o dispositivo é desativado",
|
||||
"edt_dev_spec_serial_title": "Número Serial",
|
||||
"edt_dev_spec_spipath_title": "Dispositivo SPI",
|
||||
"edt_dev_spec_sslHSTimeoutMax_title": "Tempo limite máximo do aperto de mão do Streamer",
|
||||
"edt_dev_spec_sslHSTimeoutMin_title": "Tempo limite mínimo de handshake do Streamer",
|
||||
"edt_dev_spec_sslReadTimeout_title": "Tempo limite de leitura do streamer",
|
||||
"edt_dev_spec_switchOffOnBlack_title": "Desligue no preto",
|
||||
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Desligar, abaixo do mínimo",
|
||||
"edt_dev_spec_syncOverwrite_title": "Desactivar a sincronização",
|
||||
|
@ -598,9 +645,14 @@
|
|||
"edt_eff_frequency": "Frequência",
|
||||
"edt_eff_gif_header": "GIF's",
|
||||
"edt_eff_gif_header_desc": "Este efeito reproduz arquivos .gif, fornece um vídeo simples como um loop como efeito.",
|
||||
"edt_eff_grayscale": "Escala de cinza",
|
||||
"edt_eff_height": "Altura",
|
||||
"edt_eff_huechange": "Mudança de cor",
|
||||
"edt_eff_image": "Arquivo de imagem",
|
||||
"edt_eff_image_source": "Arquivo da imagem",
|
||||
"edt_eff_image_source_file": "Arquivo local",
|
||||
"edt_eff_image_source_url": "URL",
|
||||
"edt_eff_initial_blink": "Piscar para chamar atenção",
|
||||
"edt_eff_interval": "intervalo",
|
||||
"edt_eff_knightrider_header": "Knight Rider",
|
||||
"edt_eff_knightrider_header_desc": "K.I.T.T está de volta! O scanner frontal do conhecido carro, desta vez não apenas em vermelho.",
|
||||
|
@ -638,6 +690,7 @@
|
|||
"edt_eff_reversedirection": "Reverter direção",
|
||||
"edt_eff_rotationtime": "Tempo de rotação",
|
||||
"edt_eff_saturation": "Saturação",
|
||||
"edt_eff_set_post_color": "Ajustar a cor após um alarme",
|
||||
"edt_eff_showseconds": "Mostrar segundos",
|
||||
"edt_eff_sleeptime": "Tempo de descanso",
|
||||
"edt_eff_smooth_custom": "Habilitar suavização",
|
||||
|
@ -656,6 +709,7 @@
|
|||
"edt_eff_traces_header_desc": "Requer redesenho",
|
||||
"edt_eff_trails_header": "Estrelas cadentes",
|
||||
"edt_eff_trails_header_desc": "Estrelas coloridas que caem de cima para baixo",
|
||||
"edt_eff_url": "Endereço de imagem",
|
||||
"edt_eff_waves_header": "Ondas",
|
||||
"edt_eff_waves_header_desc": "Ondas de cor! Escolha suas cores, tempo de rotação, direção reversa e muito mais.",
|
||||
"edt_eff_whichleds": "Quais LEDs",
|
||||
|
@ -680,6 +734,10 @@
|
|||
"edt_msg_error_disallow": "O valor não deve ser do tipo $1",
|
||||
"edt_msg_error_disallow_union": "O valor não deve ser um dos tipos não permitidos fornecidos",
|
||||
"edt_msg_error_enum": "O valor deve ser um dos valores enumerados",
|
||||
"edt_msg_error_hostname": "O nome do host tem o formato errado",
|
||||
"edt_msg_error_invalid_epoch": "A data deve ser superior a 1 de Janeiro de 1970",
|
||||
"edt_msg_error_ipv4": "O valor deve ser um endereço IPv4 válido na forma de 4 números entre 0 e 255, separados por pontos",
|
||||
"edt_msg_error_ipv6": "O valor deve ser um endereço IPv6 válido",
|
||||
"edt_msg_error_maxItems": "O valor deve ter no máximo $1 itens",
|
||||
"edt_msg_error_maxLength": "O valor deve ter no máximo $1 caracteres",
|
||||
"edt_msg_error_maxProperties": "O objeto deve ter no máximo $1 propriedades",
|
||||
|
@ -700,6 +758,8 @@
|
|||
"edt_msg_error_type": "O valor deve ser do tipo $1",
|
||||
"edt_msg_error_type_union": "O valor deve ser um dos tipos fornecidos",
|
||||
"edt_msg_error_uniqueItems": "A matriz deve ter itens exclusivos",
|
||||
"edt_msgcust_error_hostname_ip": "Não é um nome de host válido nem IPv4 nem IPv6",
|
||||
"edt_msgcust_error_hostname_ip4": "Não é um nome de host válido nem IPv4",
|
||||
"effectsconfigurator_button_conttest": "Teste Contínuo",
|
||||
"effectsconfigurator_button_deleffect": "Deletar Efeito",
|
||||
"effectsconfigurator_button_editeffect": "Carregar Efgeito",
|
||||
|
@ -756,14 +816,20 @@
|
|||
"general_country_ru": "Rússia",
|
||||
"general_country_uk": "Reino Unido",
|
||||
"general_country_us": "Estados Unidos",
|
||||
"general_disabled": "Desativado",
|
||||
"general_enabled": "Ativado",
|
||||
"general_speech_cs": "Tcheco",
|
||||
"general_speech_da": "Dinamarquês",
|
||||
"general_speech_de": "Alemanha",
|
||||
"general_speech_en": "Inglês",
|
||||
"general_speech_es": "Espanhol",
|
||||
"general_speech_fr": "Francês",
|
||||
"general_speech_hu": "Hungáro",
|
||||
"general_speech_it": "Italiano",
|
||||
"general_speech_nb": "Norueguês (Bokmål)",
|
||||
"general_speech_nl": "Holandês",
|
||||
"general_speech_pl": "Polonês",
|
||||
"general_speech_pt": "Português",
|
||||
"general_speech_ro": "Romeno",
|
||||
"general_speech_ru": "Russo",
|
||||
"general_speech_sv": "Sueco",
|
||||
|
@ -783,6 +849,10 @@
|
|||
"infoDialog_import_confirm_title": "Confirmar importação",
|
||||
"infoDialog_import_hyperror_text": "O arquivo de configuração selecionado \"$1\" não pode ser importado. Não é compatível com Hyperion 2.0 e superior!",
|
||||
"infoDialog_import_jsonerror_text": "O arquivo de configuração selecionado \"$1\" não é um arquivo .json ou está corrompido. Mensagem de erro: ($2)",
|
||||
"infoDialog_password_current_text": "Senha atual",
|
||||
"infoDialog_password_minimum_length": "Senhas precisam conter no mínimo 8 caracteres.",
|
||||
"infoDialog_password_new_text": "Nova senha",
|
||||
"infoDialog_username_text": "Usuário",
|
||||
"infoDialog_wizrgb_text": "Sua ordem de bytes RGB já está bem ajustada.",
|
||||
"infoDialog_writeconf_error_text": "Falha ao salvar sua configuração.",
|
||||
"infoDialog_writeimage_error_text": "O arquivo selecionado \"$1\" não é um arquivo de imagem ou está corrompido! Selecione outro arquivo de imagem.",
|
||||
|
@ -802,6 +872,7 @@
|
|||
"main_ledsim_btn_togglelednumber": "Números dos LEDs",
|
||||
"main_ledsim_btn_toggleleds": "Mostrar LEDs",
|
||||
"main_ledsim_btn_togglelivevideo": "Video em tempo real",
|
||||
"main_ledsim_btn_togglesigdetect": "Área de detecção de sinal",
|
||||
"main_ledsim_text": "Visualização em tempo real das cores dos LEDs e, opcionalmente, stream de vídeo do dispositivo de captura.",
|
||||
"main_ledsim_title": "Visualização LED",
|
||||
"main_menu_about_token": "Sobre o Hyperion",
|
||||
|
@ -813,6 +884,7 @@
|
|||
"main_menu_general_conf_token": "Geral",
|
||||
"main_menu_grabber_conf_token": "Hardware de Captura",
|
||||
"main_menu_input_selection_token": "Seleção de",
|
||||
"main_menu_instcapture_conf_token": "Fontes",
|
||||
"main_menu_leds_conf_token": "Hardware LED",
|
||||
"main_menu_logging_token": "Log",
|
||||
"main_menu_network_conf_token": "Serviços de Rede",
|
||||
|
@ -912,6 +984,7 @@
|
|||
"wiz_cc_testintrok": "Pressione o botão abaixo para iniciar um vídeo de teste.",
|
||||
"wiz_cc_testintrowok": "Confira o seguinte link para baixar vídeos de teste:",
|
||||
"wiz_cc_title": "Assistente de calibração de cores",
|
||||
"wiz_cc_try_connect": "Conectando...",
|
||||
"wiz_cololight_desc2": "Agora escolha quais Cololights devem ser adicionados. Para identificar luzes individuais, pressione o botão à direita.",
|
||||
"wiz_cololight_intro1": "Este assistente configura o Hyperion para o sistema Cololight. Os recursos são a detecção automática Cololight e ajuste as configurações do Hyperion automaticamente! Resumindo: Tudo o que você precisa é de alguns cliques e pronto! <br /> Nota: No caso do Cololight Strip, pode ser necessário corrigir manualmente a contagem e o layout dos LEDs.",
|
||||
"wiz_cololight_noprops": "Não é possível obter propriedades do dispositivo - Definir contagem de LED de hardware manualmente",
|
||||
|
@ -947,6 +1020,7 @@
|
|||
"wiz_hue_username": "ID de Usuário:",
|
||||
"wiz_identify": "Identificar",
|
||||
"wiz_identify_light": "identificar $1",
|
||||
"wiz_identify_tip": "Acender dispositivo configurado para identificação",
|
||||
"wiz_ids_disabled": "Desativado",
|
||||
"wiz_ids_entire": "Foto Inteira",
|
||||
"wiz_noLights": "Nenhum $1 encontrado! Conecte as luzes à rede ou configure-as manualmente.",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -5,6 +5,8 @@
|
|||
"InfoDialog_changePassword_title": "修改密码",
|
||||
"InfoDialog_iswitch_text": "如果您在本地网络中运行多个 Hyperion实例,可以在 Web 配置之间切换。 选择下面的 Hyperion 实例并切换!",
|
||||
"InfoDialog_iswitch_title": "Hyperion切换器",
|
||||
"InfoDialog_nostorage_text": "您的浏览器不支持 localStorage。您无法保存特定的语言设置(回退到“自动检测”)和访问级别(回退到“默认”)。某些向导可能被隐藏。您仍然可以使用网络界面而不会出现其他问题",
|
||||
"InfoDialog_nostorage_title": "无法存储设置",
|
||||
"InfoDialog_nowrite_foottext": "在解决问题后,WebUI会自动在会被解锁!",
|
||||
"InfoDialog_nowrite_text": "Hyperion 无法写入您当前加载的配置文件。 请修复文件权限以继续。",
|
||||
"InfoDialog_nowrite_title": "写入权限错误!",
|
||||
|
@ -20,9 +22,9 @@
|
|||
"conf_colors_blackborder_intro": "跳过任意黑边。 每种模式都使用另一种针对特殊情况进行调整的检测算法。 如果觉得不合适,请提高阈值。",
|
||||
"conf_colors_color_intro": "创建一个或多个校准配置文件,调整每种颜色,亮度,线性化等等。",
|
||||
"conf_colors_smoothing_intro": "平滑颜色/亮度变化以减少烦扰的注意力分散。",
|
||||
"conf_effect_bgeff_intro": "定义背景特效/颜色,将在 Hyperion“空闲”时显示。 始终为优先级255 。",
|
||||
"conf_effect_fgeff_intro": "定义启动特效或颜色,在 Hyperion 启动时显示,将持续指定的时长。",
|
||||
"conf_effect_path_intro": "从定义的路径加载特效。另外,您可以按名称禁用单个特效,以在所有特效列表中隐藏它们。",
|
||||
"conf_effect_bgeff_intro": "定义背景效果/颜色,将在 Hyperion“空闲”时显示。 始终为优先级255 。",
|
||||
"conf_effect_fgeff_intro": "定义启动效果或颜色,在 Hyperion 启动时显示,将持续指定的时长。",
|
||||
"conf_effect_path_intro": "从定义的路径加载效果。另外,您可以按名称禁用单个效果,以在所有效果列表中隐藏它们。",
|
||||
"conf_general_createInst_btn": "创建实例",
|
||||
"conf_general_impexp_expbtn": "导出",
|
||||
"conf_general_impexp_impbtn": "导入",
|
||||
|
@ -40,6 +42,7 @@
|
|||
"conf_general_intro": "Hyperion 和 WebUI 的基本设置。",
|
||||
"conf_general_label_title": "常规设置",
|
||||
"conf_grabber_fg_intro": "屏幕捕获的输入源为安装了Hyperion本地系统的屏幕。",
|
||||
"conf_grabber_inst_grabber_config_info": "conf_grabber_inst_grabber_config_info",
|
||||
"conf_grabber_v4l_intro": "USB捕获的输入源为USB图像捕获设备。",
|
||||
"conf_helptable_expl": "说明",
|
||||
"conf_helptable_option": "选项",
|
||||
|
@ -48,8 +51,12 @@
|
|||
"conf_leds_contr_label_contrtype": "控制器类型:",
|
||||
"conf_leds_device_info_log": "若您的LED不工作,在此检视错误",
|
||||
"conf_leds_device_intro": "Hyperion支持许多控制器传输数据到您的目标设备。 从排序列表中选择一个LED控制器并进行配置。 我们为每个设备选择了最佳默认设置。",
|
||||
"conf_leds_error_get_properties_text": "conf_leds_error_get_properties_text",
|
||||
"conf_leds_error_get_properties_title": "conf_leds_error_get_properties_title",
|
||||
"conf_leds_error_hwled_gt_layout": "硬件LED数量($1)大于通过布局配置的LED数量($2),<br>$3 {{plural:$3|LED|LEDs}}将无法点亮。",
|
||||
"conf_leds_error_hwled_gt_maxled": "conf_leds_error_hwled_gt_maxled",
|
||||
"conf_leds_error_hwled_lt_layout": "硬件LED数量($1)小于通过布局配置的LED数量($2)。 <br> 布局中配置的LED数量不得超过可用LED数量。",
|
||||
"conf_leds_info_ws281x": "conf_leds_info_ws281x",
|
||||
"conf_leds_layout_advanced": "高级设置",
|
||||
"conf_leds_layout_blacklist_num_title": "LED数量",
|
||||
"conf_leds_layout_blacklist_rule_title": "黑名单规则",
|
||||
|
@ -90,6 +97,7 @@
|
|||
"conf_leds_layout_generatedconf": "生成/当前LED配置",
|
||||
"conf_leds_layout_intro": "您还需要一个LED布局以反映您的LED具体位置。 经典布局是常用电视框架,但我们也支持创建LED矩阵(LED 墙)。此布局的视角始终为电视的正面。",
|
||||
"conf_leds_layout_ma_cabling": "布线",
|
||||
"conf_leds_layout_ma_direction": "conf_leds_layout_ma_direction",
|
||||
"conf_leds_layout_ma_horiz": "水平",
|
||||
"conf_leds_layout_ma_optbottomleft": "左下",
|
||||
"conf_leds_layout_ma_optbottomright": "右下",
|
||||
|
@ -111,7 +119,7 @@
|
|||
"conf_leds_layout_preview_ledpower": "LED峰值功耗:$1 A",
|
||||
"conf_leds_layout_preview_originCL": "从经典布局(LED框架)创建",
|
||||
"conf_leds_layout_preview_originMA": "从矩阵布局(LED墙)创建",
|
||||
"conf_leds_layout_preview_originTEXT": "Created from: Textfield",
|
||||
"conf_leds_layout_preview_originTEXT": "原始文字",
|
||||
"conf_leds_layout_preview_totalleds": "LED总数:$1",
|
||||
"conf_leds_layout_ptl": "左上角",
|
||||
"conf_leds_layout_ptlh": "水平",
|
||||
|
@ -125,10 +133,12 @@
|
|||
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
|
||||
"conf_leds_optgroup_RPiPWM": "RPi PWM",
|
||||
"conf_leds_optgroup_RPiSPI": "RPi SPI",
|
||||
"conf_leds_optgroup_debug": "conf_leds_optgroup_debug",
|
||||
"conf_leds_optgroup_network": "网络",
|
||||
"conf_leds_optgroup_other": "其他",
|
||||
"conf_leds_optgroup_usb": "USB/串口",
|
||||
"conf_logging_btn_autoscroll": "自动滚动",
|
||||
"conf_logging_btn_clipboard": "conf_logging_btn_clipboard",
|
||||
"conf_logging_btn_pbupload": "上传请求支持报告",
|
||||
"conf_logging_contpolicy": "举报隐私政策",
|
||||
"conf_logging_label_intro": "查看日志的页面,信息多少取决于设置的日志级别。",
|
||||
|
@ -168,30 +178,31 @@
|
|||
"dashboard_componentbox_label_comp": "组件",
|
||||
"dashboard_componentbox_label_status": "状态",
|
||||
"dashboard_componentbox_label_title": "组件状态",
|
||||
"dashboard_infobox_label_currenthyp": "您的Hyperion版本:",
|
||||
"dashboard_infobox_label_currenthyp": "Hyperion版本:",
|
||||
"dashboard_infobox_label_disableh": "禁用实例: $1",
|
||||
"dashboard_infobox_label_enableh": "启用实例: $1",
|
||||
"dashboard_infobox_label_instance": "实例:",
|
||||
"dashboard_infobox_label_latesthyp": "最新的Hyperion版本:",
|
||||
"dashboard_infobox_label_platform": "平台:",
|
||||
"dashboard_infobox_label_port_flat": "Flatbuffer:",
|
||||
"dashboard_infobox_label_port_json": "JSON-Server:",
|
||||
"dashboard_infobox_label_port_proto": "Protobuffer:",
|
||||
"dashboard_infobox_label_port_boblight": "dashboard_infobox_label_port_boblight",
|
||||
"dashboard_infobox_label_port_flat": "dashboard_infobox_label_port_flat",
|
||||
"dashboard_infobox_label_port_json": "dashboard_infobox_label_port_json",
|
||||
"dashboard_infobox_label_port_proto": "dashboard_infobox_label_port_proto",
|
||||
"dashboard_infobox_label_ports": "端口",
|
||||
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
|
||||
"dashboard_infobox_label_ports_websocket": "dashboard_infobox_label_ports_websocket",
|
||||
"dashboard_infobox_label_smartacc": "智能访问",
|
||||
"dashboard_infobox_label_statush": "Hyperion状态:",
|
||||
"dashboard_infobox_label_title": "信息",
|
||||
"dashboard_infobox_label_watchedversionbranch": "监控的版本分支:",
|
||||
"dashboard_infobox_label_watchedversionbranch": "版本分支:",
|
||||
"dashboard_infobox_message_updatesuccess": "您的Hyperion版本是最新的!",
|
||||
"dashboard_infobox_message_updatewarning": "Hyperion出新番啦,你确定不更新一下吗 ($1)",
|
||||
"dashboard_infobox_message_updatewarning": "Hyperion更新啦,你确定不更新一下吗 ($1)",
|
||||
"dashboard_label_intro": "仪表板可以让您快速了解Hyperion的状态",
|
||||
"dashboard_message_default_password": "WebUI现在只设置了默认密码。我们强烈建议您更改。",
|
||||
"dashboard_message_default_password_t": "WebUI默认密码已设",
|
||||
"dashboard_message_do_not_show_again": "我不想再看到它啦",
|
||||
"dashboard_message_global_setting": "该页面的设置不取决于任何特定的实例。更改设置将应用于所有实例。",
|
||||
"dashboard_message_global_setting_t": "实例独立设置",
|
||||
"dashboard_newsbox_label_title": "Hyperion博客",
|
||||
"dashboard_newsbox_label_title": "Hyperion新闻",
|
||||
"dashboard_newsbox_noconn": "Hyperion走丢了,你们中间的那条(网)线呢?",
|
||||
"dashboard_newsbox_readmore": "更多消息",
|
||||
"dashboard_newsbox_visitblog": "来康康我们的博客呢",
|
||||
|
@ -219,11 +230,11 @@
|
|||
"edt_conf_bb_threshold_title": "阈值",
|
||||
"edt_conf_bb_unknownFrameCnt_expl": "边界设置为0之前不检测的帧数。",
|
||||
"edt_conf_bb_unknownFrameCnt_title": "未知帧数",
|
||||
"edt_conf_bge_heading_title": "背景特效/颜色",
|
||||
"edt_conf_bge_heading_title": "背景效果/颜色",
|
||||
"edt_conf_bobls_heading_title": "Boblight服务",
|
||||
"edt_conf_color_backlightColored_expl": "给背景光加点颜色。",
|
||||
"edt_conf_color_backlightColored_title": "颜色背景光",
|
||||
"edt_conf_color_backlightThreshold_expl": "背景光最小亮度。在显示特效,颜色和状态为“关闭”时不启用。",
|
||||
"edt_conf_color_backlightThreshold_expl": "背景光最小亮度。在显示效果,颜色和状态为“关闭”时不启用。",
|
||||
"edt_conf_color_backlightThreshold_title": "背景光阈值",
|
||||
"edt_conf_color_black_expl": "校准的黑色色度。",
|
||||
"edt_conf_color_black_title": "黑色",
|
||||
|
@ -261,22 +272,25 @@
|
|||
"edt_conf_color_white_title": "白色",
|
||||
"edt_conf_color_yellow_expl": "校准的黄色色度。",
|
||||
"edt_conf_color_yellow_title": "黄色",
|
||||
"edt_conf_effp_disable_expl": "将需要禁用或隐藏的特效名字添加至此。",
|
||||
"edt_conf_effp_disable_itemtitle": "特效",
|
||||
"edt_conf_effp_disable_title": "禁用特效",
|
||||
"edt_conf_effp_heading_title": "特效路径",
|
||||
"edt_conf_effp_paths_expl": "你可以定义更多包含特效文件的文件夹。特效配置器将始终保存在第一个文件夹中。",
|
||||
"edt_conf_effp_disable_expl": "将需要禁用或隐藏的效果名字添加至此。",
|
||||
"edt_conf_effp_disable_itemtitle": "效果",
|
||||
"edt_conf_effp_disable_title": "禁用效果",
|
||||
"edt_conf_effp_heading_title": "效果路径",
|
||||
"edt_conf_effp_paths_expl": "你可以定义更多包含效果文件的文件夹。效果配置器将始终保存在第一个文件夹中。",
|
||||
"edt_conf_effp_paths_itemtitle": "路径",
|
||||
"edt_conf_effp_paths_title": "特效路径",
|
||||
"edt_conf_effp_paths_title": "效果路径",
|
||||
"edt_conf_enum_BOTH": "edt_conf_enum_BOTH",
|
||||
"edt_conf_enum_HORIZONTAL": "edt_conf_enum_HORIZONTAL",
|
||||
"edt_conf_enum_NO_CHANGE": "自动",
|
||||
"edt_conf_enum_NTSC": "NTSC",
|
||||
"edt_conf_enum_PAL": "PAL",
|
||||
"edt_conf_enum_SECAM": "SECAM",
|
||||
"edt_conf_enum_VERTICAL": "edt_conf_enum_VERTICAL",
|
||||
"edt_conf_enum_automatic": "自动",
|
||||
"edt_conf_enum_bbclassic": "经典",
|
||||
"edt_conf_enum_bbdefault": "默认",
|
||||
"edt_conf_enum_bbletterbox": "信箱",
|
||||
"edt_conf_enum_bbosd": "OSD",
|
||||
"edt_conf_enum_bbosd": "屏幕菜单",
|
||||
"edt_conf_enum_bgr": "BGR",
|
||||
"edt_conf_enum_bottom_up": "下到上",
|
||||
"edt_conf_enum_brg": "BRG",
|
||||
|
@ -291,16 +305,16 @@
|
|||
"edt_conf_enum_dl_verbose1": "详情等级1",
|
||||
"edt_conf_enum_dl_verbose2": "详情等级2",
|
||||
"edt_conf_enum_dl_verbose3": "详情等级3",
|
||||
"edt_conf_enum_effect": "特效",
|
||||
"edt_conf_enum_effect": "效果",
|
||||
"edt_conf_enum_gbr": "GBR",
|
||||
"edt_conf_enum_grb": "GRB",
|
||||
"edt_conf_enum_hsv": "HSV",
|
||||
"edt_conf_enum_left_right": "左到右",
|
||||
"edt_conf_enum_linear": "线性",
|
||||
"edt_conf_enum_logdebug": "Debug",
|
||||
"edt_conf_enum_logdebug": "调试",
|
||||
"edt_conf_enum_logsilent": "Silent",
|
||||
"edt_conf_enum_logverbose": "详情",
|
||||
"edt_conf_enum_logwarn": "Warning",
|
||||
"edt_conf_enum_logwarn": "警告",
|
||||
"edt_conf_enum_multicolor_mean": "彩色",
|
||||
"edt_conf_enum_please_select": "请选择",
|
||||
"edt_conf_enum_rbg": "RBG",
|
||||
|
@ -328,12 +342,12 @@
|
|||
"edt_conf_fg_width_title": "宽度",
|
||||
"edt_conf_fge_color_expl": "如类型为“颜色”,请在此选择需要的颜色。",
|
||||
"edt_conf_fge_color_title": "颜色",
|
||||
"edt_conf_fge_duration_ms_expl": "Hyperion启动时特效/颜色持续时间。",
|
||||
"edt_conf_fge_duration_ms_expl": "Hyperion启动时效果/颜色持续时间。",
|
||||
"edt_conf_fge_duration_ms_title": "持续时间",
|
||||
"edt_conf_fge_effect_expl": "如果类型为“特效”,请在此选择需要的特效(也可以自己创建特效)。",
|
||||
"edt_conf_fge_effect_title": "特效",
|
||||
"edt_conf_fge_heading_title": "启动特效/颜色",
|
||||
"edt_conf_fge_type_expl": "选择特效或者颜色。",
|
||||
"edt_conf_fge_effect_expl": "如果类型为“效果”,请在此选择需要的效果(也可以自己创建效果)。",
|
||||
"edt_conf_fge_effect_title": "效果",
|
||||
"edt_conf_fge_heading_title": "启动效果/颜色",
|
||||
"edt_conf_fge_type_expl": "选择效果或者颜色。",
|
||||
"edt_conf_fge_type_title": "类型",
|
||||
"edt_conf_fw_flat_expl": "一行填一个Flatbuffer目标。包括IP:PORT (示例: 127.0.0.1:19401)",
|
||||
"edt_conf_fw_flat_itemtitle": "Flatbuffer目标",
|
||||
|
@ -356,10 +370,19 @@
|
|||
"edt_conf_general_port_title": "端口",
|
||||
"edt_conf_general_priority_expl": "该组件的优先级",
|
||||
"edt_conf_general_priority_title": "优先级通道号",
|
||||
"edt_conf_grabber_discovered_expl": "edt_conf_grabber_discovered_expl",
|
||||
"edt_conf_grabber_discovered_none": "edt_conf_grabber_discovered_none",
|
||||
"edt_conf_grabber_discovered_title": "edt_conf_grabber_discovered_title",
|
||||
"edt_conf_grabber_discovered_title_info": "edt_conf_grabber_discovered_title_info",
|
||||
"edt_conf_grabber_discovery_inprogress": "edt_conf_grabber_discovery_inprogress",
|
||||
"edt_conf_instC_screen_grabber_device_expl": "edt_conf_instC_screen_grabber_device_expl",
|
||||
"edt_conf_instC_screen_grabber_device_title": "edt_conf_instC_screen_grabber_device_title",
|
||||
"edt_conf_instC_systemEnable_expl": "对该LED硬件实例启用屏幕捕获。",
|
||||
"edt_conf_instC_systemEnable_title": "启用屏幕捕获",
|
||||
"edt_conf_instC_v4lEnable_expl": "对该LED硬件实例启用USB捕获。",
|
||||
"edt_conf_instC_v4lEnable_title": "启用USB捕获",
|
||||
"edt_conf_instC_video_grabber_device_expl": "edt_conf_instC_video_grabber_device_expl",
|
||||
"edt_conf_instC_video_grabber_device_title": "edt_conf_instC_video_grabber_device_title",
|
||||
"edt_conf_instCapture_heading_title": "捕获",
|
||||
"edt_conf_js_heading_title": "JSON服务",
|
||||
"edt_conf_log_heading_title": "日志",
|
||||
|
@ -384,7 +407,7 @@
|
|||
"edt_conf_pbs_timeout_title": "超时",
|
||||
"edt_conf_smooth_continuousOutput_expl": "即使图像不变化也更新LED。",
|
||||
"edt_conf_smooth_continuousOutput_title": "持续输出",
|
||||
"edt_conf_smooth_decay_expl": "衰减速度。1为线性,更大的值意味更强的特效。",
|
||||
"edt_conf_smooth_decay_expl": "衰减速度。1为线性,更大的值意味更强的效果。",
|
||||
"edt_conf_smooth_decay_title": "衰减度",
|
||||
"edt_conf_smooth_dithering_expl": "通过在相邻颜色之间交替来提高高输出速度下的颜色精度。",
|
||||
"edt_conf_smooth_dithering_title": "抖动",
|
||||
|
@ -407,21 +430,41 @@
|
|||
"edt_conf_v4l2_cecDetection_title": "CEC检测",
|
||||
"edt_conf_v4l2_cropBottom_expl": "从图像中删除的底部像素数。",
|
||||
"edt_conf_v4l2_cropBottom_title": "底部缩进",
|
||||
"edt_conf_v4l2_cropHeightValidation_error": "edt_conf_v4l2_cropHeightValidation_error",
|
||||
"edt_conf_v4l2_cropLeft_expl": "从图像中删除的左边像素数。",
|
||||
"edt_conf_v4l2_cropLeft_title": "左边缩进",
|
||||
"edt_conf_v4l2_cropRight_expl": "从图像中删除的右边像素数。",
|
||||
"edt_conf_v4l2_cropRight_title": "右边缩进",
|
||||
"edt_conf_v4l2_cropTop_expl": "从图像中删除的顶部像素数。",
|
||||
"edt_conf_v4l2_cropTop_title": "定部缩进",
|
||||
"edt_conf_v4l2_cropWidthValidation_error": "edt_conf_v4l2_cropWidthValidation_error",
|
||||
"edt_conf_v4l2_device_expl": "USB捕获设备的路径。设置为“自动”时自动检测。例:/dev/video0",
|
||||
"edt_conf_v4l2_device_title": "设备",
|
||||
"edt_conf_v4l2_encoding_expl": "edt_conf_v4l2_encoding_expl",
|
||||
"edt_conf_v4l2_encoding_title": "edt_conf_v4l2_encoding_title",
|
||||
"edt_conf_v4l2_flip_expl": "edt_conf_v4l2_flip_expl",
|
||||
"edt_conf_v4l2_flip_title": "edt_conf_v4l2_flip_title",
|
||||
"edt_conf_v4l2_fpsSoftwareDecimation_expl": "edt_conf_v4l2_fpsSoftwareDecimation_expl",
|
||||
"edt_conf_v4l2_fpsSoftwareDecimation_title": "edt_conf_v4l2_fpsSoftwareDecimation_title",
|
||||
"edt_conf_v4l2_framerate_expl": "设备支持的帧数",
|
||||
"edt_conf_v4l2_framerate_title": "帧数",
|
||||
"edt_conf_v4l2_greenSignalThreshold_expl": "使低绿色值变暗(识别为黑色)",
|
||||
"edt_conf_v4l2_greenSignalThreshold_title": "绿色信号阈值",
|
||||
"edt_conf_v4l2_hardware_brightness_expl": "edt_conf_v4l2_hardware_brightness_expl",
|
||||
"edt_conf_v4l2_hardware_brightness_title": "edt_conf_v4l2_hardware_brightness_title",
|
||||
"edt_conf_v4l2_hardware_contrast_expl": "edt_conf_v4l2_hardware_contrast_expl",
|
||||
"edt_conf_v4l2_hardware_contrast_title": "edt_conf_v4l2_hardware_contrast_title",
|
||||
"edt_conf_v4l2_hardware_hue_expl": "edt_conf_v4l2_hardware_hue_expl",
|
||||
"edt_conf_v4l2_hardware_hue_title": "edt_conf_v4l2_hardware_hue_title",
|
||||
"edt_conf_v4l2_hardware_saturation_expl": "edt_conf_v4l2_hardware_saturation_expl",
|
||||
"edt_conf_v4l2_hardware_saturation_title": "edt_conf_v4l2_hardware_saturation_title",
|
||||
"edt_conf_v4l2_hardware_set_defaults": "edt_conf_v4l2_hardware_set_defaults",
|
||||
"edt_conf_v4l2_hardware_set_defaults_tip": "edt_conf_v4l2_hardware_set_defaults_tip",
|
||||
"edt_conf_v4l2_heading_title": "USB捕获",
|
||||
"edt_conf_v4l2_input_expl": "选择设备的视频输入。 选择“自动”以保留v4l2所选值。",
|
||||
"edt_conf_v4l2_input_title": "输入",
|
||||
"edt_conf_v4l2_noSignalCounterThreshold_expl": "edt_conf_v4l2_noSignalCounterThreshold_expl",
|
||||
"edt_conf_v4l2_noSignalCounterThreshold_title": "edt_conf_v4l2_noSignalCounterThreshold_title",
|
||||
"edt_conf_v4l2_redSignalThreshold_expl": "使低红色值变暗(识别为黑色)",
|
||||
"edt_conf_v4l2_redSignalThreshold_title": "红色信号阈值",
|
||||
"edt_conf_v4l2_resolution_expl": "启用设备所支持的分辨率列表",
|
||||
|
@ -472,8 +515,6 @@
|
|||
"edt_dev_spec_baudrate_title": "比特率",
|
||||
"edt_dev_spec_blackLightsTimeout_title": "黑色信号检测超时",
|
||||
"edt_dev_spec_brightnessFactor_title": "亮度因数",
|
||||
"edt_dev_spec_brightnessMax_title": "最大亮度",
|
||||
"edt_dev_spec_brightnessMin_title": "最小亮度",
|
||||
"edt_dev_spec_brightnessOverwrite_title": "覆盖亮度",
|
||||
"edt_dev_spec_brightnessThreshold_title": "信号检测亮度最小值",
|
||||
"edt_dev_spec_brightness_title": "亮度",
|
||||
|
@ -482,7 +523,6 @@
|
|||
"edt_dev_spec_clientKey_title": "客户端密钥",
|
||||
"edt_dev_spec_colorComponent_title": "颜色组件",
|
||||
"edt_dev_spec_debugLevel_title": "Debug级别",
|
||||
"edt_dev_spec_debugStreamer_title": "流媒体Debug",
|
||||
"edt_dev_spec_delayAfterConnect_title": "连接后延迟",
|
||||
"edt_dev_spec_devices_discovered_none": "未发现设备",
|
||||
"edt_dev_spec_devices_discovered_title": "发现设备",
|
||||
|
@ -527,20 +567,20 @@
|
|||
"edt_dev_spec_port_title": "端口",
|
||||
"edt_dev_spec_printTimeStamp_title": "加时间戳",
|
||||
"edt_dev_spec_pwmChannel_title": "PWM通道",
|
||||
"edt_dev_spec_razer_device_title": "edt_dev_spec_razer_device_title",
|
||||
"edt_dev_spec_restoreOriginalState_title": "恢复灯状态",
|
||||
"edt_dev_spec_restoreOriginalState_title_info": "设备不启用时恢复设备原始状态",
|
||||
"edt_dev_spec_serial_title": "序列号",
|
||||
"edt_dev_spec_spipath_title": "SPI设备",
|
||||
"edt_dev_spec_sslHSTimeoutMax_title": "推流握手超时最大值",
|
||||
"edt_dev_spec_sslHSTimeoutMin_title": "推流握手超时最小值",
|
||||
"edt_dev_spec_sslReadTimeout_title": "推流读取超时Streamer read timeout",
|
||||
"edt_dev_spec_switchOffOnBlack_title": "黑屏时关闭",
|
||||
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "小于最小值时关闭",
|
||||
"edt_dev_spec_syncOverwrite_title": "禁用同步",
|
||||
"edt_dev_spec_targetIpHost_title": "目标Hostname/IP",
|
||||
"edt_dev_spec_targetIpHost_title_info": "设备的或IP地址",
|
||||
"edt_dev_spec_targetIp_title": "目标IP",
|
||||
"edt_dev_spec_transeffect_title": "过渡特效",
|
||||
"edt_dev_spec_transeffect_title": "过渡效果",
|
||||
"edt_dev_spec_transistionTimeExtra_title": "额外暗屏时间",
|
||||
"edt_dev_spec_transistionTime_title": "过渡时间",
|
||||
"edt_dev_spec_uid_title": "UID",
|
||||
|
@ -559,7 +599,7 @@
|
|||
"edt_eff_basecolorchangerate": "基本色改变频率",
|
||||
"edt_eff_basecolorrangeleft": "基本色左区域",
|
||||
"edt_eff_basecolorrangeright": "基本色右区域",
|
||||
"edt_eff_blobcount": "斑点数",
|
||||
"edt_eff_blobcount": "光斑数量",
|
||||
"edt_eff_brightness": "亮度",
|
||||
"edt_eff_candle_header": "蜡烛",
|
||||
"edt_eff_candle_header_desc": "闪烁的蜡烛",
|
||||
|
@ -573,20 +613,20 @@
|
|||
"edt_eff_colorMinute": "颜色分钟",
|
||||
"edt_eff_colorSecond": "颜色秒",
|
||||
"edt_eff_colorcount": "颜色长度",
|
||||
"edt_eff_colorend": "颜色结束",
|
||||
"edt_eff_colorendtime": "保持起始颜色的时间",
|
||||
"edt_eff_colorend": "结束颜色",
|
||||
"edt_eff_colorendtime": "起始颜色保持时间",
|
||||
"edt_eff_colorevel": "颜色级别",
|
||||
"edt_eff_colorone": "颜色1",
|
||||
"edt_eff_colorrandom": "随机颜色",
|
||||
"edt_eff_colorshift": "颜色转换",
|
||||
"edt_eff_colorstart": "颜色起始",
|
||||
"edt_eff_colorstarttime": "保持结束颜色时间",
|
||||
"edt_eff_colorstart": "开始颜色",
|
||||
"edt_eff_colorstarttime": "结束颜色持续时间",
|
||||
"edt_eff_colortwo": "颜色2",
|
||||
"edt_eff_count": "数量",
|
||||
"edt_eff_countries": "国家",
|
||||
"edt_eff_customColor": "自定颜色",
|
||||
"edt_eff_enableSecondSwirl": "第二漩涡",
|
||||
"edt_eff_enableshutdown": "真关停",
|
||||
"edt_eff_enableshutdown": "允许关停",
|
||||
"edt_eff_enum_all": "所有",
|
||||
"edt_eff_enum_all-together": "所有一起",
|
||||
"edt_eff_enum_list": "LED列表",
|
||||
|
@ -601,10 +641,15 @@
|
|||
"edt_eff_fps": "每秒帧数",
|
||||
"edt_eff_frequency": "频率",
|
||||
"edt_eff_gif_header": "GIF图",
|
||||
"edt_eff_gif_header_desc": "该特效播放gif图片,呈现简单的视频特效T。",
|
||||
"edt_eff_gif_header_desc": "该效果播放gif图片,呈现简单的视频效果T。",
|
||||
"edt_eff_grayscale": "edt_eff_grayscale",
|
||||
"edt_eff_height": "高度",
|
||||
"edt_eff_huechange": "颜色变化",
|
||||
"edt_eff_image": "图像文件",
|
||||
"edt_eff_image_source": "edt_eff_image_source",
|
||||
"edt_eff_image_source_file": "edt_eff_image_source_file",
|
||||
"edt_eff_image_source_url": "edt_eff_image_source_url",
|
||||
"edt_eff_initial_blink": "edt_eff_initial_blink",
|
||||
"edt_eff_interval": "间隔",
|
||||
"edt_eff_knightrider_header": "霹雳游侠",
|
||||
"edt_eff_knightrider_header_desc": "基特归来!基特的前置灯光扫描,不仅只有红色哦。",
|
||||
|
@ -642,9 +687,10 @@
|
|||
"edt_eff_reversedirection": "反转方向",
|
||||
"edt_eff_rotationtime": "旋转时间",
|
||||
"edt_eff_saturation": "饱和",
|
||||
"edt_eff_set_post_color": "edt_eff_set_post_color",
|
||||
"edt_eff_showseconds": "显示秒数",
|
||||
"edt_eff_sleeptime": "休眠时间",
|
||||
"edt_eff_smooth_custom": "平滑使能",
|
||||
"edt_eff_smooth_custom": "平滑",
|
||||
"edt_eff_smooth_time_ms": "平滑时间",
|
||||
"edt_eff_smooth_updateFrequency": "平滑更新频率",
|
||||
"edt_eff_snake_header": "蛇",
|
||||
|
@ -655,11 +701,12 @@
|
|||
"edt_eff_swirl_header": "彩色漩涡",
|
||||
"edt_eff_swirl_header_desc": "自定义颜色的漩涡。 颜色甚至可以扩展到 360°,基于颜色之间的变化计算。 另外,您可以在顶部添加第二个漩涡,请注意需要部分透明度! 提示:相同颜色的重复会导致“更高”的颜色区域并减少的颜色变化区域。",
|
||||
"edt_eff_systemshutdown_header": "系统关停",
|
||||
"edt_eff_systemshutdown_header_desc": "真实系统关停模拟动画特效",
|
||||
"edt_eff_systemshutdown_header_desc": "真实系统关停模拟动画效果",
|
||||
"edt_eff_traces_header": "颜色追踪",
|
||||
"edt_eff_traces_header_desc": "需要重新设计",
|
||||
"edt_eff_trails_header": "落星",
|
||||
"edt_eff_trails_header_desc": "从上落下的彩色的星星",
|
||||
"edt_eff_url": "URL",
|
||||
"edt_eff_waves_header": "波浪",
|
||||
"edt_eff_waves_header_desc": "颜色波浪!可选择您的颜色,旋转时间,方向反转等。",
|
||||
"edt_eff_whichleds": "哪个LED",
|
||||
|
@ -684,6 +731,10 @@
|
|||
"edt_msg_error_disallow": "该值不能时类型$1",
|
||||
"edt_msg_error_disallow_union": "该值不能为不允许的类型",
|
||||
"edt_msg_error_enum": "该值必须为枚举值",
|
||||
"edt_msg_error_hostname": "edt_msg_error_hostname",
|
||||
"edt_msg_error_invalid_epoch": "edt_msg_error_invalid_epoch",
|
||||
"edt_msg_error_ipv4": "edt_msg_error_ipv4",
|
||||
"edt_msg_error_ipv6": "edt_msg_error_ipv6",
|
||||
"edt_msg_error_maxItems": "该值最多只能有$1个项目",
|
||||
"edt_msg_error_maxLength": "该值最多只能有$1字符的长度",
|
||||
"edt_msg_error_maxProperties": "对象最多拥有$1个属性",
|
||||
|
@ -704,16 +755,18 @@
|
|||
"edt_msg_error_type": "该值必须为类型$1",
|
||||
"edt_msg_error_type_union": "该值必须为允许的类型之一",
|
||||
"edt_msg_error_uniqueItems": "数组必须为唯一项目",
|
||||
"edt_msgcust_error_hostname_ip": "edt_msgcust_error_hostname_ip",
|
||||
"edt_msgcust_error_hostname_ip4": "edt_msgcust_error_hostname_ip4",
|
||||
"effectsconfigurator_button_conttest": "连续测试",
|
||||
"effectsconfigurator_button_deleffect": "删除特效",
|
||||
"effectsconfigurator_button_editeffect": "加载特效",
|
||||
"effectsconfigurator_button_saveeffect": "保存特效",
|
||||
"effectsconfigurator_button_deleffect": "删除效果",
|
||||
"effectsconfigurator_button_editeffect": "加载效果",
|
||||
"effectsconfigurator_button_saveeffect": "保存效果",
|
||||
"effectsconfigurator_button_starttest": "开始测试",
|
||||
"effectsconfigurator_button_stoptest": "停止测试",
|
||||
"effectsconfigurator_editdeleff": "删除/加载特效",
|
||||
"effectsconfigurator_editdeleff": "删除/加载效果",
|
||||
"effectsconfigurator_label_chooseeff": "选择模板",
|
||||
"effectsconfigurator_label_effectname": "特效名称",
|
||||
"effectsconfigurator_label_intro": "根据您的喜好根据基本特效创建新特效。 根据特效,有颜色、速度、方向等选项可用。",
|
||||
"effectsconfigurator_label_effectname": "效果名称",
|
||||
"effectsconfigurator_label_intro": "根据您的喜好根据基本效果创建新效果。 根据效果,有颜色、速度、方向等选项可用。",
|
||||
"general_access_advanced": "高级",
|
||||
"general_access_default": "默认",
|
||||
"general_access_expert": "专家",
|
||||
|
@ -763,10 +816,12 @@
|
|||
"general_disabled": "禁用",
|
||||
"general_enabled": "启用",
|
||||
"general_speech_cs": "捷克语",
|
||||
"general_speech_da": "general_speech_da",
|
||||
"general_speech_de": "德语",
|
||||
"general_speech_en": "英语",
|
||||
"general_speech_es": "西班牙语",
|
||||
"general_speech_fr": "法语",
|
||||
"general_speech_hu": "general_speech_hu",
|
||||
"general_speech_it": "意大利语",
|
||||
"general_speech_nb": "挪威语",
|
||||
"general_speech_nl": "荷兰语",
|
||||
|
@ -778,11 +833,11 @@
|
|||
"general_speech_tr": "土耳其语",
|
||||
"general_speech_vi": "越语",
|
||||
"general_speech_zh-CN": "中文(简体)",
|
||||
"general_webui_title": "Hyperion - Web配置",
|
||||
"general_webui_title": "Hyperion - 网页配置",
|
||||
"general_wiki_moreto": "更多关于\"$1\"的信息请访问我们的Wiki",
|
||||
"infoDialog_checklist_title": "清单",
|
||||
"infoDialog_effconf_created_text": "特效“$1”已成功创建!",
|
||||
"infoDialog_effconf_deleted_text": "特效“$1”已成功删除!",
|
||||
"infoDialog_effconf_created_text": "效果“$1”已成功创建!",
|
||||
"infoDialog_effconf_deleted_text": "效果“$1”已成功删除!",
|
||||
"infoDialog_general_error_title": "错误",
|
||||
"infoDialog_general_success_title": "成功",
|
||||
"infoDialog_general_warning_title": "警告",
|
||||
|
@ -791,6 +846,10 @@
|
|||
"infoDialog_import_confirm_title": "确认导入",
|
||||
"infoDialog_import_hyperror_text": "所选配置文件\"$1\"无法导入。与Hyperion 2.0或更高版本不兼容!",
|
||||
"infoDialog_import_jsonerror_text": "所选配置文件\"$1\"不是.json文件,或文件已损坏。错误信息:($2)",
|
||||
"infoDialog_password_current_text": "当前密码",
|
||||
"infoDialog_password_minimum_length": "infoDialog_password_minimum_length",
|
||||
"infoDialog_password_new_text": "新密码",
|
||||
"infoDialog_username_text": "infoDialog_username_text",
|
||||
"infoDialog_wizrgb_text": "您的RGB顺序已调整好。",
|
||||
"infoDialog_writeconf_error_text": "保持配置失败。",
|
||||
"infoDialog_writeimage_error_text": "所选文件\"$1\"不是图像文件,或文件已损坏!请选择其他图像文件。",
|
||||
|
@ -810,36 +869,38 @@
|
|||
"main_ledsim_btn_togglelednumber": "LED编号",
|
||||
"main_ledsim_btn_toggleleds": "显示LED",
|
||||
"main_ledsim_btn_togglelivevideo": "实时画面",
|
||||
"main_ledsim_btn_togglesigdetect": "main_ledsim_btn_togglesigdetect",
|
||||
"main_ledsim_text": "实时显示led颜色和当前捕获设备的视频流。",
|
||||
"main_ledsim_title": "LED实时状态",
|
||||
"main_menu_about_token": "关于",
|
||||
"main_menu_colors_conf_token": "图像处理",
|
||||
"main_menu_configuration_token": "LED实例",
|
||||
"main_menu_colors_conf_token": "颜色校准",
|
||||
"main_menu_configuration_token": "LED配置",
|
||||
"main_menu_dashboard_token": "仪表盘",
|
||||
"main_menu_effect_conf_token": "特效",
|
||||
"main_menu_effectsconfigurator_token": "特效配置",
|
||||
"main_menu_general_conf_token": "一般",
|
||||
"main_menu_effect_conf_token": "效果",
|
||||
"main_menu_effectsconfigurator_token": "效果定制",
|
||||
"main_menu_general_conf_token": "常规设置",
|
||||
"main_menu_grabber_conf_token": "捕获硬件",
|
||||
"main_menu_input_selection_token": "输入选择",
|
||||
"main_menu_instcapture_conf_token": "main_menu_instcapture_conf_token",
|
||||
"main_menu_leds_conf_token": "LED硬件",
|
||||
"main_menu_logging_token": "日志",
|
||||
"main_menu_network_conf_token": "网络服务",
|
||||
"main_menu_remotecontrol_token": "远程控制",
|
||||
"main_menu_support_token": "支持",
|
||||
"main_menu_system_token": "系统",
|
||||
"main_menu_support_token": "帮助支持",
|
||||
"main_menu_system_token": "系统设置",
|
||||
"main_menu_update_token": "更新资料",
|
||||
"main_menu_webconfig_token": "网页配置",
|
||||
"remote_adjustment_intro": "在运行时修改颜色/亮度/补偿。$1",
|
||||
"remote_adjustment_label": "颜色调整",
|
||||
"remote_color_button_reset": "重置颜色/特效",
|
||||
"remote_color_intro": "设置特效或颜色。列出了创建的特效(如果有的话)。$1",
|
||||
"remote_color_label": "颜色/特效",
|
||||
"remote_color_button_reset": "重置颜色/效果",
|
||||
"remote_color_intro": "设置效果或颜色。列出了创建的效果(如果有的话)。$1",
|
||||
"remote_color_label": "颜色/效果",
|
||||
"remote_color_label_color": "颜色:",
|
||||
"remote_components_intro": "在运行时启用和禁用Hyperion的组件。 $1",
|
||||
"remote_components_label": "组件控制",
|
||||
"remote_effects_label_effects": "特效:",
|
||||
"remote_effects_label_effects": "效果:",
|
||||
"remote_effects_label_picture": "图片:",
|
||||
"remote_input_clearall": "清楚所有特效/颜色",
|
||||
"remote_input_clearall": "清楚所有效果/颜色",
|
||||
"remote_input_duration": "持续时间:",
|
||||
"remote_input_intro": "Hyperion 使用优先级系统来选择源。 您设置的所有内容都有优先级(效果/颜色/屏幕捕获/USB 捕获和网络源)。 默认情况下,Hyperion 根据优先级选择源(最低数字反映当前活动源)。 现在您有机会自行选择来源。$1",
|
||||
"remote_input_ip": "IP:",
|
||||
|
@ -856,10 +917,10 @@
|
|||
"remote_maptype_label": "映射类型",
|
||||
"remote_maptype_label_multicolor_mean": "彩色",
|
||||
"remote_maptype_label_unicolor_mean": "单色",
|
||||
"remote_optgroup_syseffets": "预制特效",
|
||||
"remote_optgroup_syseffets": "预制效果",
|
||||
"remote_optgroup_templates_custom": "用户模板",
|
||||
"remote_optgroup_templates_system": "预制模板",
|
||||
"remote_optgroup_usreffets": "用户特效",
|
||||
"remote_optgroup_usreffets": "用户效果",
|
||||
"remote_videoMode_2D": "2D",
|
||||
"remote_videoMode_3DSBS": "3D左右模式",
|
||||
"remote_videoMode_3DTAB": "3DTAB",
|
||||
|
@ -900,7 +961,7 @@
|
|||
"wiz_atmoorb_title": "AtmoOrb向导",
|
||||
"wiz_cc_adjustgamma": "伽马值:您需要做的是,调整每个通道的伽马级别,直到每个通道的感知量相同。 提示:1.0为中性! 例如,如果您的灰色有点偏红,则意味着您必须增加红色伽玛以减少红色(伽玛越多,颜色越少)。",
|
||||
"wiz_cc_adjustit": "调整您的\"$1\",直到您满意为止。请注意:您对默认值的调整越多,色谱将受到限制(也适用于介于两者之间的所有颜色)。 根据 TV/LED 色谱的不同,结果会有所不同。",
|
||||
"wiz_cc_backlight": "此外,您可以定义背景光以在几乎黑暗的区域中挑选出“错误颜色”,或者如果您不喜欢在观看过程中在颜色和关闭之间的切换。另外,您可以定义是否应该有某种颜色或只是白色。在“关”、“颜色”和“特效”状态下禁用此选项。",
|
||||
"wiz_cc_backlight": "此外,您可以定义背景光以在几乎黑暗的区域中挑选出“错误颜色”,或者如果您不喜欢在观看过程中在颜色和关闭之间的切换。另外,您可以定义是否应该有某种颜色或只是白色。在“关”、“颜色”和“效果”状态下禁用此选项。",
|
||||
"wiz_cc_btn_stop": "停止视频",
|
||||
"wiz_cc_btn_switchpic": "切换图像",
|
||||
"wiz_cc_chooseid": "为此颜色配置文件定义名称。",
|
||||
|
@ -920,6 +981,7 @@
|
|||
"wiz_cc_testintrok": "按下下面的按钮开始测试视频。",
|
||||
"wiz_cc_testintrowok": "查看以下链接下载测试视频:",
|
||||
"wiz_cc_title": "颜色校准向导",
|
||||
"wiz_cc_try_connect": "wiz_cc_try_connect",
|
||||
"wiz_cololight_desc2": "现在选择应该添加哪些 Cololights。要识别单个灯,请按右侧的按钮。",
|
||||
"wiz_cololight_intro1": "此向导配置Hyperion以使用Cololight系统。功能为Cololight自动检测并自动调整Hyperion设置!简而言之:您只需要点击几下即可完成!<br />注意:如使用Cololight Strip,您可能需要手动更正 LED 数量和布局。",
|
||||
"wiz_cololight_noprops": "无法获取设备属性-手动定义硬件LED计数",
|
||||
|
@ -955,6 +1017,7 @@
|
|||
"wiz_hue_username": "用户名ID:",
|
||||
"wiz_identify": "识别",
|
||||
"wiz_identify_light": "识别 $1",
|
||||
"wiz_identify_tip": "wiz_identify_tip",
|
||||
"wiz_ids_disabled": "已停用",
|
||||
"wiz_ids_entire": "整个图片",
|
||||
"wiz_noLights": "$1未找到!请将灯连接到网络或手动配置。",
|
||||
|
|
|
@ -19,8 +19,15 @@
|
|||
|
||||
<title data-i18n="general_webui_title">Hyperion - Web Configuration</title>
|
||||
|
||||
<!-- jQuery -->
|
||||
<script src="js/lib/jquery.min.js"></script>
|
||||
<!-- jQuery - Prod -->
|
||||
<script src="js/lib/jquery/jquery-3.6.0.min.js"></script>
|
||||
<script src="js/lib/jquery/jquery-migrate-3.3.2.min.js"></script>
|
||||
|
||||
<!-- jQuery - Dev -->
|
||||
<!--
|
||||
<script src="js/lib/jquery/dev/jquery-3.6.0.js"></script>
|
||||
<script src="js/lib/jquery/dev/jquery-migrate-3.3.2.js"></script>
|
||||
-->
|
||||
|
||||
<!-- SemVer -->
|
||||
<script src='js/lib/semver.js'></script>
|
||||
|
@ -42,6 +49,12 @@
|
|||
<!-- JSONEditor -->
|
||||
<script src="js/lib/jsoneditor.js"></script>
|
||||
|
||||
<!-- PlainDraggable -->
|
||||
<script src="js/lib/plain-draggable.min.js"></script>
|
||||
|
||||
<!-- LeaderLine -->
|
||||
<script src="js/lib/leader-line.min.js"></script>
|
||||
|
||||
<!--Language Support -->
|
||||
<script src="js/lib/jquery.i18n/jquery.i18n.js"></script>
|
||||
<script src="js/lib/jquery.i18n/jquery.i18n.messagestore.js"></script>
|
||||
|
@ -65,7 +78,11 @@
|
|||
<link href="css/bootstrap-select.min.css" rel="stylesheet">
|
||||
|
||||
<!-- MetisMenu CSS -->
|
||||
<link href="css/metisMenu.css" rel="stylesheet">
|
||||
<link href="css/metisMenu.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Gijgo CSS -->
|
||||
<link href="css/gijgo/core.min.css" rel="stylesheet">
|
||||
<link href="css/gijgo/dialog.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom CSS -->
|
||||
<link href="css/sb-admin-2.css" rel="stylesheet">
|
||||
|
@ -77,6 +94,9 @@
|
|||
<!-- Material Design Icons - https://github.com/Templarian/MaterialDesign-Webfont -->
|
||||
<link href="css/materialdesignicons.min.css" media="all" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Animate.css -->
|
||||
<link href="css/animate.min.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
|
@ -195,6 +215,39 @@
|
|||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<!-- /.dropdown -->
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<i class="fa fa-power-off fa-fw"></i> <i class="fa fa-caret-down"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-alerts">
|
||||
<li id="btn_systemSuspend">
|
||||
<a>
|
||||
<div>
|
||||
<i class="fa fa-stop fa-fw"></i>
|
||||
<span data-i18n="InfoDialog_systemSuspend_title"></span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li id="btn_systemResume">
|
||||
<a>
|
||||
<div>
|
||||
<i class="fa fa-play fa-fw"></i>
|
||||
<span data-i18n="InfoDialog_systemResume_title"></span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li id="btn_systemRestart">
|
||||
<a>
|
||||
<div>
|
||||
<i class="fa fa-refresh fa-fw"></i>
|
||||
<span data-i18n="InfoDialog_systemRestart_title"></span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!-- /.lock-ui -->
|
||||
<li class="dropdown" id="btn_lock_ui" style="display:none">
|
||||
|
@ -222,7 +275,7 @@
|
|||
<li> <a class="inactive mnava" id="MenuItemGrabber" href="#conf_grabber"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></a> </li>
|
||||
<li> <a class="inactive mnava" id="MenuItemNetwork" href="#conf_network"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network</span></a> </li>
|
||||
<li> <a class="inactive mnava" href="#remote"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></a> </li>
|
||||
<li> <a class="inactive mnava" href="#effects_configurator"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></a> </li>
|
||||
<li> <a class="inactive mnava" id="MenuItemEffectsConfig" href="#effects_configurator"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></a> </li>
|
||||
<li> <a class="inactive mnava" href="#support"><i class="fa fa-info fa-fw"></i><span data-i18n="main_menu_support_token">Support</span></a> </li>
|
||||
<li>
|
||||
<a class="inactive"><i class="fa fa-industry fa-fw"></i><span data-i18n="main_menu_system_token">System</span><span class="fa arrow"></span></a>
|
||||
|
@ -320,7 +373,11 @@
|
|||
<div id="ledsim_dialog" style="display:none; z-index:9998">
|
||||
<div data-role="body" style="padding:0px;">
|
||||
<div id="ledsim_text"></div>
|
||||
<div id="leds_canvas"></div>
|
||||
<div id="leds_canvas">
|
||||
<canvas id="image_preview_canv" style="position: absolute; left: 0; top: 0; z-index: 99998;"></canvas>
|
||||
<canvas id="leds_preview_canv" style="position: absolute; left: 0; top: 0; opacity: 0.75; z-index: 99999;"></canvas>
|
||||
<canvas id="grab_preview_canv" style="position: absolute; left: 0; top: 0; z-index: 99999;"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div data-role="footer" style="text-align:center">
|
||||
<button type="button" class="btn btn-success" id="leds_toggle"><i class="fa fa-fw fa-lightbulb-o"></i><span data-i18n="main_ledsim_btn_toggleleds">leds</span></button>
|
||||
|
@ -351,8 +408,9 @@
|
|||
<script src="js/wizard.js"></script>
|
||||
|
||||
<!--gijgo dialog-->
|
||||
<script src="js/lib/draggable.min.js"></script>
|
||||
<script src="js/lib/dialog.min.js"></script>
|
||||
<script src="js/lib/gijgo/core.min.js"></script>
|
||||
<script src="js/lib/gijgo/draggable.min.js"></script>
|
||||
<script src="js/lib/gijgo/dialog.min.js"></script>
|
||||
<script src="js/ledsim.js"></script>
|
||||
|
||||
<!--Client-side download-->
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
$(document).ready(function () {
|
||||
performTranslation();
|
||||
|
||||
var BORDERDETECT_ENABLED = (jQuery.inArray("borderdetection", window.serverInfo.services) !== -1);
|
||||
|
||||
// update instance listing
|
||||
updateHyperionInstanceListing();
|
||||
|
||||
|
@ -20,15 +22,19 @@ $(document).ready(function () {
|
|||
$('#conf_cont_smoothing').append(createHelpTable(window.schema.smoothing.properties, $.i18n("edt_conf_smooth_heading_title"), "smoothingHelpPanelId"));
|
||||
|
||||
//blackborder
|
||||
$('#conf_cont').append(createRow('conf_cont_blackborder'));
|
||||
$('#conf_cont_blackborder').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
|
||||
$('#conf_cont_blackborder').append(createHelpTable(window.schema.blackborderdetector.properties, $.i18n("edt_conf_bb_heading_title"), "blackborderHelpPanelId"));
|
||||
if (BORDERDETECT_ENABLED) {
|
||||
$('#conf_cont').append(createRow('conf_cont_blackborder'));
|
||||
$('#conf_cont_blackborder').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
|
||||
$('#conf_cont_blackborder').append(createHelpTable(window.schema.blackborderdetector.properties, $.i18n("edt_conf_bb_heading_title"), "blackborderHelpPanelId"));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$('#conf_cont').addClass('row');
|
||||
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_color_heading_title"), 'editor_container_color', 'btn_submit_color'));
|
||||
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_smooth_heading_title"), 'editor_container_smoothing', 'btn_submit_smoothing'));
|
||||
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
|
||||
if (BORDERDETECT_ENABLED) {
|
||||
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
|
||||
}
|
||||
}
|
||||
|
||||
//color
|
||||
|
@ -37,7 +43,7 @@ $(document).ready(function () {
|
|||
}, true, true);
|
||||
|
||||
editor_color.on('change', function () {
|
||||
editor_color.validate().length || window.readOnlyMode ? $('#btn_submit_color').attr('disabled', true) : $('#btn_submit_color').attr('disabled', false);
|
||||
editor_color.validate().length || window.readOnlyMode ? $('#btn_submit_color').prop('disabled', true) : $('#btn_submit_color').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_color').off().on('click', function () {
|
||||
|
@ -58,7 +64,7 @@ $(document).ready(function () {
|
|||
showInputOptionsForKey(editor_smoothing, "smoothing", "enable", false);
|
||||
$('#smoothingHelpPanelId').hide();
|
||||
}
|
||||
editor_smoothing.validate().length || window.readOnlyMode ? $('#btn_submit_smoothing').attr('disabled', true) : $('#btn_submit_smoothing').attr('disabled', false);
|
||||
editor_smoothing.validate().length || window.readOnlyMode ? $('#btn_submit_smoothing').prop('disabled', true) : $('#btn_submit_smoothing').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_smoothing').off().on('click', function () {
|
||||
|
@ -66,28 +72,30 @@ $(document).ready(function () {
|
|||
});
|
||||
|
||||
//blackborder
|
||||
editor_blackborder = createJsonEditor('editor_container_blackborder', {
|
||||
blackborderdetector: window.schema.blackborderdetector
|
||||
}, true, true);
|
||||
if (BORDERDETECT_ENABLED) {
|
||||
editor_blackborder = createJsonEditor('editor_container_blackborder', {
|
||||
blackborderdetector: window.schema.blackborderdetector
|
||||
}, true, true);
|
||||
|
||||
editor_blackborder.on('change', function () {
|
||||
var blackborderEnable = editor_blackborder.getEditor("root.blackborderdetector.enable").getValue();
|
||||
if (blackborderEnable) {
|
||||
showInputOptionsForKey(editor_blackborder, "blackborderdetector", "enable", true);
|
||||
$('#blackborderHelpPanelId').show();
|
||||
$('#blackborderWikiLinkId').show();
|
||||
editor_blackborder.on('change', function () {
|
||||
var blackborderEnable = editor_blackborder.getEditor("root.blackborderdetector.enable").getValue();
|
||||
if (blackborderEnable) {
|
||||
showInputOptionsForKey(editor_blackborder, "blackborderdetector", "enable", true);
|
||||
$('#blackborderHelpPanelId').show();
|
||||
$('#blackborderWikiLinkId').show();
|
||||
|
||||
} else {
|
||||
showInputOptionsForKey(editor_blackborder, "blackborderdetector", "enable", false);
|
||||
$('#blackborderHelpPanelId').hide();
|
||||
$('#blackborderWikiLinkId').hide();
|
||||
}
|
||||
editor_blackborder.validate().length || window.readOnlyMode ? $('#btn_submit_blackborder').attr('disabled', true) : $('#btn_submit_blackborder').attr('disabled', false);
|
||||
});
|
||||
} else {
|
||||
showInputOptionsForKey(editor_blackborder, "blackborderdetector", "enable", false);
|
||||
$('#blackborderHelpPanelId').hide();
|
||||
$('#blackborderWikiLinkId').hide();
|
||||
}
|
||||
editor_blackborder.validate().length || window.readOnlyMode ? $('#btn_submit_blackborder').prop('disabled', true) : $('#btn_submit_blackborder').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_blackborder').off().on('click', function () {
|
||||
requestWriteConfig(editor_blackborder.getValue());
|
||||
});
|
||||
$('#btn_submit_blackborder').off().on('click', function () {
|
||||
requestWriteConfig(editor_blackborder.getValue());
|
||||
});
|
||||
}
|
||||
|
||||
//wiki links
|
||||
var wikiElement = $(buildWL("user/advanced/Advanced.html#blackbar-detection", "edt_conf_bb_mode_title", true));
|
||||
|
@ -98,7 +106,9 @@ $(document).ready(function () {
|
|||
if (window.showOptHelp) {
|
||||
createHint("intro", $.i18n('conf_colors_color_intro'), "editor_container_color");
|
||||
createHint("intro", $.i18n('conf_colors_smoothing_intro'), "editor_container_smoothing");
|
||||
createHint("intro", $.i18n('conf_colors_blackborder_intro'), "editor_container_blackborder");
|
||||
if (BORDERDETECT_ENABLED) {
|
||||
createHint("intro", $.i18n('conf_colors_blackborder_intro'), "editor_container_blackborder");
|
||||
}
|
||||
}
|
||||
|
||||
removeOverlay();
|
||||
|
|
|
@ -58,19 +58,20 @@ $(document).ready(function () {
|
|||
if (components[idx].name != "ALL") {
|
||||
if ((components[idx].name === "FORWARDER" && window.currentHyperionInstance != 0) ||
|
||||
(components[idx].name === "GRABBER" && !window.serverConfig.framegrabber.enable) ||
|
||||
(components[idx].name === "V4L" && !window.serverConfig.grabberV4L2.enable))
|
||||
continue;
|
||||
(components[idx].name === "V4L" && !window.serverConfig.grabberV4L2.enable) ||
|
||||
(components[idx].name === "AUDIO" && !window.serverConfig.grabberAudio.enable))
|
||||
continue;
|
||||
|
||||
var comp_enabled = components[idx].enabled ? "checked" : "";
|
||||
const general_comp = "general_comp_" + components[idx].name;
|
||||
componentBtn = '<input ' +
|
||||
'id="' + general_comp + '" ' + comp_enabled +
|
||||
' type="checkbox" ' +
|
||||
'data-toggle="toggle" ' +
|
||||
'data-size="mini" ' +
|
||||
'data-onstyle="success" ' +
|
||||
'data-on="' + $.i18n('general_btn_on') + '" ' +
|
||||
'data-off="' + $.i18n('general_btn_off') + '">';
|
||||
var comp_enabled = components[idx].enabled ? "checked" : "";
|
||||
const general_comp = "general_comp_" + components[idx].name;
|
||||
componentBtn = '<input ' +
|
||||
'id="' + general_comp + '" ' + comp_enabled +
|
||||
' type="checkbox" ' +
|
||||
'data-toggle="toggle" ' +
|
||||
'data-size="mini" ' +
|
||||
'data-onstyle="success" ' +
|
||||
'data-on="' + $.i18n('general_btn_on') + '" ' +
|
||||
'data-off="' + $.i18n('general_btn_off') + '">';
|
||||
|
||||
instance_components += '<tr><td></td><td>' + $.i18n('general_comp_' + components[idx].name) + '</td><td style="text-align:right">' + componentBtn + '</td></tr>';
|
||||
}
|
||||
|
@ -85,7 +86,7 @@ $(document).ready(function () {
|
|||
updateHyperionInstanceListing();
|
||||
|
||||
$('#instanceButton').bootstrapToggle();
|
||||
$('#instanceButton').change(e => {
|
||||
$('#instanceButton').on("change", e => {
|
||||
requestSetComponentState('ALL', e.currentTarget.checked);
|
||||
});
|
||||
|
||||
|
@ -93,7 +94,7 @@ $(document).ready(function () {
|
|||
if (components[idx].name != "ALL") {
|
||||
$("#general_comp_" + components[idx].name).bootstrapToggle();
|
||||
$("#general_comp_" + components[idx].name).bootstrapToggle(hyperion_enabled ? "enable" : "disable");
|
||||
$("#general_comp_" + components[idx].name).change(e => {
|
||||
$("#general_comp_" + components[idx].name).on("change", e => {
|
||||
requestSetComponentState(e.currentTarget.id.split('_')[2], e.currentTarget.checked);
|
||||
});
|
||||
}
|
||||
|
@ -102,15 +103,56 @@ $(document).ready(function () {
|
|||
|
||||
// add more info
|
||||
|
||||
var screenGrabber = window.serverConfig.framegrabber.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
|
||||
$('#dash_screen_grabber').html(screenGrabber);
|
||||
var videoGrabber = window.serverConfig.grabberV4L2.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
|
||||
$('#dash_video_grabber').html(videoGrabber);
|
||||
var screenGrabberAvailable = (window.serverInfo.grabbers.screen.available.length !== 0);
|
||||
var videoGrabberAvailable = (window.serverInfo.grabbers.video.available.length !== 0);
|
||||
const audioGrabberAvailable = (window.serverInfo.grabbers.audio.available.length !== 0);
|
||||
|
||||
var fbPort = window.serverConfig.flatbufServer.enable ? window.serverConfig.flatbufServer.port : $.i18n('general_disabled');
|
||||
$('#dash_fbPort').html(fbPort);
|
||||
var pbPort = window.serverConfig.protoServer.enable ? window.serverConfig.protoServer.port : $.i18n('general_disabled');
|
||||
$('#dash_pbPort').html(pbPort);
|
||||
if (screenGrabberAvailable || videoGrabberAvailable || audioGrabberAvailable) {
|
||||
|
||||
if (screenGrabberAvailable) {
|
||||
var screenGrabber = window.serverConfig.framegrabber.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
|
||||
$('#dash_screen_grabber').html(screenGrabber);
|
||||
} else {
|
||||
$("#dash_screen_grabber_row").hide();
|
||||
}
|
||||
|
||||
if (videoGrabberAvailable) {
|
||||
var videoGrabber = window.serverConfig.grabberV4L2.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
|
||||
$('#dash_video_grabber').html(videoGrabber);
|
||||
} else {
|
||||
$("#dash_video_grabber_row").hide();
|
||||
}
|
||||
|
||||
if (audioGrabberAvailable) {
|
||||
const audioGrabber = window.serverConfig.grabberAudio.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
|
||||
$('#dash_audio_grabber').html(audioGrabber);
|
||||
} else {
|
||||
$("#dash_audio_grabber_row").hide();
|
||||
}
|
||||
} else {
|
||||
$("#dash_capture_hw").hide();
|
||||
}
|
||||
|
||||
if (jQuery.inArray("flatbuffer", window.serverInfo.services) !== -1) {
|
||||
var fbPort = window.serverConfig.flatbufServer.enable ? window.serverConfig.flatbufServer.port : $.i18n('general_disabled');
|
||||
$('#dash_fbPort').html(fbPort);
|
||||
} else {
|
||||
$("#dash_ports_flat_row").hide();
|
||||
}
|
||||
|
||||
if (jQuery.inArray("protobuffer", window.serverInfo.services) !== -1) {
|
||||
var pbPort = window.serverConfig.protoServer.enable ? window.serverConfig.protoServer.port : $.i18n('general_disabled');
|
||||
$('#dash_pbPort').html(pbPort);
|
||||
} else {
|
||||
$("#dash_ports_proto_row").hide();
|
||||
}
|
||||
|
||||
if (jQuery.inArray("boblight", window.serverInfo.services) !== -1) {
|
||||
var boblightPort = window.serverConfig.boblightServer.enable ? window.serverConfig.boblightServer.port : $.i18n('general_disabled');
|
||||
$('#dash_boblightPort').html(boblightPort);
|
||||
} else {
|
||||
$("#dash_ports_boblight_row").hide();
|
||||
}
|
||||
|
||||
var jsonPort = window.serverConfig.jsonServer.port;
|
||||
$('#dash_jsonPort').html(jsonPort);
|
||||
|
|
|
@ -1,72 +1,89 @@
|
|||
$(document).ready( function() {
|
||||
performTranslation();
|
||||
$(document).ready(function () {
|
||||
performTranslation();
|
||||
|
||||
// update instance listing
|
||||
updateHyperionInstanceListing();
|
||||
var EFFECTENGINE_ENABLED = (jQuery.inArray("effectengine", window.serverInfo.services) !== -1);
|
||||
|
||||
var oldEffects = [];
|
||||
var effects_editor = null;
|
||||
var confFgEff = window.serverConfig.foregroundEffect.effect;
|
||||
var confBgEff = window.serverConfig.backgroundEffect.effect;
|
||||
var foregroundEffect_editor = null;
|
||||
var backgroundEffect_editor = null;
|
||||
// update instance listing
|
||||
updateHyperionInstanceListing();
|
||||
|
||||
if(window.showOptHelp)
|
||||
{
|
||||
//foreground effect
|
||||
$('#conf_cont').append(createRow('conf_cont_fge'));
|
||||
$('#conf_cont_fge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
|
||||
var oldEffects = [];
|
||||
var effects_editor = null;
|
||||
var confFgEff = window.serverConfig.foregroundEffect.effect;
|
||||
var confBgEff = window.serverConfig.backgroundEffect.effect;
|
||||
var foregroundEffect_editor = null;
|
||||
var backgroundEffect_editor = null;
|
||||
|
||||
if (!EFFECTENGINE_ENABLED) {
|
||||
window.schema.foregroundEffect.properties.type.enum.splice(1, 1);
|
||||
window.schema.foregroundEffect.properties.type.options.enum_titles.splice(1, 1);
|
||||
window.schema.foregroundEffect.properties.type.default = "color";
|
||||
delete window.schema.foregroundEffect.properties.effect;
|
||||
|
||||
window.schema.backgroundEffect.properties.type.enum.splice(1, 1);
|
||||
window.schema.backgroundEffect.properties.type.options.enum_titles.splice(1, 1);
|
||||
window.schema.backgroundEffect.properties.type.default = "color";
|
||||
delete window.schema.backgroundEffect.properties.effect;
|
||||
}
|
||||
|
||||
if (window.showOptHelp) {
|
||||
//foreground effect
|
||||
$('#conf_cont').append(createRow('conf_cont_fge'));
|
||||
$('#conf_cont_fge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
|
||||
$('#conf_cont_fge').append(createHelpTable(window.schema.foregroundEffect.properties, $.i18n("edt_conf_fge_heading_title"), "foregroundEffectHelpPanelId"));
|
||||
|
||||
//background effect
|
||||
$('#conf_cont').append(createRow('conf_cont_bge'));
|
||||
$('#conf_cont_bge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
|
||||
//background effect
|
||||
$('#conf_cont').append(createRow('conf_cont_bge'));
|
||||
$('#conf_cont_bge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
|
||||
$('#conf_cont_bge').append(createHelpTable(window.schema.backgroundEffect.properties, $.i18n("edt_conf_bge_heading_title"), "backgroundEffectHelpPanelId"));
|
||||
|
||||
//effect path
|
||||
if(storedAccess != 'default')
|
||||
{
|
||||
$('#conf_cont').append(createRow('conf_cont_ef'));
|
||||
$('#conf_cont_ef').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
|
||||
$('#conf_cont_ef').append(createHelpTable(window.schema.effects.properties, $.i18n("edt_conf_effp_heading_title")));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#conf_cont').addClass('row');
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
|
||||
if(storedAccess != 'default')
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
|
||||
}
|
||||
if (EFFECTENGINE_ENABLED) {
|
||||
//effect path
|
||||
if (storedAccess != 'default') {
|
||||
$('#conf_cont').append(createRow('conf_cont_ef'));
|
||||
$('#conf_cont_ef').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
|
||||
$('#conf_cont_ef').append(createHelpTable(window.schema.effects.properties, $.i18n("edt_conf_effp_heading_title")));
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$('#conf_cont').addClass('row');
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
|
||||
if (EFFECTENGINE_ENABLED) {
|
||||
if (storedAccess != 'default')
|
||||
$('#conf_cont').append(createOptPanel('fa-spinner', $.i18n("edt_conf_effp_heading_title"), 'editor_container_effects', 'btn_submit_effects'));
|
||||
}
|
||||
}
|
||||
|
||||
if(storedAccess != 'default')
|
||||
{
|
||||
effects_editor = createJsonEditor('editor_container_effects', {
|
||||
effects : window.schema.effects
|
||||
}, true, true);
|
||||
if (EFFECTENGINE_ENABLED) {
|
||||
if (storedAccess != 'default') {
|
||||
effects_editor = createJsonEditor('editor_container_effects', {
|
||||
effects: window.schema.effects
|
||||
}, true, true);
|
||||
|
||||
effects_editor.on('change',function() {
|
||||
effects_editor.validate().length || window.readOnlyMode ? $('#btn_submit_effects').attr('disabled', true) : $('#btn_submit_effects').attr('disabled', false);
|
||||
});
|
||||
effects_editor.on('change', function () {
|
||||
effects_editor.validate().length || window.readOnlyMode ? $('#btn_submit_effects').prop('disabled', true) : $('#btn_submit_effects').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_effects').off().on('click',function() {
|
||||
requestWriteConfig(effects_editor.getValue());
|
||||
});
|
||||
}
|
||||
$('#btn_submit_effects').off().on('click', function () {
|
||||
requestWriteConfig(effects_editor.getValue());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
foregroundEffect_editor = createJsonEditor('editor_container_foregroundEffect', {
|
||||
foregroundEffect : window.schema.foregroundEffect
|
||||
}, true, true);
|
||||
foregroundEffect_editor = createJsonEditor('editor_container_foregroundEffect', {
|
||||
foregroundEffect: window.schema.foregroundEffect
|
||||
}, true, true);
|
||||
|
||||
backgroundEffect_editor = createJsonEditor('editor_container_backgroundEffect', {
|
||||
backgroundEffect : window.schema.backgroundEffect
|
||||
}, true, true);
|
||||
backgroundEffect_editor = createJsonEditor('editor_container_backgroundEffect', {
|
||||
backgroundEffect: window.schema.backgroundEffect
|
||||
}, true, true);
|
||||
|
||||
|
||||
foregroundEffect_editor.on('ready',function() {
|
||||
updateEffectlist();
|
||||
});
|
||||
foregroundEffect_editor.on('ready', function () {
|
||||
if (EFFECTENGINE_ENABLED) {
|
||||
updateEffectlist();
|
||||
}
|
||||
});
|
||||
|
||||
foregroundEffect_editor.on('change', function () {
|
||||
var foregroundEffectEnable = foregroundEffect_editor.getEditor("root.foregroundEffect.enable").getValue();
|
||||
|
@ -79,8 +96,8 @@ $(document).ready( function() {
|
|||
$('#foregroundEffectHelpPanelId').hide();
|
||||
}
|
||||
|
||||
foregroundEffect_editor.validate().length || window.readOnlyMode ? $('#btn_submit_foregroundEffect').attr('disabled', true) : $('#btn_submit_foregroundEffect').attr('disabled', false);
|
||||
});
|
||||
foregroundEffect_editor.validate().length || window.readOnlyMode ? $('#btn_submit_foregroundEffect').prop('disabled', true) : $('#btn_submit_foregroundEffect').prop('disabled', false);
|
||||
});
|
||||
|
||||
backgroundEffect_editor.on('change', function () {
|
||||
var backgroundEffectEnable = backgroundEffect_editor.getEditor("root.backgroundEffect.enable").getValue();
|
||||
|
@ -93,62 +110,62 @@ $(document).ready( function() {
|
|||
$('#backgroundEffectHelpPanelId').hide();
|
||||
}
|
||||
|
||||
backgroundEffect_editor.validate().length || window.readOnlyMode ? $('#btn_submit_backgroundEffect').attr('disabled', true) : $('#btn_submit_backgroundEffect').attr('disabled', false);
|
||||
});
|
||||
backgroundEffect_editor.validate().length || window.readOnlyMode ? $('#btn_submit_backgroundEffect').prop('disabled', true) : $('#btn_submit_backgroundEffect').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_foregroundEffect').off().on('click',function() {
|
||||
var value = foregroundEffect_editor.getValue();
|
||||
if(typeof value.foregroundEffect.effect == 'undefined')
|
||||
value.foregroundEffect.effect = window.serverConfig.foregroundEffect.effect;
|
||||
requestWriteConfig(value);
|
||||
});
|
||||
$('#btn_submit_foregroundEffect').off().on('click', function () {
|
||||
var value = foregroundEffect_editor.getValue();
|
||||
if (typeof value.foregroundEffect.effect == 'undefined')
|
||||
value.foregroundEffect.effect = window.serverConfig.foregroundEffect.effect;
|
||||
requestWriteConfig(value);
|
||||
});
|
||||
|
||||
$('#btn_submit_backgroundEffect').off().on('click',function() {
|
||||
var value = backgroundEffect_editor.getValue();
|
||||
if(typeof value.backgroundEffect.effect == 'undefined')
|
||||
value.backgroundEffect.effect = window.serverConfig.backgroundEffect.effect;
|
||||
requestWriteConfig(value);
|
||||
});
|
||||
$('#btn_submit_backgroundEffect').off().on('click', function () {
|
||||
var value = backgroundEffect_editor.getValue();
|
||||
if (typeof value.backgroundEffect.effect == 'undefined')
|
||||
value.backgroundEffect.effect = window.serverConfig.backgroundEffect.effect;
|
||||
requestWriteConfig(value);
|
||||
});
|
||||
|
||||
//create introduction
|
||||
if(window.showOptHelp)
|
||||
{
|
||||
createHint("intro", $.i18n('conf_effect_path_intro'), "editor_container_effects");
|
||||
createHint("intro", $.i18n('conf_effect_fgeff_intro'), "editor_container_foregroundEffect");
|
||||
createHint("intro", $.i18n('conf_effect_bgeff_intro'), "editor_container_backgroundEffect");
|
||||
}
|
||||
//create introduction
|
||||
if (window.showOptHelp) {
|
||||
if (EFFECTENGINE_ENABLED) {
|
||||
createHint("intro", $.i18n('conf_effect_path_intro'), "editor_container_effects");
|
||||
}
|
||||
createHint("intro", $.i18n('conf_effect_fgeff_intro'), "editor_container_foregroundEffect");
|
||||
createHint("intro", $.i18n('conf_effect_bgeff_intro'), "editor_container_backgroundEffect");
|
||||
}
|
||||
|
||||
function updateEffectlist(){
|
||||
var newEffects = window.serverInfo.effects;
|
||||
if (newEffects.length != oldEffects.length)
|
||||
{
|
||||
$('#root_foregroundEffect_effect').html('');
|
||||
var usrEffArr = [];
|
||||
var sysEffArr = [];
|
||||
function updateEffectlist() {
|
||||
var newEffects = window.serverInfo.effects;
|
||||
if (newEffects.length != oldEffects.length) {
|
||||
$('#root_foregroundEffect_effect').html('');
|
||||
var usrEffArr = [];
|
||||
var sysEffArr = [];
|
||||
|
||||
for(var i = 0; i < newEffects.length; i++)
|
||||
{
|
||||
var effectName = newEffects[i].name;
|
||||
if(!/^\:/.test(newEffects[i].file))
|
||||
usrEffArr.push(effectName);
|
||||
else
|
||||
sysEffArr.push(effectName);
|
||||
}
|
||||
$('#root_foregroundEffect_effect').append(createSel(usrEffArr, $.i18n('remote_optgroup_usreffets')));
|
||||
$('#root_foregroundEffect_effect').append(createSel(sysEffArr, $.i18n('remote_optgroup_syseffets')));
|
||||
$('#root_backgroundEffect_effect').html($('#root_foregroundEffect_effect').html());
|
||||
oldEffects = newEffects;
|
||||
for (var i = 0; i < newEffects.length; i++) {
|
||||
var effectName = newEffects[i].name;
|
||||
if (!/^\:/.test(newEffects[i].file))
|
||||
usrEffArr.push(effectName);
|
||||
else
|
||||
sysEffArr.push(effectName);
|
||||
}
|
||||
$('#root_foregroundEffect_effect').append(createSel(usrEffArr, $.i18n('remote_optgroup_usreffets')));
|
||||
$('#root_foregroundEffect_effect').append(createSel(sysEffArr, $.i18n('remote_optgroup_syseffets')));
|
||||
$('#root_backgroundEffect_effect').html($('#root_foregroundEffect_effect').html());
|
||||
oldEffects = newEffects;
|
||||
|
||||
$('#root_foregroundEffect_effect').val(confFgEff);
|
||||
$('#root_backgroundEffect_effect').val(confBgEff);
|
||||
}
|
||||
}
|
||||
$('#root_foregroundEffect_effect').val(confFgEff);
|
||||
$('#root_backgroundEffect_effect').val(confBgEff);
|
||||
}
|
||||
}
|
||||
|
||||
//interval update
|
||||
$(window.hyperion).on("cmd-effects-update", function(event){
|
||||
window.serverInfo.effects = event.response.data.effects
|
||||
updateEffectlist();
|
||||
});
|
||||
//interval update
|
||||
$(window.hyperion).on("cmd-effects-update", function (event) {
|
||||
window.serverInfo.effects = event.response.data.effects
|
||||
updateEffectlist();
|
||||
});
|
||||
|
||||
removeOverlay();
|
||||
removeOverlay();
|
||||
});
|
||||
|
||||
|
|
|
@ -113,11 +113,11 @@ $(document).ready(function () {
|
|||
triggerTestEffect();
|
||||
}
|
||||
if (effects_editor.validate().length == 0 && effectName != "") {
|
||||
$('#btn_start_test').attr('disabled', false);
|
||||
!window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true);
|
||||
$('#btn_start_test').prop('disabled', false);
|
||||
!window.readOnlyMode ? $('#btn_write').prop('disabled', false) : $('#btn_write').prop('disabled', true);
|
||||
}
|
||||
else {
|
||||
$('#btn_start_test, #btn_write').attr('disabled', true);
|
||||
$('#btn_start_test, #btn_write').prop('disabled', true);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -127,11 +127,11 @@ $(document).ready(function () {
|
|||
effectName = encodeHTML($(this).val());
|
||||
if ($(this).val() == '') {
|
||||
effects_editor.disable();
|
||||
$("#eff_footer").children().attr('disabled', true);
|
||||
$("#eff_footer").children().prop('disabled', true);
|
||||
} else {
|
||||
effects_editor.enable();
|
||||
$("#eff_footer").children().attr('disabled', false);
|
||||
!window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true);
|
||||
$("#eff_footer").children().prop('disabled', false);
|
||||
!window.readOnlyMode ? $('#btn_write').prop('disabled', false) : $('#btn_write').prop('disabled', true);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -154,6 +154,7 @@ $(document).ready(function () {
|
|||
|
||||
// Start test
|
||||
$('#btn_start_test').off().on('click', function () {
|
||||
$('#btn_start_test').prop('disabled', true);
|
||||
triggerTestEffect();
|
||||
});
|
||||
|
||||
|
@ -161,6 +162,7 @@ $(document).ready(function () {
|
|||
$('#btn_stop_test').off().on('click', function () {
|
||||
requestPriorityClear();
|
||||
testrun = false;
|
||||
$('#btn_start_test').prop('disabled', false);
|
||||
});
|
||||
|
||||
// Continuous test
|
||||
|
@ -180,8 +182,9 @@ $(document).ready(function () {
|
|||
|
||||
// Disable or enable Delete Effect Button
|
||||
$('#effectsdellist').off().on('change', function () {
|
||||
$(this).val() == null ? $('#btn_edit, #btn_delete').prop('disabled', true) : "";
|
||||
$(this).val().startsWith("int_") ? $('#btn_delete').prop('disabled', true) : $('#btn_delete').prop('disabled', false);
|
||||
var value = $(this).val();
|
||||
value == null ? $('#btn_edit').prop('disabled', true) : $('#btn_edit').prop('disabled', false);
|
||||
value.startsWith("int_") ? $('#btn_delete').prop('disabled', true) : $('#btn_delete').prop('disabled', false);
|
||||
});
|
||||
|
||||
// Load Effect
|
||||
|
|
|
@ -17,7 +17,7 @@ $(document).ready(function () {
|
|||
}, true, true);
|
||||
|
||||
conf_editor.on('change', function () {
|
||||
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
|
||||
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').prop('disabled', true) : $('#btn_submit').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit').off().on('click', function () {
|
||||
|
@ -29,8 +29,8 @@ $(document).ready(function () {
|
|||
function handleInstanceRename(e) {
|
||||
|
||||
conf_editor.on('change', function () {
|
||||
window.readOnlyMode ? $('#btn_cl_save').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
|
||||
window.readOnlyMode ? $('#btn_ma_save').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
|
||||
window.readOnlyMode ? $('#btn_cl_save').prop('disabled', true) : $('#btn_submit').prop('disabled', false);
|
||||
window.readOnlyMode ? $('#btn_ma_save').prop('disabled', true) : $('#btn_submit').prop('disabled', false);
|
||||
});
|
||||
|
||||
var inst = e.currentTarget.id.split("_")[1];
|
||||
|
@ -41,7 +41,7 @@ $(document).ready(function () {
|
|||
});
|
||||
|
||||
$('#renInst_name').off().on('input', function (e) {
|
||||
(e.currentTarget.value.length >= 5 && e.currentTarget.value != getInstanceNameByIndex(inst)) ? $('#id_btn_ok').attr('disabled', false) : $('#id_btn_ok').attr('disabled', true);
|
||||
(e.currentTarget.value.length >= 5 && e.currentTarget.value != getInstanceNameByIndex(inst)) ? $('#id_btn_ok').prop('disabled', false) : $('#id_btn_ok').prop('disabled', true);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -70,14 +70,14 @@ $(document).ready(function () {
|
|||
$('#instren_' + inst[key].instance).off().on('click', handleInstanceRename);
|
||||
|
||||
$('#inst_' + inst[key].instance).bootstrapToggle();
|
||||
$('#inst_' + inst[key].instance).change(e => {
|
||||
$('#inst_' + inst[key].instance).on("change", e => {
|
||||
requestInstanceStartStop(e.currentTarget.id.split('_').pop(), e.currentTarget.checked);
|
||||
});
|
||||
$('#instdel_' + inst[key].instance).off().on('click', handleInstanceDelete);
|
||||
|
||||
window.readOnlyMode ? $('#instren_' + inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
|
||||
window.readOnlyMode ? $('#inst_' + inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
|
||||
window.readOnlyMode ? $('#instdel_' + inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
|
||||
window.readOnlyMode ? $('#instren_' + inst[key].instance).prop('disabled', true) : $('#btn_submit').prop('disabled', false);
|
||||
window.readOnlyMode ? $('#inst_' + inst[key].instance).prop('disabled', true) : $('#btn_submit').prop('disabled', false);
|
||||
window.readOnlyMode ? $('#instdel_' + inst[key].instance).prop('disabled', true) : $('#btn_submit').prop('disabled', false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -86,7 +86,7 @@ $(document).ready(function () {
|
|||
buildInstanceList();
|
||||
|
||||
$('#inst_name').off().on('input', function (e) {
|
||||
(e.currentTarget.value.length >= 5) && !window.readOnlyMode ? $('#btn_create_inst').attr('disabled', false) : $('#btn_create_inst').attr('disabled', true);
|
||||
(e.currentTarget.value.length >= 5) && !window.readOnlyMode ? $('#btn_create_inst').prop('disabled', false) : $('#btn_create_inst').prop('disabled', true);
|
||||
if (5 - e.currentTarget.value.length >= 1 && 5 - e.currentTarget.value.length <= 4)
|
||||
$('#inst_chars_needed').html(5 - e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
|
||||
else
|
||||
|
@ -96,7 +96,7 @@ $(document).ready(function () {
|
|||
$('#btn_create_inst').off().on('click', function (e) {
|
||||
requestInstanceCreate(encodeHTML($('#inst_name').val()));
|
||||
$('#inst_name').val("");
|
||||
$('#btn_create_inst').attr('disabled', true)
|
||||
$('#btn_create_inst').prop('disabled', true)
|
||||
});
|
||||
|
||||
$(hyperion).off("instance-updated").on("instance-updated", function (event) {
|
||||
|
@ -105,7 +105,7 @@ $(document).ready(function () {
|
|||
|
||||
//import
|
||||
function dis_imp_btn(state) {
|
||||
state || window.readOnlyMode ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false);
|
||||
state || window.readOnlyMode ? $('#btn_import_conf').prop('disabled', true) : $('#btn_import_conf').prop('disabled', false);
|
||||
}
|
||||
|
||||
function readFile(evt) {
|
||||
|
@ -144,7 +144,7 @@ $(document).ready(function () {
|
|||
showInfoDialog('import', $.i18n('infoDialog_import_confirm_title'), $.i18n('infoDialog_import_confirm_text', confName));
|
||||
|
||||
$('#id_btn_import').off().on('click', function () {
|
||||
requestWriteConfig(importedConf, true);
|
||||
requestRestoreConfig(importedConf);
|
||||
setTimeout(initRestart, 100);
|
||||
});
|
||||
});
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
|||
$(document).ready(function () {
|
||||
var darkModeOverwrite = getStorage("darkModeOverwrite", true);
|
||||
var darkModeOverwrite = getStorage("darkModeOverwrite");
|
||||
|
||||
if (darkModeOverwrite == "false" || darkModeOverwrite == null) {
|
||||
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
|
@ -7,11 +7,11 @@ $(document).ready(function () {
|
|||
}
|
||||
|
||||
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {
|
||||
setStorage("darkMode", "off", false);
|
||||
setStorage("darkMode", "off");
|
||||
}
|
||||
}
|
||||
|
||||
if (getStorage("darkMode", false) == "on") {
|
||||
if (getStorage("darkMode") == "on") {
|
||||
handleDarkMode();
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,6 @@ $(document).ready(function () {
|
|||
$('#btn_hypinstanceswitch').toggle(true)
|
||||
else
|
||||
$('#btn_hypinstanceswitch').toggle(false)
|
||||
updateSessions();
|
||||
}); // end cmd-serverinfo
|
||||
|
||||
// Update language selection
|
||||
|
@ -59,25 +58,20 @@ $(document).ready(function () {
|
|||
container: 'body'
|
||||
});
|
||||
|
||||
$(".bootstrap-select").click(function () {
|
||||
$(".bootstrap-select").on("click", function () {
|
||||
$(this).addClass("open");
|
||||
});
|
||||
|
||||
$(document).click(function () {
|
||||
$(document).on("click", function () {
|
||||
$(".bootstrap-select").removeClass("open");
|
||||
});
|
||||
|
||||
$(".bootstrap-select").click(function (e) {
|
||||
$(".bootstrap-select").on("click", function (e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
//End language selection
|
||||
|
||||
$(window.hyperion).on("cmd-sessions-update", function (event) {
|
||||
window.serverInfo.sessions = event.response.data;
|
||||
updateSessions();
|
||||
});
|
||||
|
||||
$(window.hyperion).on("cmd-authorize-tokenRequest cmd-authorize-getPendingTokenRequests", function (event) {
|
||||
var val = event.response.info;
|
||||
if (Array.isArray(event.response.info)) {
|
||||
|
@ -121,7 +115,7 @@ $(document).ready(function () {
|
|||
requestGetPendingTokenRequests();
|
||||
|
||||
//Switch to last selected instance and load related config
|
||||
var lastSelectedInstance = getStorage('lastSelectedInstance', false);
|
||||
var lastSelectedInstance = getStorage('lastSelectedInstance');
|
||||
if (lastSelectedInstance == null || window.serverInfo.instance && !window.serverInfo.instance[lastSelectedInstance]) {
|
||||
lastSelectedInstance = 0;
|
||||
}
|
||||
|
@ -157,7 +151,7 @@ $(document).ready(function () {
|
|||
$("#btn_lock_ui").removeAttr('style')
|
||||
|
||||
if (event.response.hasOwnProperty('info'))
|
||||
setStorage("loginToken", event.response.info.token, true);
|
||||
setStorage("loginToken", event.response.info.token);
|
||||
|
||||
requestServerConfigSchema();
|
||||
});
|
||||
|
@ -171,7 +165,7 @@ $(document).ready(function () {
|
|||
});
|
||||
|
||||
$(window.hyperion).on("cmd-authorize-newPasswordRequired", function (event) {
|
||||
var loginToken = getStorage("loginToken", true)
|
||||
var loginToken = getStorage("loginToken")
|
||||
|
||||
if (event.response.info.newPasswordRequired == true) {
|
||||
window.defaultPasswordIsSet = true;
|
||||
|
@ -204,11 +198,14 @@ $(document).ready(function () {
|
|||
$(window.hyperion).on("error", function (event) {
|
||||
//If we are getting an error "No Authorization" back with a set loginToken we will forward to new Login (Token is expired.
|
||||
//e.g.: hyperiond was started new in the meantime)
|
||||
if (event.reason == "No Authorization" && getStorage("loginToken", true)) {
|
||||
removeStorage("loginToken", true);
|
||||
if (event.reason == "No Authorization" && getStorage("loginToken")) {
|
||||
removeStorage("loginToken");
|
||||
requestRequiresAdminAuth();
|
||||
}
|
||||
else {
|
||||
else if (event.reason == "Selected Hyperion instance isn't running") {
|
||||
//Switch to default instance
|
||||
instanceSwitch(0);
|
||||
} else {
|
||||
showInfoDialog("error", "Error", event.reason);
|
||||
}
|
||||
});
|
||||
|
@ -217,8 +214,23 @@ $(document).ready(function () {
|
|||
requestRequiresAdminAuth();
|
||||
});
|
||||
|
||||
$(window.hyperion).one("ready", function (event) {
|
||||
// Content will be loaded by the instance load/switch
|
||||
$(window.hyperion).on("ready", function (event) {
|
||||
loadContent(undefined,true);
|
||||
|
||||
//Hide capture menu entries, if no grabbers are available
|
||||
if ((window.serverInfo.grabbers.screen.available.length === 0) &&
|
||||
(window.serverInfo.grabbers.video.available.length === 0) &&
|
||||
(window.serverInfo.grabbers.audio.available.length === 0)) {
|
||||
$("#MenuItemGrabber").attr('style', 'display:none')
|
||||
if ((jQuery.inArray("boblight", window.serverInfo.services) === -1)) {
|
||||
$("#MenuItemInstCapture").attr('style', 'display:none')
|
||||
}
|
||||
}
|
||||
|
||||
//Hide effectsconfigurator menu entry, if effectengine is not available
|
||||
if (jQuery.inArray("effectengine", window.serverInfo.services) === -1) {
|
||||
$("#MenuItemEffectsConfig").attr('style', 'display:none')
|
||||
}
|
||||
});
|
||||
|
||||
$(window.hyperion).on("cmd-adjustment-update", function (event) {
|
||||
|
@ -265,15 +277,15 @@ $(document).ready(function () {
|
|||
|
||||
if (!isInData) {
|
||||
//Delete Storage information about the last used but now stopped instance
|
||||
if (getStorage('lastSelectedInstance', false))
|
||||
removeStorage('lastSelectedInstance', false)
|
||||
if (getStorage('lastSelectedInstance'))
|
||||
removeStorage('lastSelectedInstance')
|
||||
|
||||
window.currentHyperionInstance = 0;
|
||||
window.currentHyperionInstanceName = getInstanceNameByIndex(0);
|
||||
|
||||
currentHyperionInstance = 0;
|
||||
currentHyperionInstanceName = getInstanceNameByIndex(0);
|
||||
requestServerConfig();
|
||||
setTimeout(requestServerInfo, 100)
|
||||
setTimeout(requestTokenInfo, 200)
|
||||
setTimeout(loadContent, 300, undefined, true)
|
||||
}
|
||||
|
||||
// determine button visibility
|
||||
|
@ -284,33 +296,33 @@ $(document).ready(function () {
|
|||
$('#btn_hypinstanceswitch').toggle(false)
|
||||
|
||||
// update listing for button
|
||||
updateHyperionInstanceListing()
|
||||
updateUiOnInstance(window.currentHyperionInstance);
|
||||
updateHyperionInstanceListing();
|
||||
});
|
||||
|
||||
$(window.hyperion).on("cmd-instance-switchTo", function (event) {
|
||||
requestServerConfig();
|
||||
setTimeout(requestServerInfo, 200)
|
||||
setTimeout(requestTokenInfo, 400)
|
||||
setTimeout(loadContent, 400, undefined, true)
|
||||
});
|
||||
|
||||
$(window.hyperion).on("cmd-effects-update", function (event) {
|
||||
window.serverInfo.effects = event.response.data.effects
|
||||
});
|
||||
|
||||
$(".mnava").bind('click.menu', function (e) {
|
||||
$(".mnava").on('click.menu', function (e) {
|
||||
loadContent(e);
|
||||
window.scrollTo(0, 0);
|
||||
});
|
||||
|
||||
$(window).scroll(function() {
|
||||
$(window).on("scroll", function () {
|
||||
if ($(window).scrollTop() > 65)
|
||||
$("#navbar_brand_logo").css("display", "none");
|
||||
else
|
||||
$("#navbar_brand_logo").css("display", "");
|
||||
});
|
||||
|
||||
$('#side-menu li a, #side-menu li ul li a').click(function() {
|
||||
$('#side-menu li a, #side-menu li ul li a').on("click", function () {
|
||||
$('#side-menu').find('.active').toggleClass('inactive'); // find all active classes and set inactive;
|
||||
$(this).addClass('active');
|
||||
});
|
||||
|
@ -325,7 +337,7 @@ function suppressDefaultPwWarning() {
|
|||
|
||||
$(function () {
|
||||
var sidebar = $('#side-menu'); // cache sidebar to a variable for performance
|
||||
sidebar.delegate('a.inactive', 'click', function () {
|
||||
sidebar.on("click", 'a.inactive', function () {
|
||||
sidebar.find('.active').toggleClass('active inactive');
|
||||
$(this).toggleClass('active inactive');
|
||||
});
|
||||
|
@ -338,13 +350,13 @@ $(document.body).on('hide.bs.modal,hidden.bs.modal', function () {
|
|||
|
||||
//Dark Mode
|
||||
$("#btn_darkmode").off().on("click", function (e) {
|
||||
if (getStorage("darkMode", false) != "on") {
|
||||
if (getStorage("darkMode") != "on") {
|
||||
handleDarkMode();
|
||||
setStorage("darkModeOverwrite", true, true);
|
||||
setStorage("darkModeOverwrite", true);
|
||||
}
|
||||
else {
|
||||
setStorage("darkMode", "off", false);
|
||||
setStorage("darkModeOverwrite", true, true);
|
||||
setStorage("darkMode", "off",);
|
||||
setStorage("darkModeOverwrite", true);
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
|
@ -361,8 +373,8 @@ function SwitchToMenuItem(target, item) {
|
|||
cl_object.addClass('in'); // Add class "in" to expand header in sidebar menu;
|
||||
if (item) { // Jump to div "item" if available. Time limit 3 seconds
|
||||
function scrollTo(counter) {
|
||||
if(counter < 30) {
|
||||
setTimeout(function() {
|
||||
if (counter < 30) {
|
||||
setTimeout(function () {
|
||||
counter++;
|
||||
if ($('#' + item).length)
|
||||
$('#' + item)[0].scrollIntoView();
|
||||
|
|
|
@ -1,99 +1,222 @@
|
|||
$(document).ready(function () {
|
||||
performTranslation();
|
||||
|
||||
var screenGrabberAvailable = (window.serverInfo.grabbers.screen.available.length !== 0);
|
||||
var videoGrabberAvailable = (window.serverInfo.grabbers.video.available.length !== 0);
|
||||
const audioGrabberAvailable = (window.serverInfo.grabbers.audio.available.length !== 0);
|
||||
|
||||
var BOBLIGHT_ENABLED = (jQuery.inArray("boblight", window.serverInfo.services) !== -1);
|
||||
|
||||
// update instance listing
|
||||
updateHyperionInstanceListing();
|
||||
|
||||
var conf_editor_instCapt = null;
|
||||
var conf_editor_bobl = null;
|
||||
|
||||
// Instance Capture
|
||||
$('#conf_cont').append(createRow('conf_cont_instCapt'));
|
||||
$('#conf_cont_instCapt').append(createOptPanel('fa-camera', $.i18n("edt_conf_instCapture_heading_title"), 'editor_container_instCapt', 'btn_submit_instCapt', ''));
|
||||
|
||||
if (window.showOptHelp) {
|
||||
$('#conf_cont_instCapt').append(createHelpTable(window.schema.instCapture.properties, $.i18n("edt_conf_instCapture_heading_title")));
|
||||
if (screenGrabberAvailable || videoGrabberAvailable || audioGrabberAvailable) {
|
||||
$('#conf_cont').append(createRow('conf_cont_instCapt'));
|
||||
$('#conf_cont_instCapt').append(createOptPanel('fa-camera', $.i18n("edt_conf_instCapture_heading_title"), 'editor_container_instCapt', 'btn_submit_instCapt', ''));
|
||||
$('#conf_cont_instCapt').append(createHelpTable(window.schema.instCapture.properties, $.i18n("edt_conf_instCapture_heading_title")));
|
||||
}
|
||||
//boblight
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
$('#conf_cont').append(createRow('conf_cont_bobl'));
|
||||
$('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver', ''));
|
||||
$('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title"), "boblightServerHelpPanelId"));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$('#conf_cont').addClass('row');
|
||||
if (screenGrabberAvailable || videoGrabberAvailable || audioGrabberAvailable) {
|
||||
$('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_instCapture_heading_title"), 'editor_container_instCapt', 'btn_submit_instCapt', ''));
|
||||
}
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver', ''));
|
||||
}
|
||||
}
|
||||
|
||||
// Instance Capture
|
||||
conf_editor_instCapt = createJsonEditor('editor_container_instCapt', {
|
||||
instCapture: window.schema.instCapture
|
||||
}, true, true);
|
||||
if (screenGrabberAvailable || videoGrabberAvailable || audioGrabberAvailable) {
|
||||
|
||||
var grabber_config_info_html = '<div class="bs-callout bs-callout-info" style="margin-top:0px"><h4>' + $.i18n('dashboard_infobox_label_title') + '</h4 >';
|
||||
grabber_config_info_html += '<span>' + $.i18n('conf_grabber_inst_grabber_config_info') + '</span>';
|
||||
grabber_config_info_html += '<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem(\'MenuItemGrabber\')" style="text-decoration:none;cursor:pointer"></a>';
|
||||
grabber_config_info_html += '</div>';
|
||||
$('#editor_container_instCapt').append(grabber_config_info_html);
|
||||
// Instance Capture
|
||||
conf_editor_instCapt = createJsonEditor('editor_container_instCapt', {
|
||||
instCapture: window.schema.instCapture
|
||||
}, true, true);
|
||||
|
||||
conf_editor_instCapt.on('ready', function () {
|
||||
var grabber_config_info_html = '<div class="bs-callout bs-callout-info" style="margin-top:0px"><h4>' + $.i18n('dashboard_infobox_label_title') + '</h4 >';
|
||||
grabber_config_info_html += '<span>' + $.i18n('conf_grabber_inst_grabber_config_info') + '</span>';
|
||||
grabber_config_info_html += '<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem(\'MenuItemGrabber\')" style="text-decoration:none;cursor:pointer"></a>';
|
||||
grabber_config_info_html += '</div>';
|
||||
$('#editor_container_instCapt').append(grabber_config_info_html);
|
||||
|
||||
if (!window.serverConfig.framegrabber.enable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(false);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").disable();
|
||||
}
|
||||
else {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(window.serverConfig.instCapture.systemEnable);
|
||||
}
|
||||
conf_editor_instCapt.on('ready', function () {
|
||||
|
||||
if (!window.serverConfig.grabberV4L2.enable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(false);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
|
||||
}
|
||||
else {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(window.serverConfig.instCapture.v4lEnable);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
conf_editor_instCapt.on('change', function () {
|
||||
|
||||
if (!conf_editor_instCapt.validate().length) {
|
||||
if (!window.serverConfig.framegrabber.enable && !window.serverConfig.grabberV4L2.enable) {
|
||||
$('#btn_submit_instCapt').attr('disabled', true);
|
||||
if (screenGrabberAvailable) {
|
||||
if (!window.serverConfig.framegrabber.enable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(false);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").disable();
|
||||
}
|
||||
else {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(window.serverConfig.instCapture.systemEnable);
|
||||
}
|
||||
} else {
|
||||
window.readOnlyMode ? $('#btn_submit_instCapt').attr('disabled', true) : $('#btn_submit_instCapt').attr('disabled', false);
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemEnable", false);
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemGrabberDevice", false);
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemPriority", false);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$('#btn_submit_instCapt').attr('disabled', true);
|
||||
}
|
||||
});
|
||||
|
||||
conf_editor_instCapt.watch('root.instCapture.systemEnable', () => {
|
||||
if (videoGrabberAvailable) {
|
||||
if (!window.serverConfig.grabberV4L2.enable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(false);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
|
||||
}
|
||||
else {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(window.serverConfig.instCapture.v4lEnable);
|
||||
|
||||
var screenEnable = conf_editor_instCapt.getEditor("root.instCapture.systemEnable").getValue();
|
||||
if (screenEnable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").setValue(window.serverConfig.framegrabber.available_devices);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").disable();
|
||||
showInputOptions("instCapture", ["systemGrabberDevice"], true);
|
||||
showInputOptions("instCapture", ["systemPriority"], true);
|
||||
|
||||
} else {
|
||||
showInputOptions("instCapture", ["systemGrabberDevice"], false);
|
||||
showInputOptions("instCapture", ["systemPriority"], false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
conf_editor_instCapt.watch('root.instCapture.v4lEnable', () => {
|
||||
var videoEnable = conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").getValue();
|
||||
if (videoEnable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").setValue(window.serverConfig.grabberV4L2.available_devices);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").disable();
|
||||
showInputOptions("instCapture", ["v4lGrabberDevice"], true);
|
||||
showInputOptions("instCapture", ["v4lPriority"], true);
|
||||
}
|
||||
else {
|
||||
if (!window.serverConfig.grabberV4L2.enable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
|
||||
}
|
||||
} else {
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lGrabberDevice", false);
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lEnable", false);
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lPriority", false);
|
||||
}
|
||||
showInputOptions("instCapture", ["v4lGrabberDevice"], false);
|
||||
showInputOptions("instCapture", ["v4lPriority"], false);
|
||||
}
|
||||
});
|
||||
|
||||
$('#btn_submit_instCapt').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_instCapt.getValue());
|
||||
});
|
||||
if (audioGrabberAvailable) {
|
||||
if (!window.serverConfig.grabberAudio.enable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.audioEnable").setValue(false);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.audioEnable").disable();
|
||||
}
|
||||
else {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.audioEnable").setValue(window.serverConfig.instCapture.audioEnable);
|
||||
|
||||
}
|
||||
} else {
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "audioGrabberDevice", false);
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "audioEnable", false);
|
||||
showInputOptionForItem(conf_editor_instCapt, "instCapture", "audioPriority", false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
conf_editor_instCapt.on('change', function () {
|
||||
|
||||
if (!conf_editor_instCapt.validate().length) {
|
||||
if (!window.serverConfig.framegrabber.enable &&
|
||||
!window.serverConfig.grabberV4L2.enable &&
|
||||
!window.serverConfig.grabberAudio.enable) {
|
||||
$('#btn_submit_instCapt').prop('disabled', true);
|
||||
} else {
|
||||
window.readOnlyMode ? $('#btn_submit_instCapt').prop('disabled', true) : $('#btn_submit_instCapt').prop('disabled', false);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$('#btn_submit_instCapt').prop('disabled', true);
|
||||
}
|
||||
});
|
||||
|
||||
conf_editor_instCapt.watch('root.instCapture.systemEnable', () => {
|
||||
|
||||
var screenEnable = conf_editor_instCapt.getEditor("root.instCapture.systemEnable").getValue();
|
||||
if (screenEnable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").setValue(window.serverConfig.framegrabber.available_devices);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").disable();
|
||||
showInputOptions("instCapture", ["systemGrabberDevice"], true);
|
||||
showInputOptions("instCapture", ["systemPriority"], true);
|
||||
|
||||
} else {
|
||||
showInputOptions("instCapture", ["systemGrabberDevice"], false);
|
||||
showInputOptions("instCapture", ["systemPriority"], false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
conf_editor_instCapt.watch('root.instCapture.v4lEnable', () => {
|
||||
var videoEnable = conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").getValue();
|
||||
if (videoEnable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").setValue(window.serverConfig.grabberV4L2.available_devices);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").disable();
|
||||
showInputOptions("instCapture", ["v4lGrabberDevice"], true);
|
||||
showInputOptions("instCapture", ["v4lPriority"], true);
|
||||
}
|
||||
else {
|
||||
if (!window.serverConfig.grabberV4L2.enable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
|
||||
}
|
||||
showInputOptions("instCapture", ["v4lGrabberDevice"], false);
|
||||
showInputOptions("instCapture", ["v4lPriority"], false);
|
||||
}
|
||||
});
|
||||
|
||||
conf_editor_instCapt.watch('root.instCapture.audioEnable', () => {
|
||||
const audioEnable = conf_editor_instCapt.getEditor("root.instCapture.audioEnable").getValue();
|
||||
if (audioEnable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.audioGrabberDevice").setValue(window.serverConfig.grabberAudio.available_devices);
|
||||
conf_editor_instCapt.getEditor("root.instCapture.audioGrabberDevice").disable();
|
||||
showInputOptions("instCapture", ["audioGrabberDevice"], true);
|
||||
showInputOptions("instCapture", ["audioPriority"], true);
|
||||
}
|
||||
else {
|
||||
if (!window.serverConfig.grabberAudio.enable) {
|
||||
conf_editor_instCapt.getEditor("root.instCapture.audioEnable").disable();
|
||||
}
|
||||
showInputOptions("instCapture", ["audioGrabberDevice"], false);
|
||||
showInputOptions("instCapture", ["audioPriority"], false);
|
||||
}
|
||||
});
|
||||
|
||||
$('#btn_submit_instCapt').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_instCapt.getValue());
|
||||
});
|
||||
}
|
||||
|
||||
//boblight
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
conf_editor_bobl = createJsonEditor('editor_container_boblightserver', {
|
||||
boblightServer: window.schema.boblightServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_bobl.on('ready', function () {
|
||||
var boblightServerEnable = conf_editor_bobl.getEditor("root.boblightServer.enable").getValue();
|
||||
if (!boblightServerEnable) {
|
||||
showInputOptionsForKey(conf_editor_bobl, "boblightServer", "enable", false);
|
||||
$('#boblightServerHelpPanelId').hide();
|
||||
}
|
||||
});
|
||||
|
||||
conf_editor_bobl.on('change', function () {
|
||||
conf_editor_bobl.validate().length || window.readOnlyMode ? $('#btn_submit_boblightserver').prop('disabled', true) : $('#btn_submit_boblightserver').prop('disabled', false);
|
||||
});
|
||||
|
||||
conf_editor_bobl.watch('root.boblightServer.enable', () => {
|
||||
var boblightServerEnable = conf_editor_bobl.getEditor("root.boblightServer.enable").getValue();
|
||||
if (boblightServerEnable) {
|
||||
//Make port instance specific, if port is still the default one (avoids overlap of used ports)
|
||||
var port = conf_editor_bobl.getEditor("root.boblightServer.port").getValue();
|
||||
if (port === conf_editor_bobl.schema.properties.boblightServer.properties.port.default) {
|
||||
port += parseInt(window.currentHyperionInstance);
|
||||
}
|
||||
conf_editor_bobl.getEditor("root.boblightServer.port").setValue(port);
|
||||
|
||||
showInputOptionsForKey(conf_editor_bobl, "boblightServer", "enable", true);
|
||||
$('#boblightServerHelpPanelId').show();
|
||||
} else {
|
||||
showInputOptionsForKey(conf_editor_bobl, "boblightServer", "enable", false);
|
||||
$('#boblightServerHelpPanelId').hide();
|
||||
}
|
||||
});
|
||||
|
||||
$('#btn_submit_boblightserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_bobl.getValue());
|
||||
});
|
||||
}
|
||||
|
||||
//create introduction
|
||||
if (window.showOptHelp) {
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
|
||||
}
|
||||
}
|
||||
|
||||
removeOverlay();
|
||||
});
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -20,7 +20,7 @@ $(document).ready(function () {
|
|||
}, true, true);
|
||||
|
||||
conf_editor.on('change', function () {
|
||||
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
|
||||
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').prop('disabled', true) : $('#btn_submit').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit').off().on('click', function () {
|
||||
|
@ -35,7 +35,8 @@ $(document).ready(function () {
|
|||
function infoSummary() {
|
||||
var info = "";
|
||||
|
||||
info += 'Hyperion System Summary Report (' + window.serverConfig.general.name + '), Reported instance: ' + window.currentHyperionInstanceName + '\n';
|
||||
info += 'Hyperion System Summary Report (' + window.serverConfig.general.name + ')\n';
|
||||
info += 'Reported instance: [' + window.currentHyperionInstance + '] - ' + window.currentHyperionInstanceName + '\n';
|
||||
|
||||
info += "\n< ----- System information -------------------- >\n";
|
||||
info += getSystemInfo() + '\n';
|
||||
|
@ -43,22 +44,36 @@ $(document).ready(function () {
|
|||
info += "\n< ----- Configured Instances ------------------ >\n";
|
||||
var instances = window.serverInfo.instance;
|
||||
for (var i = 0; i < instances.length; i++) {
|
||||
info += instances[i].instance + ': ' + instances[i].friendly_name + ' Running: ' + instances[i].running + '\n';
|
||||
info += instances[i].instance + ': ' + instances[i].friendly_name + ', Running: ' + instances[i].running + '\n';
|
||||
}
|
||||
|
||||
info += "\n< ----- This instance's priorities ------------ >\n";
|
||||
var prios = window.serverInfo.priorities;
|
||||
for (var i = 0; i < prios.length; i++) {
|
||||
info += prios[i].priority + ': ';
|
||||
if (prios[i].visible) {
|
||||
info += ' VISIBLE!';
|
||||
|
||||
if (prios.length > 0) {
|
||||
|
||||
for (var i = 0; i < prios.length; i++) {
|
||||
|
||||
var prio = prios[i].priority.toString().padStart(3, '0');
|
||||
|
||||
info += prio + ': ';
|
||||
if (prios[i].visible) {
|
||||
info += ' VISIBLE -';
|
||||
}
|
||||
else {
|
||||
info += ' INVISIBLE -';
|
||||
}
|
||||
info += ' (' + prios[i].componentId + ')';
|
||||
if (prios[i].owner) {
|
||||
info += ' (Owner: ' + prios[i].owner + ')';
|
||||
}
|
||||
info += '\n';
|
||||
|
||||
}
|
||||
else {
|
||||
info += ' ';
|
||||
}
|
||||
info += ' (' + prios[i].componentId + ') Owner: ' + prios[i].owner + '\n';
|
||||
} else {
|
||||
info += 'The current priority list is empty!\n';
|
||||
}
|
||||
info += 'priorities_autoselect: ' + window.serverInfo.priorities_autoselect + '\n';
|
||||
info += 'Autoselect: ' + window.serverInfo.priorities_autoselect + '\n';
|
||||
|
||||
info += "\n< ----- This instance components' status ------->\n";
|
||||
var comps = window.serverInfo.components;
|
||||
|
@ -67,7 +82,7 @@ $(document).ready(function () {
|
|||
}
|
||||
|
||||
info += "\n< ----- This instance's configuration --------- >\n";
|
||||
info += JSON.stringify(window.serverConfig) + '\n';
|
||||
info += JSON.stringify(window.serverConfig, null, 2) + '\n';
|
||||
|
||||
info += "\n< ----- Current Log --------------------------- >\n";
|
||||
var logMsgs = document.getElementById("logmessages").textContent;
|
||||
|
@ -92,7 +107,7 @@ $(document).ready(function () {
|
|||
);
|
||||
|
||||
$(`#btn_scroll`).bootstrapToggle();
|
||||
$(`#btn_scroll`).change(e => {
|
||||
$(`#btn_scroll`).on("change", e => {
|
||||
if (e.currentTarget.checked) {
|
||||
//Scroll to end of log
|
||||
isScroll = true;
|
||||
|
@ -121,8 +136,8 @@ $(document).ready(function () {
|
|||
if (messages.length != 0) {
|
||||
|
||||
for (var idx = 0; idx < messages.length; idx++) {
|
||||
var app_name = messages[idx].appName;
|
||||
var logger_name = messages[idx].loggerName;
|
||||
var logger_subname = messages[idx].loggerSubName;
|
||||
var function_ = messages[idx].function;
|
||||
var line = messages[idx].line;
|
||||
var file_name = messages[idx].fileName;
|
||||
|
@ -136,7 +151,18 @@ $(document).ready(function () {
|
|||
}
|
||||
|
||||
var date = new Date(parseInt(utime));
|
||||
var newLogLine = date.toISOString() + " [" + app_name + " " + logger_name + "] (" + level_string + ") " + debug + msg;
|
||||
var subComponent = "";
|
||||
if (window.serverInfo.instance.length >= 1) {
|
||||
if (logger_subname.startsWith("I")) {
|
||||
var instanceNum = logger_subname.substring(1);
|
||||
if (window.serverInfo.instance[instanceNum]) {
|
||||
subComponent = window.serverInfo.instance[instanceNum].friendly_name;
|
||||
} else {
|
||||
subComponent = instanceNum;
|
||||
}
|
||||
}
|
||||
}
|
||||
var newLogLine = date.toISOString() + " [" + logger_name + (subComponent ? "|" + subComponent : "") + "] (" + level_string + ") " + debug + msg;
|
||||
|
||||
$("#logmessages").append("<code>" + newLogLine + "</code>\n");
|
||||
}
|
||||
|
@ -181,5 +207,20 @@ $(document).ready(function () {
|
|||
|
||||
});
|
||||
|
||||
// toggle fullscreen button in log output
|
||||
$(".fullscreen-btn").mousedown(function (e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
$(".fullscreen-btn").click(function (e) {
|
||||
e.preventDefault();
|
||||
$(this).children('i')
|
||||
.toggleClass('fa-expand')
|
||||
.toggleClass('fa-compress');
|
||||
$('#conf_cont').toggle();
|
||||
$('#logmessages').css('max-height', $('#logmessages').css('max-height') !== 'none' ? 'none' : '400px');
|
||||
});
|
||||
|
||||
removeOverlay();
|
||||
});
|
||||
|
||||
|
|
|
@ -1,59 +1,68 @@
|
|||
$(document).ready(function () {
|
||||
performTranslation();
|
||||
|
||||
var BOBLIGHT_ENABLED = window.comps.find(element => element.name == "BOBLIGHTSERVER");
|
||||
var FORWARDER_ENABLED = (jQuery.inArray("forwarder", window.serverInfo.services) !== -1);
|
||||
var FLATBUF_SERVER_ENABLED = (jQuery.inArray("flatbuffer", window.serverInfo.services) !== -1);
|
||||
var PROTOTBUF_SERVER_ENABLED = (jQuery.inArray("protobuffer", window.serverInfo.services) !== -1);
|
||||
|
||||
var conf_editor_net = null;
|
||||
var conf_editor_json = null;
|
||||
var conf_editor_proto = null;
|
||||
var conf_editor_fbs = null;
|
||||
var conf_editor_bobl = null;
|
||||
var conf_editor_forw = null;
|
||||
|
||||
// Service properties , 2-dimensional array of [servicetype][id]
|
||||
discoveredRemoteServices = {};
|
||||
|
||||
addJsonEditorHostValidation();
|
||||
|
||||
if (window.showOptHelp) {
|
||||
//network
|
||||
$('#conf_cont').append(createRow('conf_cont_net'))
|
||||
$('#conf_cont').append(createRow('conf_cont_net'));
|
||||
$('#conf_cont_net').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net', 'panel-system'));
|
||||
$('#conf_cont_net').append(createHelpTable(window.schema.network.properties, $.i18n("edt_conf_net_heading_title")));
|
||||
|
||||
//jsonserver
|
||||
$('#conf_cont').append(createRow('conf_cont_json'))
|
||||
$('#conf_cont').append(createRow('conf_cont_json'));
|
||||
$('#conf_cont_json').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver', 'panel-system'));
|
||||
$('#conf_cont_json').append(createHelpTable(window.schema.jsonServer.properties, $.i18n("edt_conf_js_heading_title")));
|
||||
|
||||
//flatbufserver
|
||||
$('#conf_cont').append(createRow('conf_cont_flatbuf'))
|
||||
$('#conf_cont_flatbuf').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver', 'panel-system'));
|
||||
$('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title"), "flatbufServerHelpPanelId"));
|
||||
if (FLATBUF_SERVER_ENABLED) {
|
||||
$('#conf_cont').append(createRow('conf_cont_flatbuf'));
|
||||
$('#conf_cont_flatbuf').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver', 'panel-system'));
|
||||
$('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title"), "flatbufServerHelpPanelId"));
|
||||
}
|
||||
|
||||
//protoserver
|
||||
$('#conf_cont').append(createRow('conf_cont_proto'))
|
||||
$('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver', 'panel-system'));
|
||||
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"), "protoServerHelpPanelId"));
|
||||
|
||||
//boblight
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
$('#conf_cont').append(createRow('conf_cont_bobl'))
|
||||
$('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver', 'panel-system'));
|
||||
$('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title"), "boblightServerHelpPanelId"));
|
||||
if (PROTOTBUF_SERVER_ENABLED) {
|
||||
$('#conf_cont').append(createRow('conf_cont_proto'));
|
||||
$('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver', 'panel-system'));
|
||||
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"), "protoServerHelpPanelId"));
|
||||
}
|
||||
|
||||
//forwarder
|
||||
if (storedAccess != 'default') {
|
||||
$('#conf_cont').append(createRow('conf_cont_fw'))
|
||||
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder', 'panel-system'));
|
||||
$('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title"), "forwarderHelpPanelId"));
|
||||
if (FORWARDER_ENABLED) {
|
||||
if (storedAccess != 'default') {
|
||||
$('#conf_cont').append(createRow('conf_cont_fw'));
|
||||
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder', 'panel-system'));
|
||||
$('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title"), "forwarderHelpPanelId"));
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$('#conf_cont').addClass('row');
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net'));
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver'));
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver'));
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver'));
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder'));
|
||||
|
||||
if (FLATBUF_SERVER_ENABLED) {
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver'));
|
||||
}
|
||||
if (PROTOTBUF_SERVER_ENABLED) {
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver'));
|
||||
}
|
||||
if (FORWARDER_ENABLED) {
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder'));
|
||||
}
|
||||
$("#conf_cont_tok").removeClass('row');
|
||||
}
|
||||
|
||||
|
@ -63,7 +72,7 @@ $(document).ready(function () {
|
|||
}, true, true);
|
||||
|
||||
conf_editor_net.on('change', function () {
|
||||
conf_editor_net.validate().length || window.readOnlyMode ? $('#btn_submit_net').attr('disabled', true) : $('#btn_submit_net').attr('disabled', false);
|
||||
conf_editor_net.validate().length || window.readOnlyMode ? $('#btn_submit_net').prop('disabled', true) : $('#btn_submit_net').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_net').off().on('click', function () {
|
||||
|
@ -76,7 +85,7 @@ $(document).ready(function () {
|
|||
}, true, true);
|
||||
|
||||
conf_editor_json.on('change', function () {
|
||||
conf_editor_json.validate().length || window.readOnlyMode ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false);
|
||||
conf_editor_json.validate().length || window.readOnlyMode ? $('#btn_submit_jsonserver').prop('disabled', true) : $('#btn_submit_jsonserver').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_jsonserver').off().on('click', function () {
|
||||
|
@ -84,103 +93,117 @@ $(document).ready(function () {
|
|||
});
|
||||
|
||||
//flatbuffer
|
||||
conf_editor_fbs = createJsonEditor('editor_container_fbserver', {
|
||||
flatbufServer: window.schema.flatbufServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_fbs.on('change', function () {
|
||||
var flatbufServerEnable = conf_editor_fbs.getEditor("root.flatbufServer.enable").getValue();
|
||||
if (flatbufServerEnable) {
|
||||
showInputOptionsForKey(conf_editor_fbs, "flatbufServer", "enable", true);
|
||||
$('#flatbufServerHelpPanelId').show();
|
||||
} else {
|
||||
showInputOptionsForKey(conf_editor_fbs, "flatbufServer", "enable", false);
|
||||
$('#flatbufServerHelpPanelId').hide();
|
||||
}
|
||||
conf_editor_fbs.validate().length || window.readOnlyMode ? $('#btn_submit_fbserver').attr('disabled', true) : $('#btn_submit_fbserver').attr('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_fbserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_fbs.getValue());
|
||||
});
|
||||
|
||||
//protobuffer
|
||||
conf_editor_proto = createJsonEditor('editor_container_protoserver', {
|
||||
protoServer: window.schema.protoServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_proto.on('change', function () {
|
||||
var protoServerEnable = conf_editor_proto.getEditor("root.protoServer.enable").getValue();
|
||||
if (protoServerEnable) {
|
||||
showInputOptionsForKey(conf_editor_proto, "protoServer", "enable", true);
|
||||
$('#protoServerHelpPanelId').show();
|
||||
} else {
|
||||
showInputOptionsForKey(conf_editor_proto, "protoServer", "enable", false);
|
||||
$('#protoServerHelpPanelId').hide();
|
||||
}
|
||||
conf_editor_proto.validate().length || window.readOnlyMode ? $('#btn_submit_protoserver').attr('disabled', true) : $('#btn_submit_protoserver').attr('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_protoserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_proto.getValue());
|
||||
});
|
||||
|
||||
//boblight
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
conf_editor_bobl = createJsonEditor('editor_container_boblightserver', {
|
||||
boblightServer: window.schema.boblightServer
|
||||
if (FLATBUF_SERVER_ENABLED) {
|
||||
conf_editor_fbs = createJsonEditor('editor_container_fbserver', {
|
||||
flatbufServer: window.schema.flatbufServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_bobl.on('change', function () {
|
||||
var boblightServerEnable = conf_editor_bobl.getEditor("root.boblightServer.enable").getValue();
|
||||
if (boblightServerEnable) {
|
||||
showInputOptionsForKey(conf_editor_bobl, "boblightServer", "enable", true);
|
||||
$('#boblightServerHelpPanelId').show();
|
||||
conf_editor_fbs.on('change', function () {
|
||||
var flatbufServerEnable = conf_editor_fbs.getEditor("root.flatbufServer.enable").getValue();
|
||||
if (flatbufServerEnable) {
|
||||
showInputOptionsForKey(conf_editor_fbs, "flatbufServer", "enable", true);
|
||||
$('#flatbufServerHelpPanelId').show();
|
||||
} else {
|
||||
showInputOptionsForKey(conf_editor_bobl, "boblightServer", "enable", false);
|
||||
$('#boblightServerHelpPanelId').hide();
|
||||
showInputOptionsForKey(conf_editor_fbs, "flatbufServer", "enable", false);
|
||||
$('#flatbufServerHelpPanelId').hide();
|
||||
}
|
||||
conf_editor_bobl.validate().length || window.readOnlyMode ? $('#btn_submit_boblightserver').attr('disabled', true) : $('#btn_submit_boblightserver').attr('disabled', false);
|
||||
conf_editor_fbs.validate().length || window.readOnlyMode ? $('#btn_submit_fbserver').prop('disabled', true) : $('#btn_submit_fbserver').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_boblightserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_bobl.getValue());
|
||||
$('#btn_submit_fbserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_fbs.getValue());
|
||||
});
|
||||
}
|
||||
|
||||
if (storedAccess != 'default') {
|
||||
//forwarder
|
||||
conf_editor_forw = createJsonEditor('editor_container_forwarder', {
|
||||
forwarder: window.schema.forwarder
|
||||
//protobuffer
|
||||
if (PROTOTBUF_SERVER_ENABLED) {
|
||||
conf_editor_proto = createJsonEditor('editor_container_protoserver', {
|
||||
protoServer: window.schema.protoServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_forw.on('change', function () {
|
||||
var forwarderEnable = conf_editor_forw.getEditor("root.forwarder.enable").getValue();
|
||||
if (forwarderEnable) {
|
||||
showInputOptionsForKey(conf_editor_forw, "forwarder", "enable", true);
|
||||
$('#forwarderHelpPanelId').show();
|
||||
conf_editor_proto.on('change', function () {
|
||||
var protoServerEnable = conf_editor_proto.getEditor("root.protoServer.enable").getValue();
|
||||
if (protoServerEnable) {
|
||||
showInputOptionsForKey(conf_editor_proto, "protoServer", "enable", true);
|
||||
$('#protoServerHelpPanelId').show();
|
||||
} else {
|
||||
showInputOptionsForKey(conf_editor_forw, "forwarder", "enable", false);
|
||||
$('#forwarderHelpPanelId').hide();
|
||||
showInputOptionsForKey(conf_editor_proto, "protoServer", "enable", false);
|
||||
$('#protoServerHelpPanelId').hide();
|
||||
}
|
||||
conf_editor_forw.validate().length || window.readOnlyMode ? $('#btn_submit_forwarder').attr('disabled', true) : $('#btn_submit_forwarder').attr('disabled', false);
|
||||
conf_editor_proto.validate().length || window.readOnlyMode ? $('#btn_submit_protoserver').prop('disabled', true) : $('#btn_submit_protoserver').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_forwarder').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_forw.getValue());
|
||||
$('#btn_submit_protoserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_proto.getValue());
|
||||
});
|
||||
}
|
||||
|
||||
//forwarder
|
||||
if (FORWARDER_ENABLED) {
|
||||
if (storedAccess != 'default') {
|
||||
conf_editor_forw = createJsonEditor('editor_container_forwarder', {
|
||||
forwarder: window.schema.forwarder
|
||||
}, true, true);
|
||||
|
||||
conf_editor_forw.on('ready', function () {
|
||||
|
||||
updateServiceCacheForwarderConfiguredItems("jsonapi");
|
||||
updateServiceCacheForwarderConfiguredItems("flatbuffer");
|
||||
|
||||
var forwarderEnable = conf_editor_forw.getEditor("root.forwarder.enable").getValue();
|
||||
if (forwarderEnable) {
|
||||
discoverRemoteHyperionServices("jsonapi");
|
||||
discoverRemoteHyperionServices("flatbuffer");
|
||||
}
|
||||
});
|
||||
|
||||
conf_editor_forw.on('change', function () {
|
||||
var forwarderEnable = conf_editor_forw.getEditor("root.forwarder.enable").getValue();
|
||||
if (forwarderEnable) {
|
||||
$('#forwarderHelpPanelId').show();
|
||||
} else {
|
||||
showInputOptionsForKey(conf_editor_forw, "forwarder", "enable", false);
|
||||
$('#forwarderHelpPanelId').hide();
|
||||
}
|
||||
conf_editor_forw.validate().length || window.readOnlyMode ? $('#btn_submit_forwarder').prop('disabled', true) : $('#btn_submit_forwarder').prop('disabled', false);
|
||||
});
|
||||
|
||||
conf_editor_forw.watch('root.forwarder.jsonapiselect', () => {
|
||||
updateForwarderServiceSections("jsonapi");
|
||||
});
|
||||
|
||||
conf_editor_forw.watch('root.forwarder.flatbufferselect', () => {
|
||||
updateForwarderServiceSections("flatbuffer");
|
||||
});
|
||||
|
||||
conf_editor_forw.watch('root.forwarder.enable', () => {
|
||||
|
||||
var forwarderEnable = conf_editor_forw.getEditor("root.forwarder.enable").getValue();
|
||||
if (forwarderEnable) {
|
||||
discoverRemoteHyperionServices("jsonapi");
|
||||
discoverRemoteHyperionServices("flatbuffer");
|
||||
}
|
||||
});
|
||||
|
||||
$('#btn_submit_forwarder').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_forw.getValue());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//create introduction
|
||||
if (window.showOptHelp) {
|
||||
createHint("intro", $.i18n('conf_network_net_intro'), "editor_container_net");
|
||||
createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver");
|
||||
createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver");
|
||||
createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
|
||||
if (FLATBUF_SERVER_ENABLED) {
|
||||
createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver");
|
||||
}
|
||||
if (PROTOTBUF_SERVER_ENABLED) {
|
||||
createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
|
||||
}
|
||||
if (FORWARDER_ENABLED) {
|
||||
createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
|
||||
}
|
||||
createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
|
||||
createHint("intro", $.i18n('conf_network_tok_intro'), "tok_desc_cont");
|
||||
}
|
||||
|
||||
|
@ -212,10 +235,10 @@ $(document).ready(function () {
|
|||
$('#btn_create_tok').off().on('click', function () {
|
||||
requestToken(encodeHTML($('#tok_comment').val()))
|
||||
$('#tok_comment').val("")
|
||||
$('#btn_create_tok').attr('disabled', true)
|
||||
$('#btn_create_tok').prop('disabled', true)
|
||||
});
|
||||
$('#tok_comment').off().on('input', function (e) {
|
||||
(e.currentTarget.value.length >= 10) ? $('#btn_create_tok').attr('disabled', false) : $('#btn_create_tok').attr('disabled', true);
|
||||
(e.currentTarget.value.length >= 10) ? $('#btn_create_tok').prop('disabled', false) : $('#btn_create_tok').prop('disabled', true);
|
||||
if (10 - e.currentTarget.value.length >= 1 && 10 - e.currentTarget.value.length <= 9)
|
||||
$('#tok_chars_needed').html(10 - e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
|
||||
else
|
||||
|
@ -238,13 +261,151 @@ $(document).ready(function () {
|
|||
$("#conf_cont_tok").removeAttr('style')
|
||||
}
|
||||
|
||||
$('#root_network_apiAuth').change(function () {
|
||||
$('#root_network_apiAuth').on("change", function () {
|
||||
var state = $(this).is(":checked");
|
||||
checkApiTokenState(state);
|
||||
})
|
||||
});
|
||||
|
||||
checkApiTokenState(window.serverConfig.network.apiAuth);
|
||||
|
||||
removeOverlay();
|
||||
|
||||
function updateForwarderServiceSections(type) {
|
||||
|
||||
var editorPath = "root.forwarder." + type;
|
||||
var selectedServices = conf_editor_forw.getEditor(editorPath + "select").getValue();
|
||||
|
||||
if (jQuery.isEmptyObject(selectedServices) || selectedServices[0] === "NONE") {
|
||||
conf_editor_forw.getEditor(editorPath).setValue([]);
|
||||
showInputOptionForItem(conf_editor_forw, "forwarder", type, false);
|
||||
} else {
|
||||
|
||||
var newServices = [];
|
||||
for (var i = 0; i < selectedServices.length; ++i) {
|
||||
|
||||
var service = discoveredRemoteServices[type][selectedServices[i]];
|
||||
var newrecord = {};
|
||||
|
||||
newrecord.name = service.name;
|
||||
newrecord.host = service.host;
|
||||
newrecord.port = service.port;
|
||||
|
||||
newServices.push(newrecord);
|
||||
}
|
||||
conf_editor_forw.getEditor(editorPath).setValue(newServices);
|
||||
|
||||
showInputOptionForItem(conf_editor_forw, "forwarder", type, true);
|
||||
conf_editor_forw.getEditor(editorPath).disable();
|
||||
}
|
||||
}
|
||||
|
||||
function updateForwarderSelectList(type) {
|
||||
|
||||
var selectionElement = type + "select";
|
||||
|
||||
var enumVals = [];
|
||||
var enumTitelVals = [];
|
||||
var enumDefaultVals = [];
|
||||
|
||||
for (var key in discoveredRemoteServices[type]) {
|
||||
|
||||
var service = discoveredRemoteServices[type][key];
|
||||
enumVals.push(service.host);
|
||||
enumTitelVals.push(service.name);
|
||||
|
||||
if (service.inConfig == true) {
|
||||
enumDefaultVals.push(service.host);
|
||||
}
|
||||
}
|
||||
|
||||
let addSchemaElements = {
|
||||
"uniqueItems": true
|
||||
};
|
||||
|
||||
if (jQuery.isEmptyObject(enumVals)) {
|
||||
enumVals.push("NONE");
|
||||
enumTitelVals.push($.i18n('edt_conf_fw_remote_service_discovered_none'));
|
||||
}
|
||||
|
||||
updateJsonEditorMultiSelection(conf_editor_forw, 'root.forwarder', selectionElement, addSchemaElements, enumVals, enumTitelVals, enumDefaultVals);
|
||||
};
|
||||
|
||||
function updateServiceCacheForwarderConfiguredItems(serviceType) {
|
||||
|
||||
var editor = conf_editor_forw.getEditor("root.forwarder." + serviceType);
|
||||
|
||||
if (editor) {
|
||||
if (!discoveredRemoteServices[serviceType]) {
|
||||
discoveredRemoteServices[serviceType] = {};
|
||||
}
|
||||
|
||||
var configuredServices = JSON.parse(JSON.stringify(editor.getValue('items')));
|
||||
for (const service of configuredServices) {
|
||||
|
||||
//Handle not named sceanrios
|
||||
if (!service.name) {
|
||||
service.name = service.host;
|
||||
}
|
||||
|
||||
service.inConfig = true;
|
||||
|
||||
discoveredRemoteServices[serviceType][service.host] = service;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateRemoteServiceCache(discoveryInfo) {
|
||||
|
||||
for (var serviceType in discoveryInfo) {
|
||||
|
||||
if (!discoveredRemoteServices[serviceType]) {
|
||||
discoveredRemoteServices[serviceType] = {};
|
||||
}
|
||||
|
||||
var discoveredServices = discoveryInfo[serviceType];
|
||||
for (const service of discoveredServices) {
|
||||
|
||||
if (!service.sameHost)
|
||||
{
|
||||
//Handle non mDNS sceanrios
|
||||
if (!service.name) {
|
||||
service.name = service.host;
|
||||
} else {
|
||||
service.host = service.service;
|
||||
}
|
||||
|
||||
if (discoveredRemoteServices[serviceType][service.host]) {
|
||||
service.inConfig = true;
|
||||
}
|
||||
|
||||
discoveredRemoteServices[serviceType][service.host] = service;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
async function discoverRemoteHyperionServices(type, params) {
|
||||
|
||||
const result = await requestServiceDiscovery(type, params);
|
||||
|
||||
var discoveryResult;
|
||||
if (result && !result.error) {
|
||||
discoveryResult = result.info;
|
||||
}
|
||||
else {
|
||||
discoveryResult = {
|
||||
"services": []
|
||||
};
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case "jsonapi":
|
||||
case "flatbuffer":
|
||||
updateRemoteServiceCache(discoveryResult.services);
|
||||
updateForwarderSelectList(type);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
$(document).ready(function () {
|
||||
performTranslation();
|
||||
|
||||
var EFFECTENGINE_ENABLED = (jQuery.inArray("effectengine", window.serverInfo.services) !== -1);
|
||||
|
||||
// update instance listing
|
||||
updateHyperionInstanceListing();
|
||||
|
||||
|
@ -17,7 +19,6 @@ $(document).ready(function () {
|
|||
$('.ssthead').html(createTableRow([$.i18n('remote_input_origin'), $.i18n('remote_input_owner'), $.i18n('remote_input_priority'), $.i18n('remote_input_status')], true, true));
|
||||
createTable('crthead', 'crtbody', 'adjust_content', true);
|
||||
|
||||
|
||||
//create introduction
|
||||
if (window.showOptHelp) {
|
||||
createHint("intro", $.i18n('remote_color_intro', $.i18n('remote_losthint')), "color_intro");
|
||||
|
@ -28,46 +29,6 @@ $(document).ready(function () {
|
|||
createHint("intro", $.i18n('remote_videoMode_intro', $.i18n('remote_losthint')), "videomode_intro");
|
||||
}
|
||||
|
||||
//color adjustment
|
||||
var sColor = sortProperties(window.serverSchema.properties.color.properties.channelAdjustment.items.properties);
|
||||
var values = window.serverInfo.adjustment[0];
|
||||
|
||||
for (var key in sColor) {
|
||||
if (sColor[key].key != "id" && sColor[key].key != "leds") {
|
||||
var title = '<label for="cr_' + sColor[key].key + '">' + $.i18n(sColor[key].title) + '</label>';
|
||||
var property;
|
||||
var value = values[sColor[key].key];
|
||||
|
||||
if (sColor[key].type == "array") {
|
||||
property = '<div id="cr_' + sColor[key].key + '" class="input-group colorpicker-component" ><input type="text" class="form-control" /><span class="input-group-addon"><i></i></span></div>';
|
||||
$('.crtbody').append(createTableRow([title, property], false, true));
|
||||
createCP('cr_' + sColor[key].key, value, function (rgb, hex, e) {
|
||||
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), '[' + rgb.r + ',' + rgb.g + ',' + rgb.b + ']');
|
||||
});
|
||||
}
|
||||
else if (sColor[key].type == "boolean") {
|
||||
property = '<div class="checkbox"><input id="cr_' + sColor[key].key + '" type="checkbox" value="' + value + '"/><label></label></div>';
|
||||
$('.crtbody').append(createTableRow([title, property], false, true));
|
||||
|
||||
$('#cr_' + sColor[key].key).off().on('change', function (e) {
|
||||
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), e.currentTarget.checked);
|
||||
});
|
||||
}
|
||||
else {
|
||||
if (sColor[key].key == "brightness" || sColor[key].key == "brightnessCompensation" || sColor[key].key == "backlightThreshold")
|
||||
property = '<div class="input-group"><input id="cr_' + sColor[key].key + '" type="number" class="form-control" min="0" max="100" step="10" value="' + value + '"/><span class="input-group-addon">' + $.i18n("edt_append_percent") + '</span></div>';
|
||||
else
|
||||
property = '<input id="cr_' + sColor[key].key + '" type="number" class="form-control" min="0.1" max="4.0" step="0.1" value="' + value + '"/>';
|
||||
|
||||
$('.crtbody').append(createTableRow([title, property], false, true));
|
||||
$('#cr_' + sColor[key].key).off().on('change', function (e) {
|
||||
valValue(this.id, this.value, this.min, this.max);
|
||||
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), e.currentTarget.value);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function sendEffect() {
|
||||
var efx = $("#effect_select").val();
|
||||
if (efx != "__none__") {
|
||||
|
@ -82,8 +43,61 @@ $(document).ready(function () {
|
|||
requestSetColor(rgb.r, rgb.g, rgb.b, duration);
|
||||
}
|
||||
|
||||
function updateChannelAdjustments() {
|
||||
|
||||
$('.crtbody').html("");
|
||||
var sColor = sortProperties(window.serverSchema.properties.color.properties.channelAdjustment.items.properties);
|
||||
var values = window.serverInfo.adjustment[0];
|
||||
|
||||
for (var key in sColor) {
|
||||
if (sColor[key].key != "id" && sColor[key].key != "leds") {
|
||||
var title = '<label for="cr_' + sColor[key].key + '">' + $.i18n(sColor[key].title) + '</label>';
|
||||
var property;
|
||||
var value = values[sColor[key].key];
|
||||
|
||||
if (sColor[key].type == "array") {
|
||||
property = '<div id="cr_' + sColor[key].key + '" class="input-group colorpicker-component" ><input type="text" class="form-control" /><span class="input-group-addon"><i></i></span></div>';
|
||||
$('.crtbody').append(createTableRow([title, property], false, true));
|
||||
createCP('cr_' + sColor[key].key, value, function (rgb, hex, e) {
|
||||
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), '[' + rgb.r + ',' + rgb.g + ',' + rgb.b + ']');
|
||||
});
|
||||
}
|
||||
else if (sColor[key].type == "boolean") {
|
||||
property = '<div class="checkbox"><input id="cr_' + sColor[key].key + '" type="checkbox" ' + (value ? "checked" : "") + '/><label></label></div>';
|
||||
$('.crtbody').append(createTableRow([title, property], false, true));
|
||||
|
||||
$('#cr_' + sColor[key].key).off().on('change', function (e) {
|
||||
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), e.currentTarget.checked);
|
||||
});
|
||||
}
|
||||
else {
|
||||
if (sColor[key].key == "brightness" ||
|
||||
sColor[key].key == "brightnessCompensation" ||
|
||||
sColor[key].key == "backlightThreshold" ||
|
||||
sColor[key].key == "saturationGain" ||
|
||||
sColor[key].key == "brightnessGain") {
|
||||
|
||||
property = '<input id="cr_' + sColor[key].key + '" type="number" class="form-control" min="' + sColor[key].minimum + '" max="' + sColor[key].maximum + '" step="' + sColor[key].step + '" value="' + value + '"/>';
|
||||
if (sColor[key].append === "edt_append_percent") {
|
||||
property = '<div class="input-group">' + property + '<span class="input-group-addon">' + $.i18n("edt_append_percent") + '</span></div>';
|
||||
}
|
||||
}
|
||||
else {
|
||||
property = '<input id="cr_' + sColor[key].key + '" type="number" class="form-control" min="0.1" max="4.0" step="0.1" value="' + value + '"/>';
|
||||
}
|
||||
|
||||
$('.crtbody').append(createTableRow([title, property], false, true));
|
||||
$('#cr_' + sColor[key].key).off().on('change', function (e) {
|
||||
valValue(this.id, this.value, this.min, this.max);
|
||||
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), e.currentTarget.value);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateInputSelect() {
|
||||
$('.sstbody').html("");
|
||||
$('.sstbody').empty();
|
||||
var prios = window.serverInfo.priorities;
|
||||
var clearAll = false;
|
||||
|
||||
|
@ -126,13 +140,13 @@ $(document).ready(function () {
|
|||
|
||||
switch (compId) {
|
||||
case "EFFECT":
|
||||
owner = $.i18n('remote_effects_label_effects') + ' ' + owner;
|
||||
owner = $.i18n('remote_effects_label_effects') + ' ' + owner;
|
||||
break;
|
||||
case "COLOR":
|
||||
owner = $.i18n('remote_color_label_color') + ' ' + '<div style="width:18px; height:18px; border-radius:20px; margin-bottom:-4px; border:1px grey solid; background-color: rgb(' + value + '); display:inline-block" title="RGB: (' + value + ')"></div>';
|
||||
break;
|
||||
case "IMAGE":
|
||||
owner = $.i18n('remote_effects_label_picture') + ' ' + owner;
|
||||
owner = $.i18n('remote_effects_label_picture') + (owner !== undefined ? (' ' + owner) : "");
|
||||
break;
|
||||
case "GRABBER":
|
||||
owner = $.i18n('general_comp_GRABBER') + ': (' + owner + ')';
|
||||
|
@ -140,6 +154,9 @@ $(document).ready(function () {
|
|||
case "V4L":
|
||||
owner = $.i18n('general_comp_V4L') + ': (' + owner + ')';
|
||||
break;
|
||||
case "AUDIO":
|
||||
owner = $.i18n('general_comp_AUDIO') + ': (' + owner + ')';
|
||||
break;
|
||||
case "BOBLIGHTSERVER":
|
||||
owner = $.i18n('general_comp_BOBLIGHTSERVER');
|
||||
break;
|
||||
|
@ -151,16 +168,18 @@ $(document).ready(function () {
|
|||
break;
|
||||
}
|
||||
|
||||
if (duration && compId != "GRABBER" && compId != "FLATBUFSERVER" && compId != "PROTOSERVER")
|
||||
owner += '<br/><span style="font-size:80%; color:grey;">' + $.i18n('remote_input_duration') + ' ' + duration.toFixed(0) + $.i18n('edt_append_s') + '</span>';
|
||||
if (!(duration && duration < 0)) {
|
||||
if (duration && compId != "GRABBER" && compId != "FLATBUFSERVER" && compId != "PROTOSERVER")
|
||||
owner += '<br/><span style="font-size:80%; color:grey;">' + $.i18n('remote_input_duration') + ' ' + duration.toFixed(0) + $.i18n('edt_append_s') + '</span>';
|
||||
|
||||
var btn = '<button id="srcBtn' + i + '" type="button" ' + btn_state + ' class="btn btn-' + btn_type + ' btn_input_selection" onclick="requestSetSource(' + priority + ');">' + btn_text + '</button>';
|
||||
var btn = '<button id="srcBtn' + i + '" type="button" ' + btn_state + ' class="btn btn-' + btn_type + ' btn_input_selection" onclick="requestSetSource(' + priority + ');">' + btn_text + '</button>';
|
||||
|
||||
if ((compId == "EFFECT" || compId == "COLOR" || compId == "IMAGE") && priority < 254)
|
||||
btn += '<button type="button" class="btn btn-sm btn-danger" style="margin-left:10px;" onclick="requestPriorityClear(' + priority + ');"><i class="fa fa-close"></button>';
|
||||
if ((compId == "EFFECT" || compId == "COLOR" || compId == "IMAGE") && priority < 254)
|
||||
btn += '<button type="button" class="btn btn-sm btn-danger" style="margin-left:10px;" onclick="requestPriorityClear(' + priority + ');"><i class="fa fa-close"></button>';
|
||||
|
||||
if (btn_type != 'default')
|
||||
$('.sstbody').append(createTableRow([origin, owner, priority, btn], false, true));
|
||||
if (btn_type != 'default')
|
||||
$('.sstbody').append(createTableRow([origin, owner, priority, btn], false, true));
|
||||
}
|
||||
}
|
||||
var btn_auto_color = (window.serverInfo.priorities_autoselect ? "btn-success" : "btn-danger");
|
||||
var btn_auto_state = (window.serverInfo.priorities_autoselect ? "disabled" : "enabled");
|
||||
|
@ -203,7 +222,8 @@ $(document).ready(function () {
|
|||
for (const comp of components) {
|
||||
if (comp.name === "ALL" || (comp.name === "FORWARDER" && window.currentHyperionInstance != 0) ||
|
||||
(comp.name === "GRABBER" && !window.serverConfig.framegrabber.enable) ||
|
||||
(comp.name === "V4L" && !window.serverConfig.grabberV4L2.enable))
|
||||
(comp.name === "V4L" && !window.serverConfig.grabberV4L2.enable) ||
|
||||
(comp.name === "AUDIO" && !window.serverConfig.grabberAudio.enable))
|
||||
continue;
|
||||
|
||||
const enable_style = (comp.enabled ? "checked" : "");
|
||||
|
@ -220,7 +240,7 @@ $(document).ready(function () {
|
|||
$('#componentsbutton').append(d);
|
||||
$(`#${comp_btn_id}`).bootstrapToggle();
|
||||
$(`#${comp_btn_id}`).bootstrapToggle((hyperionEnabled ? "enable" : "disable"));
|
||||
$(`#${comp_btn_id}`).change(e => {
|
||||
$(`#${comp_btn_id}`).on("change", e => {
|
||||
requestSetComponentState(e.currentTarget.id.split('_').pop(), e.currentTarget.checked);
|
||||
});
|
||||
}
|
||||
|
@ -311,6 +331,9 @@ $(document).ready(function () {
|
|||
if (getStorage('rmduration') != null) {
|
||||
$("#remote_duration").val(getStorage('rmduration'));
|
||||
duration = getStorage('rmduration');
|
||||
if (duration == 0) {
|
||||
duration = ENDLESS;
|
||||
}
|
||||
}
|
||||
|
||||
createCP('cp2', cpcolor, function (rgbT, hex) {
|
||||
|
@ -330,6 +353,9 @@ $(document).ready(function () {
|
|||
$("#remote_duration").off().on("change", function () {
|
||||
duration = valValue(this.id, this.value, this.min, this.max);
|
||||
setStorage('rmduration', duration);
|
||||
if (duration == 0) {
|
||||
duration = ENDLESS;
|
||||
}
|
||||
});
|
||||
|
||||
$("#effect_select").off().on("change", function (event) {
|
||||
|
@ -337,18 +363,22 @@ $(document).ready(function () {
|
|||
});
|
||||
|
||||
$("#remote_input_reseff, #remote_input_rescol").off().on("click", function () {
|
||||
if (this.id == "remote_input_rescol")
|
||||
if (this.id == "remote_input_rescol") {
|
||||
sendColor();
|
||||
else
|
||||
sendEffect();
|
||||
} else {
|
||||
if (EFFECTENGINE_ENABLED) {
|
||||
sendEffect();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#remote_input_repimg").off().on("click", function () {
|
||||
if (lastImgData != "")
|
||||
if (lastImgData != "") {
|
||||
requestSetImage(lastImgData, duration, lastFileName);
|
||||
}
|
||||
});
|
||||
|
||||
$("#remote_input_img").change(function () {
|
||||
$("#remote_input_img").on("change", function () {
|
||||
readImg(this, function (src, fileName) {
|
||||
lastFileName = fileName;
|
||||
if (src.includes(","))
|
||||
|
@ -365,12 +395,16 @@ $(document).ready(function () {
|
|||
updateInputSelect();
|
||||
updateLedMapping();
|
||||
updateVideoMode();
|
||||
updateEffectlist();
|
||||
updateChannelAdjustments();
|
||||
if (EFFECTENGINE_ENABLED) {
|
||||
updateEffectlist();
|
||||
} else {
|
||||
$('#effect_row').hide();
|
||||
}
|
||||
|
||||
// interval updates
|
||||
|
||||
$(window.hyperion).on('components-updated', function (e, comp) {
|
||||
//console.log ("components-updated", e, comp);
|
||||
updateComponent(comp);
|
||||
});
|
||||
|
||||
|
@ -394,5 +428,16 @@ $(document).ready(function () {
|
|||
updateEffectlist();
|
||||
});
|
||||
|
||||
$(window.hyperion).on("cmd-settings-update", function (event) {
|
||||
if (event.response.data.color) {
|
||||
window.serverInfo.imageToLedMappingType = event.response.data.color.imageToLedMappingType;
|
||||
updateLedMapping();
|
||||
|
||||
window.serverInfo.adjustment = event.response.data.color.channelAdjustment;
|
||||
updateChannelAdjustments();
|
||||
}
|
||||
});
|
||||
|
||||
removeOverlay();
|
||||
});
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
}, true, true);
|
||||
|
||||
conf_editor.on('change',function() {
|
||||
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
|
||||
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').prop('disabled', true) : $('#btn_submit').prop('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit').off().on('click',function() {
|
||||
|
|
|
@ -26,7 +26,6 @@ window.loggingStreamActive = false;
|
|||
window.loggingHandlerInstalled = false;
|
||||
window.watchdog = 0;
|
||||
window.debugMessagesActive = true;
|
||||
window.wSess = [];
|
||||
window.currentHyperionInstance = 0;
|
||||
window.currentHyperionInstanceName = "?";
|
||||
window.comps = [];
|
||||
|
@ -136,7 +135,11 @@ function initWebSocket()
|
|||
// skip tan -1 error handling
|
||||
if(tan != -1){
|
||||
var error = response.hasOwnProperty("error")? response.error : "unknown";
|
||||
$(window.hyperion).trigger({type:"error",reason:error});
|
||||
if (error == "Service Unavailable") {
|
||||
window.location.reload();
|
||||
} else {
|
||||
$(window.hyperion).trigger({type:"error",reason:error});
|
||||
}
|
||||
console.log("[window.websocket::onmessage] ",error)
|
||||
}
|
||||
}
|
||||
|
@ -307,7 +310,7 @@ function requestInstanceSwitch(inst)
|
|||
|
||||
function requestServerInfo()
|
||||
{
|
||||
sendToHyperion("serverinfo","",'"subscribe":["components-update","sessions-update","priorities-update", "imageToLedMapping-update", "adjustment-update", "videomode-update", "effects-update", "settings-update", "instance-update"]');
|
||||
sendToHyperion("serverinfo","",'"subscribe":["components-update", "priorities-update", "imageToLedMapping-update", "adjustment-update", "videomode-update", "effects-update", "settings-update", "instance-update"]');
|
||||
}
|
||||
|
||||
function requestSysInfo()
|
||||
|
@ -315,6 +318,21 @@ function requestSysInfo()
|
|||
sendToHyperion("sysinfo");
|
||||
}
|
||||
|
||||
function requestSystemSuspend()
|
||||
{
|
||||
sendToHyperion("system","suspend");
|
||||
}
|
||||
|
||||
function requestSystemResume()
|
||||
{
|
||||
sendToHyperion("system","resume");
|
||||
}
|
||||
|
||||
function requestSystemRestart()
|
||||
{
|
||||
sendToHyperion("system","restart");
|
||||
}
|
||||
|
||||
function requestServerConfigSchema()
|
||||
{
|
||||
sendToHyperion("config","getschema");
|
||||
|
@ -359,21 +377,25 @@ function requestPriorityClear(prio)
|
|||
if(typeof prio !== 'number')
|
||||
prio = window.webPrio;
|
||||
|
||||
$(window.hyperion).trigger({type:"stopBrowerScreenCapture"});
|
||||
sendToHyperion("clear", "", '"priority":'+prio+'');
|
||||
}
|
||||
|
||||
function requestClearAll()
|
||||
{
|
||||
$(window.hyperion).trigger({type:"stopBrowerScreenCapture"});
|
||||
requestPriorityClear(-1)
|
||||
}
|
||||
|
||||
function requestPlayEffect(effectName, duration)
|
||||
{
|
||||
$(window.hyperion).trigger({type:"stopBrowerScreenCapture"});
|
||||
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'"},"priority":'+window.webPrio+',"duration":'+validateDuration(duration)+',"origin":"'+window.webOrigin+'"');
|
||||
}
|
||||
|
||||
function requestSetColor(r,g,b,duration)
|
||||
{
|
||||
$(window.hyperion).trigger({type:"stopBrowerScreenCapture"});
|
||||
sendToHyperion("color", "", '"color":['+r+','+g+','+b+'], "priority":'+window.webPrio+',"duration":'+validateDuration(duration)+',"origin":"'+window.webOrigin+'"');
|
||||
}
|
||||
|
||||
|
@ -410,6 +432,10 @@ function requestWriteConfig(config, full)
|
|||
sendToHyperion("config","setconfig", '"config":'+JSON.stringify(window.serverConfig));
|
||||
}
|
||||
|
||||
function requestRestoreConfig(config) {
|
||||
sendToHyperion("config", "restoreconfig", '"config":' + JSON.stringify(config));
|
||||
}
|
||||
|
||||
function requestWriteEffect(effectName,effectPy,effectArgs,data)
|
||||
{
|
||||
var cutArgs = effectArgs.slice(1, -1);
|
||||
|
@ -477,9 +503,21 @@ function requestLedDeviceIdentification(type, params)
|
|||
return sendAsyncToHyperion("leddevice", "identify", data, Math.floor(Math.random() * 1000));
|
||||
}
|
||||
|
||||
async function requestLedDeviceAddAuthorization(type, params) {
|
||||
let data = { ledDeviceType: type, params: params };
|
||||
|
||||
return sendAsyncToHyperion("leddevice", "addAuthorization", data, Math.floor(Math.random() * 1000));
|
||||
}
|
||||
|
||||
async function requestInputSourcesDiscovery(type, params) {
|
||||
let data = { sourceType: type, params: params };
|
||||
|
||||
return sendAsyncToHyperion("inputsource", "discover", data, Math.floor(Math.random() * 1000));
|
||||
}
|
||||
|
||||
async function requestServiceDiscovery(type, params) {
|
||||
let data = { serviceType: type, params: params };
|
||||
|
||||
return sendAsyncToHyperion("service", "discover", data, Math.floor(Math.random() * 1000));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
var storedLang;
|
||||
var availLang = ['cs', 'de', 'en', 'es', 'fr', 'it', 'nl', 'nb', 'pl', 'pt', 'ro', 'sv', 'vi', 'ru', 'tr', 'zh-CN'];
|
||||
var availLangText = ['Čeština', 'Deutsch', 'English', 'Español', 'Français', 'Italiano', 'Nederlands', 'Norsk Bokmål', 'Polski', 'Português', 'Română', 'Svenska', 'Tiếng Việt', 'русский', 'Türkçe', '汉语'];
|
||||
var availLang = ['ca', 'cs', 'da', 'de', 'el', 'en', 'es', 'fr', 'hu', 'it', 'ja', 'nl', 'nb', 'pl', 'pt', 'ro', 'sv', 'vi', 'ru', 'tr', 'zh-CN'];
|
||||
var availLangText = ['Català', 'Čeština', 'Dansk', 'Deutsch', 'Ελληνική', 'English', 'Español', 'Français', 'Magyar', 'Italiano', '日本語', 'Nederlands', 'Norsk Bokmål', 'Polski', 'Português', 'Română', 'Svenska', 'Tiếng Việt', 'русский', 'Türkçe', '汉语'];
|
||||
|
||||
//$.i18n.debug = true;
|
||||
|
||||
|
|
|
@ -6,8 +6,9 @@ $(document).ready(function () {
|
|||
var leds;
|
||||
var grabberConfig;
|
||||
var lC = false;
|
||||
var imageCanvasNodeCtx;
|
||||
var ledsCanvasNodeCtx;
|
||||
var imageCanvasNodeCtx = document.getElementById("image_preview_canv").getContext("2d");
|
||||
var ledsCanvasNodeCtx = document.getElementById("leds_preview_canv").getContext("2d");
|
||||
var sigDetectAreaCanvasNodeCtx = document.getElementById("grab_preview_canv").getContext("2d");
|
||||
var canvas_height;
|
||||
var canvas_width;
|
||||
var twoDPaths = [];
|
||||
|
@ -93,9 +94,9 @@ $(document).ready(function () {
|
|||
uiLibrary: 'bootstrap',
|
||||
resizable: true,
|
||||
modal: false,
|
||||
minWidth: 250,
|
||||
minWidth: 350,
|
||||
width: ledsim_width,
|
||||
minHeight: 350,
|
||||
minHeight: 400,
|
||||
height: ledsim_height,
|
||||
closeOnEscape: true,
|
||||
autoOpen: false,
|
||||
|
@ -167,7 +168,7 @@ $(document).ready(function () {
|
|||
//roundRect(ledsCanvasNodeCtx, led.hmin * canvas_width, led.vmin * canvas_height, (led.hmax-led.hmin) * canvas_width, (led.vmax-led.vmin) * canvas_height, 4, true, colors[idx])
|
||||
//ledsCanvasNodeCtx.fillRect(led.hmin * canvas_width, led.vmin * canvas_height, (led.hmax-led.hmin) * canvas_width, (led.vmax-led.vmin) * canvas_height);
|
||||
|
||||
ledsCanvasNodeCtx.fillStyle = (useColor) ? "rgba(" + colors[cPos] + "," + colors[cPos + 1] + "," + colors[cPos + 2] + ",0.75)" : "hsla(" + (idx * 360 / leds.length) + ",100%,50%,0.75)";
|
||||
ledsCanvasNodeCtx.fillStyle = (useColor) ? "rgba(" + colors[cPos] + "," + colors[cPos + 1] + "," + colors[cPos + 2] + ",1.0)" : "hsla(" + (idx * 360 / leds.length) + ",100%,50%,1.0)";
|
||||
ledsCanvasNodeCtx.fill(twoDPaths[idx]);
|
||||
ledsCanvasNodeCtx.strokeStyle = '#323232';
|
||||
ledsCanvasNodeCtx.stroke(twoDPaths[idx]);
|
||||
|
@ -198,20 +199,14 @@ $(document).ready(function () {
|
|||
canvas_height = $('#ledsim_dialog').outerHeight() - $('#ledsim_text').outerHeight() - $('[data-role=footer]').outerHeight() - $('[data-role=header]').outerHeight() - 40;
|
||||
canvas_width = $('#ledsim_dialog').outerWidth() - 30;
|
||||
|
||||
$('#leds_canvas').html("");
|
||||
var leds_html = '<canvas id="image_preview_canv" width="' + canvas_width + '" height="' + canvas_height + '" style="position: absolute; left: 0; top: 0; z-index: 99998;"></canvas>';
|
||||
leds_html += '<canvas id="leds_preview_canv" width="' + canvas_width + '" height="' + canvas_height + '" style="position: absolute; left: 0; top: 0; z-index: 99999;"></canvas>';
|
||||
leds_html += '<canvas id="grab_preview_canv" width="' + canvas_width + '" height="' + canvas_height + '" style="position: absolute; left: 0; top: 0; z-index: 99999;"></canvas>';
|
||||
$("[id$=_preview_canv]").prop({"width": canvas_width, "height": canvas_height});
|
||||
$("body").get(0).style.setProperty("--width-var", canvas_width + "px");
|
||||
$("body").get(0).style.setProperty("--height-var", canvas_height + "px");
|
||||
|
||||
$('#leds_canvas').html(leds_html);
|
||||
|
||||
imageCanvasNodeCtx = document.getElementById("image_preview_canv").getContext("2d");
|
||||
ledsCanvasNodeCtx = document.getElementById("leds_preview_canv").getContext("2d");
|
||||
sigDetectAreaCanvasNodeCtx = document.getElementById("grab_preview_canv").getContext("2d");
|
||||
create2dPaths();
|
||||
printLedsToCanvas();
|
||||
$("body").get(0).style.setProperty("--background-var", "none");
|
||||
resetImage();
|
||||
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
@ -227,6 +222,7 @@ $(document).ready(function () {
|
|||
if (window.ledStreamActive) {
|
||||
requestLedColorsStop();
|
||||
ledsCanvasNodeCtx.clear();
|
||||
$("body").get(0).style.setProperty("--background-var", "none");
|
||||
} else {
|
||||
requestLedColorsStart();
|
||||
}
|
||||
|
@ -262,9 +258,11 @@ $(document).ready(function () {
|
|||
$(window.hyperion).on("cmd-ledcolors-ledstream-update", function (event) {
|
||||
if (!modalOpened) {
|
||||
requestLedColorsStop();
|
||||
$("body").get(0).style.setProperty("--background-var", "none");
|
||||
}
|
||||
else {
|
||||
printLedsToCanvas(event.response.result.leds)
|
||||
$("body").get(0).style.setProperty("--background-var", "url(" + ($('#leds_preview_canv')[0]).toDataURL("image/jpg") + ") no-repeat top left");
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -332,7 +330,13 @@ $(document).ready(function () {
|
|||
|
||||
imageCanvasNodeCtx.fillStyle = "#1c1c1c"; //90% gray
|
||||
imageCanvasNodeCtx.fillRect(0, 0, canvas_width, canvas_height);
|
||||
imageCanvasNodeCtx.drawImage(image, canvas_width / 2 - image.width / 2, canvas_height / 2 - image.height / 2, image.width, image.height);
|
||||
var destImageWidth = image.width;
|
||||
var destImageHeight = image.height;
|
||||
if (destImageWidth + 40 >= canvas_width) {
|
||||
destImageWidth = image.width * (canvas_width - 40) / image.width;
|
||||
destImageHeight = image.height * (canvas_width - 40) / image.width;
|
||||
}
|
||||
imageCanvasNodeCtx.drawImage(image, 0, 0, image.width - 31, image.height, canvas_width / 2 - destImageWidth / 2, canvas_height / 2 - destImageHeight / 2, destImageWidth, destImageHeight);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
gj.draggable={plugins:{}},gj.draggable.config={base:{handle:void 0,vertical:!0,horizontal:!0,containment:void 0}},gj.draggable.methods={init:function(a){var b,c,d=this;return gj.widget.prototype.init.call(this,a,"draggable"),c=this.data(),d.attr("data-draggable","true"),b=gj.draggable.methods.getHandleElement(d),b.on("touchstart mousedown",function(a){var e=gj.core.position(d[0]);d[0].style.top=e.top+"px",d[0].style.left=e.left+"px",d[0].style.position="fixed",d.attr("draggable-dragging",!0),d.removeAttr("draggable-x").removeAttr("draggable-y"),gj.documentManager.subscribeForEvent("touchmove",d.data("guid"),gj.draggable.methods.createMoveHandler(d,b,c)),gj.documentManager.subscribeForEvent("mousemove",d.data("guid"),gj.draggable.methods.createMoveHandler(d,b,c))}),gj.documentManager.subscribeForEvent("mouseup",d.data("guid"),gj.draggable.methods.createUpHandler(d)),gj.documentManager.subscribeForEvent("touchend",d.data("guid"),gj.draggable.methods.createUpHandler(d)),gj.documentManager.subscribeForEvent("touchcancel",d.data("guid"),gj.draggable.methods.createUpHandler(d)),d},getHandleElement:function(a){var b=a.data("handle");return b&&b.length?b:a},createUpHandler:function(a){return function(b){"true"===a.attr("draggable-dragging")&&(a.attr("draggable-dragging",!1),gj.documentManager.unsubscribeForEvent("mousemove",a.data("guid")),gj.documentManager.unsubscribeForEvent("touchmove",a.data("guid")),gj.draggable.events.stop(a,{x:a.mouseX(b),y:a.mouseY(b)}))}},createMoveHandler:function(a,b,c){return function(b){var d,e,f,g,h,i;"true"===a.attr("draggable-dragging")&&(d=Math.round(a.mouseX(b)),e=Math.round(a.mouseY(b)),h=a.attr("draggable-x"),i=a.attr("draggable-y"),h&&i?(f=c.horizontal?d-parseInt(h,10):0,g=c.vertical?e-parseInt(i,10):0,gj.draggable.methods.move(a[0],c,f,g,d,e)):gj.draggable.events.start(a,d,e),a.attr("draggable-x",d),a.attr("draggable-y",e))}},move:function(a,b,c,d,e,f){var g,h,i,j=gj.core.position(a),k=j.top+d,l=j.left+c;b.containment&&(g=gj.core.position(b.containment),h=g.top+gj.core.height(b.containment)-gj.core.height(a),i=g.left+gj.core.width(b.containment)-gj.core.width(a),k>g.top&&k<h?(g.top>=f||g.bottom<=f)&&(k=j.top):k=k<=g.top?g.top+1:h-1,l>g.left&&l<i?(g.left>=e||g.right<=e)&&(l=j.left):l=l<=g.left?g.left+1:i-1),!1!==gj.draggable.events.drag($(a),l,k,e,f)&&(a.style.top=k+"px",a.style.left=l+"px")},destroy:function(a){return"true"===a.attr("data-draggable")&&(gj.documentManager.unsubscribeForEvent("mouseup",a.data("guid")),a.removeData(),a.removeAttr("data-guid").removeAttr("data-type").removeAttr("data-draggable"),a.removeAttr("draggable-x").removeAttr("draggable-y").removeAttr("draggable-dragging"),a[0].style.top="",a[0].style.left="",a[0].style.position="",a.off("drag").off("start").off("stop"),gj.draggable.methods.getHandleElement(a).off("mousedown")),a}},gj.draggable.events={drag:function(a,b,c,d,e){return a.triggerHandler("drag",[{left:b,top:c},{x:d,y:e}])},start:function(a,b,c){a.triggerHandler("start",[{x:b,y:c}])},stop:function(a,b){a.triggerHandler("stop",[b])}},gj.draggable.widget=function(a,b){var c=this,d=gj.draggable.methods;return a.destroy||(c.destroy=function(){return d.destroy(this)}),$.extend(a,c),"true"!==a.attr("data-draggable")&&d.init.call(a,b),a},gj.draggable.widget.prototype=new gj.widget,gj.draggable.widget.constructor=gj.draggable.widget,function(a){a.fn.draggable=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.draggable.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.draggable.widget(this,a)}}}(jQuery);
|
|
@ -226,7 +226,7 @@ function pluralRuleParser(rule, number) {
|
|||
return result;
|
||||
}
|
||||
|
||||
result = parseFloat(number, 10);
|
||||
result = parseFloat(number, 10); //lgtm [js/superfluous-trailing-arguments]
|
||||
debug(' -- passed n ', result);
|
||||
|
||||
return result;
|
||||
|
|
|
@ -384,7 +384,7 @@
|
|||
|
||||
// Check if the restore to Latin number flag is set:
|
||||
if ( integer ) {
|
||||
if ( parseFloat( num, 10 ) === num ) {
|
||||
if ( parseFloat( num, 10 ) === num ) { //lgtm [js/superfluous-trailing-arguments]
|
||||
return num;
|
||||
}
|
||||
|
||||
|
@ -405,7 +405,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
return integer ? parseFloat( convertedNumber, 10 ) : convertedNumber;
|
||||
return integer ? parseFloat( convertedNumber, 10 ) : convertedNumber; //lgtm [js/superfluous-trailing-arguments]
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,859 @@
|
|||
/*!
|
||||
* jQuery Migrate - v3.3.2 - 2020-11-17T23:22Z
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
*/
|
||||
( function( factory ) {
|
||||
"use strict";
|
||||
|
||||
if ( typeof define === "function" && define.amd ) {
|
||||
|
||||
// AMD. Register as an anonymous module.
|
||||
define( [ "jquery" ], function( jQuery ) {
|
||||
return factory( jQuery, window );
|
||||
} );
|
||||
} else if ( typeof module === "object" && module.exports ) {
|
||||
|
||||
// Node/CommonJS
|
||||
// eslint-disable-next-line no-undef
|
||||
module.exports = factory( require( "jquery" ), window );
|
||||
} else {
|
||||
|
||||
// Browser globals
|
||||
factory( jQuery, window );
|
||||
}
|
||||
} )( function( jQuery, window ) {
|
||||
"use strict";
|
||||
|
||||
jQuery.migrateVersion = "3.3.2";
|
||||
|
||||
// Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2
|
||||
function compareVersions( v1, v2 ) {
|
||||
var i,
|
||||
rVersionParts = /^(\d+)\.(\d+)\.(\d+)/,
|
||||
v1p = rVersionParts.exec( v1 ) || [ ],
|
||||
v2p = rVersionParts.exec( v2 ) || [ ];
|
||||
|
||||
for ( i = 1; i <= 3; i++ ) {
|
||||
if ( +v1p[ i ] > +v2p[ i ] ) {
|
||||
return 1;
|
||||
}
|
||||
if ( +v1p[ i ] < +v2p[ i ] ) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function jQueryVersionSince( version ) {
|
||||
return compareVersions( jQuery.fn.jquery, version ) >= 0;
|
||||
}
|
||||
|
||||
( function() {
|
||||
|
||||
// Support: IE9 only
|
||||
// IE9 only creates console object when dev tools are first opened
|
||||
// IE9 console is a host object, callable but doesn't have .apply()
|
||||
if ( !window.console || !window.console.log ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Need jQuery 3.0.0+ and no older Migrate loaded
|
||||
if ( !jQuery || !jQueryVersionSince( "3.0.0" ) ) {
|
||||
window.console.log( "JQMIGRATE: jQuery 3.0.0+ REQUIRED" );
|
||||
}
|
||||
if ( jQuery.migrateWarnings ) {
|
||||
window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" );
|
||||
}
|
||||
|
||||
// Show a message on the console so devs know we're active
|
||||
window.console.log( "JQMIGRATE: Migrate is installed" +
|
||||
( jQuery.migrateMute ? "" : " with logging active" ) +
|
||||
", version " + jQuery.migrateVersion );
|
||||
|
||||
} )();
|
||||
|
||||
var warnedAbout = {};
|
||||
|
||||
// By default each warning is only reported once.
|
||||
jQuery.migrateDeduplicateWarnings = true;
|
||||
|
||||
// List of warnings already given; public read only
|
||||
jQuery.migrateWarnings = [];
|
||||
|
||||
// Set to false to disable traces that appear with warnings
|
||||
if ( jQuery.migrateTrace === undefined ) {
|
||||
jQuery.migrateTrace = true;
|
||||
}
|
||||
|
||||
// Forget any warnings we've already given; public
|
||||
jQuery.migrateReset = function() {
|
||||
warnedAbout = {};
|
||||
jQuery.migrateWarnings.length = 0;
|
||||
};
|
||||
|
||||
function migrateWarn( msg ) {
|
||||
var console = window.console;
|
||||
if ( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) {
|
||||
warnedAbout[ msg ] = true;
|
||||
jQuery.migrateWarnings.push( msg );
|
||||
if ( console && console.warn && !jQuery.migrateMute ) {
|
||||
console.warn( "JQMIGRATE: " + msg );
|
||||
if ( jQuery.migrateTrace && console.trace ) {
|
||||
console.trace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function migrateWarnProp( obj, prop, value, msg ) {
|
||||
Object.defineProperty( obj, prop, {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
get: function() {
|
||||
migrateWarn( msg );
|
||||
return value;
|
||||
},
|
||||
set: function( newValue ) {
|
||||
migrateWarn( msg );
|
||||
value = newValue;
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
function migrateWarnFunc( obj, prop, newFunc, msg ) {
|
||||
obj[ prop ] = function() {
|
||||
migrateWarn( msg );
|
||||
return newFunc.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
if ( window.document.compatMode === "BackCompat" ) {
|
||||
|
||||
// JQuery has never supported or tested Quirks Mode
|
||||
migrateWarn( "jQuery is not compatible with Quirks Mode" );
|
||||
}
|
||||
|
||||
var findProp,
|
||||
class2type = {},
|
||||
oldInit = jQuery.fn.init,
|
||||
oldFind = jQuery.find,
|
||||
|
||||
rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
|
||||
rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,
|
||||
|
||||
// Support: Android <=4.0 only
|
||||
// Make sure we trim BOM and NBSP
|
||||
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
|
||||
|
||||
jQuery.fn.init = function( arg1 ) {
|
||||
var args = Array.prototype.slice.call( arguments );
|
||||
|
||||
if ( typeof arg1 === "string" && arg1 === "#" ) {
|
||||
|
||||
// JQuery( "#" ) is a bogus ID selector, but it returned an empty set before jQuery 3.0
|
||||
migrateWarn( "jQuery( '#' ) is not a valid selector" );
|
||||
args[ 0 ] = [];
|
||||
}
|
||||
|
||||
return oldInit.apply( this, args );
|
||||
};
|
||||
jQuery.fn.init.prototype = jQuery.fn;
|
||||
|
||||
jQuery.find = function( selector ) {
|
||||
var args = Array.prototype.slice.call( arguments );
|
||||
|
||||
// Support: PhantomJS 1.x
|
||||
// String#match fails to match when used with a //g RegExp, only on some strings
|
||||
if ( typeof selector === "string" && rattrHashTest.test( selector ) ) {
|
||||
|
||||
// The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0
|
||||
// First see if qS thinks it's a valid selector, if so avoid a false positive
|
||||
try {
|
||||
window.document.querySelector( selector );
|
||||
} catch ( err1 ) {
|
||||
|
||||
// Didn't *look* valid to qSA, warn and try quoting what we think is the value
|
||||
selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {
|
||||
return "[" + attr + op + "\"" + value + "\"]";
|
||||
} );
|
||||
|
||||
// If the regexp *may* have created an invalid selector, don't update it
|
||||
// Note that there may be false alarms if selector uses jQuery extensions
|
||||
try {
|
||||
window.document.querySelector( selector );
|
||||
migrateWarn( "Attribute selector with '#' must be quoted: " + args[ 0 ] );
|
||||
args[ 0 ] = selector;
|
||||
} catch ( err2 ) {
|
||||
migrateWarn( "Attribute selector with '#' was not fixed: " + args[ 0 ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return oldFind.apply( this, args );
|
||||
};
|
||||
|
||||
// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)
|
||||
for ( findProp in oldFind ) {
|
||||
if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {
|
||||
jQuery.find[ findProp ] = oldFind[ findProp ];
|
||||
}
|
||||
}
|
||||
|
||||
// The number of elements contained in the matched element set
|
||||
migrateWarnFunc( jQuery.fn, "size", function() {
|
||||
return this.length;
|
||||
},
|
||||
"jQuery.fn.size() is deprecated and removed; use the .length property" );
|
||||
|
||||
migrateWarnFunc( jQuery, "parseJSON", function() {
|
||||
return JSON.parse.apply( null, arguments );
|
||||
},
|
||||
"jQuery.parseJSON is deprecated; use JSON.parse" );
|
||||
|
||||
migrateWarnFunc( jQuery, "holdReady", jQuery.holdReady,
|
||||
"jQuery.holdReady is deprecated" );
|
||||
|
||||
migrateWarnFunc( jQuery, "unique", jQuery.uniqueSort,
|
||||
"jQuery.unique is deprecated; use jQuery.uniqueSort" );
|
||||
|
||||
// Now jQuery.expr.pseudos is the standard incantation
|
||||
migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos,
|
||||
"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" );
|
||||
migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos,
|
||||
"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" );
|
||||
|
||||
// Prior to jQuery 3.1.1 there were internal refs so we don't warn there
|
||||
if ( jQueryVersionSince( "3.1.1" ) ) {
|
||||
migrateWarnFunc( jQuery, "trim", function( text ) {
|
||||
return text == null ?
|
||||
"" :
|
||||
( text + "" ).replace( rtrim, "" );
|
||||
},
|
||||
"jQuery.trim is deprecated; use String.prototype.trim" );
|
||||
}
|
||||
|
||||
// Prior to jQuery 3.2 there were internal refs so we don't warn there
|
||||
if ( jQueryVersionSince( "3.2.0" ) ) {
|
||||
migrateWarnFunc( jQuery, "nodeName", function( elem, name ) {
|
||||
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
||||
},
|
||||
"jQuery.nodeName is deprecated" );
|
||||
|
||||
migrateWarnFunc( jQuery, "isArray", Array.isArray,
|
||||
"jQuery.isArray is deprecated; use Array.isArray"
|
||||
);
|
||||
}
|
||||
|
||||
if ( jQueryVersionSince( "3.3.0" ) ) {
|
||||
|
||||
migrateWarnFunc( jQuery, "isNumeric", function( obj ) {
|
||||
|
||||
// As of jQuery 3.0, isNumeric is limited to
|
||||
// strings and numbers (primitives or objects)
|
||||
// that can be coerced to finite numbers (gh-2662)
|
||||
var type = typeof obj;
|
||||
return ( type === "number" || type === "string" ) &&
|
||||
|
||||
// parseFloat NaNs numeric-cast false positives ("")
|
||||
// ...but misinterprets leading-number strings, e.g. hex literals ("0x...")
|
||||
// subtraction forces infinities to NaN
|
||||
!isNaN( obj - parseFloat( obj ) );
|
||||
},
|
||||
"jQuery.isNumeric() is deprecated"
|
||||
);
|
||||
|
||||
// Populate the class2type map
|
||||
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".
|
||||
split( " " ),
|
||||
function( _, name ) {
|
||||
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
||||
} );
|
||||
|
||||
migrateWarnFunc( jQuery, "type", function( obj ) {
|
||||
if ( obj == null ) {
|
||||
return obj + "";
|
||||
}
|
||||
|
||||
// Support: Android <=2.3 only (functionish RegExp)
|
||||
return typeof obj === "object" || typeof obj === "function" ?
|
||||
class2type[ Object.prototype.toString.call( obj ) ] || "object" :
|
||||
typeof obj;
|
||||
},
|
||||
"jQuery.type is deprecated" );
|
||||
|
||||
migrateWarnFunc( jQuery, "isFunction",
|
||||
function( obj ) {
|
||||
return typeof obj === "function";
|
||||
},
|
||||
"jQuery.isFunction() is deprecated" );
|
||||
|
||||
migrateWarnFunc( jQuery, "isWindow",
|
||||
function( obj ) {
|
||||
return obj != null && obj === obj.window;
|
||||
},
|
||||
"jQuery.isWindow() is deprecated"
|
||||
);
|
||||
}
|
||||
|
||||
// Support jQuery slim which excludes the ajax module
|
||||
if ( jQuery.ajax ) {
|
||||
|
||||
var oldAjax = jQuery.ajax,
|
||||
rjsonp = /(=)\?(?=&|$)|\?\?/;
|
||||
|
||||
jQuery.ajax = function( ) {
|
||||
var jQXHR = oldAjax.apply( this, arguments );
|
||||
|
||||
// Be sure we got a jQXHR (e.g., not sync)
|
||||
if ( jQXHR.promise ) {
|
||||
migrateWarnFunc( jQXHR, "success", jQXHR.done,
|
||||
"jQXHR.success is deprecated and removed" );
|
||||
migrateWarnFunc( jQXHR, "error", jQXHR.fail,
|
||||
"jQXHR.error is deprecated and removed" );
|
||||
migrateWarnFunc( jQXHR, "complete", jQXHR.always,
|
||||
"jQXHR.complete is deprecated and removed" );
|
||||
}
|
||||
|
||||
return jQXHR;
|
||||
};
|
||||
|
||||
// Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion
|
||||
// behavior is gone in jQuery 4.0 and as it has security implications, we don't
|
||||
// want to restore the legacy behavior.
|
||||
if ( !jQueryVersionSince( "4.0.0" ) ) {
|
||||
|
||||
// Register this prefilter before the jQuery one. Otherwise, a promoted
|
||||
// request is transformed into one with the script dataType and we can't
|
||||
// catch it anymore.
|
||||
jQuery.ajaxPrefilter( "+json", function( s ) {
|
||||
|
||||
// Warn if JSON-to-JSONP auto-promotion happens.
|
||||
if ( s.jsonp !== false && ( rjsonp.test( s.url ) ||
|
||||
typeof s.data === "string" &&
|
||||
( s.contentType || "" )
|
||||
.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
|
||||
rjsonp.test( s.data )
|
||||
) ) {
|
||||
migrateWarn( "JSON-to-JSONP auto-promotion is deprecated" );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var oldRemoveAttr = jQuery.fn.removeAttr,
|
||||
oldToggleClass = jQuery.fn.toggleClass,
|
||||
rmatchNonSpace = /\S+/g;
|
||||
|
||||
jQuery.fn.removeAttr = function( name ) {
|
||||
var self = this;
|
||||
|
||||
jQuery.each( name.match( rmatchNonSpace ), function( _i, attr ) {
|
||||
if ( jQuery.expr.match.bool.test( attr ) ) {
|
||||
migrateWarn( "jQuery.fn.removeAttr no longer sets boolean properties: " + attr );
|
||||
self.prop( attr, false );
|
||||
}
|
||||
} );
|
||||
|
||||
return oldRemoveAttr.apply( this, arguments );
|
||||
};
|
||||
|
||||
jQuery.fn.toggleClass = function( state ) {
|
||||
|
||||
// Only deprecating no-args or single boolean arg
|
||||
if ( state !== undefined && typeof state !== "boolean" ) {
|
||||
return oldToggleClass.apply( this, arguments );
|
||||
}
|
||||
|
||||
migrateWarn( "jQuery.fn.toggleClass( boolean ) is deprecated" );
|
||||
|
||||
// Toggle entire class name of each element
|
||||
return this.each( function() {
|
||||
var className = this.getAttribute && this.getAttribute( "class" ) || "";
|
||||
|
||||
if ( className ) {
|
||||
jQuery.data( this, "__className__", className );
|
||||
}
|
||||
|
||||
// If the element has a class name or if we're passed `false`,
|
||||
// then remove the whole classname (if there was one, the above saved it).
|
||||
// Otherwise bring back whatever was previously saved (if anything),
|
||||
// falling back to the empty string if nothing was stored.
|
||||
if ( this.setAttribute ) {
|
||||
this.setAttribute( "class",
|
||||
className || state === false ?
|
||||
"" :
|
||||
jQuery.data( this, "__className__" ) || ""
|
||||
);
|
||||
}
|
||||
} );
|
||||
};
|
||||
|
||||
function camelCase( string ) {
|
||||
return string.replace( /-([a-z])/g, function( _, letter ) {
|
||||
return letter.toUpperCase();
|
||||
} );
|
||||
}
|
||||
|
||||
var oldFnCss,
|
||||
internalSwapCall = false,
|
||||
ralphaStart = /^[a-z]/,
|
||||
|
||||
// The regex visualized:
|
||||
//
|
||||
// /----------\
|
||||
// | | /-------\
|
||||
// | / Top \ | | |
|
||||
// /--- Border ---+-| Right |-+---+- Width -+---\
|
||||
// | | Bottom | |
|
||||
// | \ Left / |
|
||||
// | |
|
||||
// | /----------\ |
|
||||
// | /-------------\ | | |- END
|
||||
// | | | | / Top \ | |
|
||||
// | | / Margin \ | | | Right | | |
|
||||
// |---------+-| |-+---+-| Bottom |-+----|
|
||||
// | \ Padding / \ Left / |
|
||||
// BEGIN -| |
|
||||
// | /---------\ |
|
||||
// | | | |
|
||||
// | | / Min \ | / Width \ |
|
||||
// \--------------+-| |-+---| |---/
|
||||
// \ Max / \ Height /
|
||||
rautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;
|
||||
|
||||
// If this version of jQuery has .swap(), don't false-alarm on internal uses
|
||||
if ( jQuery.swap ) {
|
||||
jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) {
|
||||
var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get;
|
||||
|
||||
if ( oldHook ) {
|
||||
jQuery.cssHooks[ name ].get = function() {
|
||||
var ret;
|
||||
|
||||
internalSwapCall = true;
|
||||
ret = oldHook.apply( this, arguments );
|
||||
internalSwapCall = false;
|
||||
return ret;
|
||||
};
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
jQuery.swap = function( elem, options, callback, args ) {
|
||||
var ret, name,
|
||||
old = {};
|
||||
|
||||
if ( !internalSwapCall ) {
|
||||
migrateWarn( "jQuery.swap() is undocumented and deprecated" );
|
||||
}
|
||||
|
||||
// Remember the old values, and insert the new ones
|
||||
for ( name in options ) {
|
||||
old[ name ] = elem.style[ name ];
|
||||
elem.style[ name ] = options[ name ];
|
||||
}
|
||||
|
||||
ret = callback.apply( elem, args || [] );
|
||||
|
||||
// Revert the old values
|
||||
for ( name in options ) {
|
||||
elem.style[ name ] = old[ name ];
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) {
|
||||
|
||||
jQuery.cssProps = new Proxy( jQuery.cssProps || {}, {
|
||||
set: function() {
|
||||
migrateWarn( "JQMIGRATE: jQuery.cssProps is deprecated" );
|
||||
return Reflect.set.apply( this, arguments );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
// Create a dummy jQuery.cssNumber if missing. It won't be used by jQuery but
|
||||
// it will prevent code adding new keys to it unconditionally from crashing.
|
||||
if ( !jQuery.cssNumber ) {
|
||||
jQuery.cssNumber = {};
|
||||
}
|
||||
|
||||
function isAutoPx( prop ) {
|
||||
|
||||
// The first test is used to ensure that:
|
||||
// 1. The prop starts with a lowercase letter (as we uppercase it for the second regex).
|
||||
// 2. The prop is not empty.
|
||||
return ralphaStart.test( prop ) &&
|
||||
rautoPx.test( prop[ 0 ].toUpperCase() + prop.slice( 1 ) );
|
||||
}
|
||||
|
||||
oldFnCss = jQuery.fn.css;
|
||||
|
||||
jQuery.fn.css = function( name, value ) {
|
||||
var camelName,
|
||||
origThis = this;
|
||||
if ( name && typeof name === "object" && !Array.isArray( name ) ) {
|
||||
jQuery.each( name, function( n, v ) {
|
||||
jQuery.fn.css.call( origThis, n, v );
|
||||
} );
|
||||
return this;
|
||||
}
|
||||
if ( typeof value === "number" ) {
|
||||
camelName = camelCase( name );
|
||||
if ( !isAutoPx( camelName ) && !jQuery.cssNumber[ camelName ] ) {
|
||||
migrateWarn( "Number-typed values are deprecated for jQuery.fn.css( \"" +
|
||||
name + "\", value )" );
|
||||
}
|
||||
}
|
||||
|
||||
return oldFnCss.apply( this, arguments );
|
||||
};
|
||||
|
||||
var oldData = jQuery.data;
|
||||
|
||||
jQuery.data = function( elem, name, value ) {
|
||||
var curData, sameKeys, key;
|
||||
|
||||
// Name can be an object, and each entry in the object is meant to be set as data
|
||||
if ( name && typeof name === "object" && arguments.length === 2 ) {
|
||||
curData = jQuery.hasData( elem ) && oldData.call( this, elem );
|
||||
sameKeys = {};
|
||||
for ( key in name ) {
|
||||
if ( key !== camelCase( key ) ) {
|
||||
migrateWarn( "jQuery.data() always sets/gets camelCased names: " + key );
|
||||
curData[ key ] = name[ key ];
|
||||
} else {
|
||||
sameKeys[ key ] = name[ key ];
|
||||
}
|
||||
}
|
||||
|
||||
oldData.call( this, elem, sameKeys );
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
// If the name is transformed, look for the un-transformed name in the data object
|
||||
if ( name && typeof name === "string" && name !== camelCase( name ) ) {
|
||||
curData = jQuery.hasData( elem ) && oldData.call( this, elem );
|
||||
if ( curData && name in curData ) {
|
||||
migrateWarn( "jQuery.data() always sets/gets camelCased names: " + name );
|
||||
if ( arguments.length > 2 ) {
|
||||
curData[ name ] = value;
|
||||
}
|
||||
return curData[ name ];
|
||||
}
|
||||
}
|
||||
|
||||
return oldData.apply( this, arguments );
|
||||
};
|
||||
|
||||
// Support jQuery slim which excludes the effects module
|
||||
if ( jQuery.fx ) {
|
||||
|
||||
var intervalValue, intervalMsg,
|
||||
oldTweenRun = jQuery.Tween.prototype.run,
|
||||
linearEasing = function( pct ) {
|
||||
return pct;
|
||||
};
|
||||
|
||||
jQuery.Tween.prototype.run = function( ) {
|
||||
if ( jQuery.easing[ this.easing ].length > 1 ) {
|
||||
migrateWarn(
|
||||
"'jQuery.easing." + this.easing.toString() + "' should use only one argument"
|
||||
);
|
||||
|
||||
jQuery.easing[ this.easing ] = linearEasing;
|
||||
}
|
||||
|
||||
oldTweenRun.apply( this, arguments );
|
||||
};
|
||||
|
||||
intervalValue = jQuery.fx.interval || 13;
|
||||
intervalMsg = "jQuery.fx.interval is deprecated";
|
||||
|
||||
// Support: IE9, Android <=4.4
|
||||
// Avoid false positives on browsers that lack rAF
|
||||
// Don't warn if document is hidden, jQuery uses setTimeout (#292)
|
||||
if ( window.requestAnimationFrame ) {
|
||||
Object.defineProperty( jQuery.fx, "interval", {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
get: function() {
|
||||
if ( !window.document.hidden ) {
|
||||
migrateWarn( intervalMsg );
|
||||
}
|
||||
return intervalValue;
|
||||
},
|
||||
set: function( newValue ) {
|
||||
migrateWarn( intervalMsg );
|
||||
intervalValue = newValue;
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var oldLoad = jQuery.fn.load,
|
||||
oldEventAdd = jQuery.event.add,
|
||||
originalFix = jQuery.event.fix;
|
||||
|
||||
jQuery.event.props = [];
|
||||
jQuery.event.fixHooks = {};
|
||||
|
||||
migrateWarnProp( jQuery.event.props, "concat", jQuery.event.props.concat,
|
||||
"jQuery.event.props.concat() is deprecated and removed" );
|
||||
|
||||
jQuery.event.fix = function( originalEvent ) {
|
||||
var event,
|
||||
type = originalEvent.type,
|
||||
fixHook = this.fixHooks[ type ],
|
||||
props = jQuery.event.props;
|
||||
|
||||
if ( props.length ) {
|
||||
migrateWarn( "jQuery.event.props are deprecated and removed: " + props.join() );
|
||||
while ( props.length ) {
|
||||
jQuery.event.addProp( props.pop() );
|
||||
}
|
||||
}
|
||||
|
||||
if ( fixHook && !fixHook._migrated_ ) {
|
||||
fixHook._migrated_ = true;
|
||||
migrateWarn( "jQuery.event.fixHooks are deprecated and removed: " + type );
|
||||
if ( ( props = fixHook.props ) && props.length ) {
|
||||
while ( props.length ) {
|
||||
jQuery.event.addProp( props.pop() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
event = originalFix.call( this, originalEvent );
|
||||
|
||||
return fixHook && fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
|
||||
};
|
||||
|
||||
jQuery.event.add = function( elem, types ) {
|
||||
|
||||
// This misses the multiple-types case but that seems awfully rare
|
||||
if ( elem === window && types === "load" && window.document.readyState === "complete" ) {
|
||||
migrateWarn( "jQuery(window).on('load'...) called after load event occurred" );
|
||||
}
|
||||
return oldEventAdd.apply( this, arguments );
|
||||
};
|
||||
|
||||
jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
|
||||
|
||||
jQuery.fn[ name ] = function() {
|
||||
var args = Array.prototype.slice.call( arguments, 0 );
|
||||
|
||||
// If this is an ajax load() the first arg should be the string URL;
|
||||
// technically this could also be the "Anything" arg of the event .load()
|
||||
// which just goes to show why this dumb signature has been deprecated!
|
||||
// jQuery custom builds that exclude the Ajax module justifiably die here.
|
||||
if ( name === "load" && typeof args[ 0 ] === "string" ) {
|
||||
return oldLoad.apply( this, args );
|
||||
}
|
||||
|
||||
migrateWarn( "jQuery.fn." + name + "() is deprecated" );
|
||||
|
||||
args.splice( 0, 0, name );
|
||||
if ( arguments.length ) {
|
||||
return this.on.apply( this, args );
|
||||
}
|
||||
|
||||
// Use .triggerHandler here because:
|
||||
// - load and unload events don't need to bubble, only applied to window or image
|
||||
// - error event should not bubble to window, although it does pre-1.7
|
||||
// See http://bugs.jquery.com/ticket/11820
|
||||
this.triggerHandler.apply( this, args );
|
||||
return this;
|
||||
};
|
||||
|
||||
} );
|
||||
|
||||
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
|
||||
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
||||
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
|
||||
function( _i, name ) {
|
||||
|
||||
// Handle event binding
|
||||
jQuery.fn[ name ] = function( data, fn ) {
|
||||
migrateWarn( "jQuery.fn." + name + "() event shorthand is deprecated" );
|
||||
return arguments.length > 0 ?
|
||||
this.on( name, null, data, fn ) :
|
||||
this.trigger( name );
|
||||
};
|
||||
} );
|
||||
|
||||
// Trigger "ready" event only once, on document ready
|
||||
jQuery( function() {
|
||||
jQuery( window.document ).triggerHandler( "ready" );
|
||||
} );
|
||||
|
||||
jQuery.event.special.ready = {
|
||||
setup: function() {
|
||||
if ( this === window.document ) {
|
||||
migrateWarn( "'ready' event is deprecated" );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.fn.extend( {
|
||||
|
||||
bind: function( types, data, fn ) {
|
||||
migrateWarn( "jQuery.fn.bind() is deprecated" );
|
||||
return this.on( types, null, data, fn );
|
||||
},
|
||||
unbind: function( types, fn ) {
|
||||
migrateWarn( "jQuery.fn.unbind() is deprecated" );
|
||||
return this.off( types, null, fn );
|
||||
},
|
||||
delegate: function( selector, types, data, fn ) {
|
||||
migrateWarn( "jQuery.fn.delegate() is deprecated" );
|
||||
return this.on( types, selector, data, fn );
|
||||
},
|
||||
undelegate: function( selector, types, fn ) {
|
||||
migrateWarn( "jQuery.fn.undelegate() is deprecated" );
|
||||
return arguments.length === 1 ?
|
||||
this.off( selector, "**" ) :
|
||||
this.off( types, selector || "**", fn );
|
||||
},
|
||||
hover: function( fnOver, fnOut ) {
|
||||
migrateWarn( "jQuery.fn.hover() is deprecated" );
|
||||
return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver );
|
||||
}
|
||||
} );
|
||||
|
||||
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
|
||||
origHtmlPrefilter = jQuery.htmlPrefilter,
|
||||
makeMarkup = function( html ) {
|
||||
var doc = window.document.implementation.createHTMLDocument( "" );
|
||||
doc.body.innerHTML = html;
|
||||
return doc.body && doc.body.innerHTML;
|
||||
},
|
||||
warnIfChanged = function( html ) {
|
||||
var changed = html.replace( rxhtmlTag, "<$1></$2>" );
|
||||
if ( changed !== html && makeMarkup( html ) !== makeMarkup( changed ) ) {
|
||||
migrateWarn( "HTML tags must be properly nested and closed: " + html );
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() {
|
||||
jQuery.htmlPrefilter = function( html ) {
|
||||
warnIfChanged( html );
|
||||
return html.replace( rxhtmlTag, "<$1></$2>" );
|
||||
};
|
||||
};
|
||||
|
||||
jQuery.htmlPrefilter = function( html ) {
|
||||
warnIfChanged( html );
|
||||
return origHtmlPrefilter( html );
|
||||
};
|
||||
|
||||
var oldOffset = jQuery.fn.offset;
|
||||
|
||||
jQuery.fn.offset = function() {
|
||||
var elem = this[ 0 ];
|
||||
|
||||
if ( elem && ( !elem.nodeType || !elem.getBoundingClientRect ) ) {
|
||||
migrateWarn( "jQuery.fn.offset() requires a valid DOM element" );
|
||||
return arguments.length ? this : undefined;
|
||||
}
|
||||
|
||||
return oldOffset.apply( this, arguments );
|
||||
};
|
||||
|
||||
// Support jQuery slim which excludes the ajax module
|
||||
// The jQuery.param patch is about respecting `jQuery.ajaxSettings.traditional`
|
||||
// so it doesn't make sense for the slim build.
|
||||
if ( jQuery.ajax ) {
|
||||
|
||||
var oldParam = jQuery.param;
|
||||
|
||||
jQuery.param = function( data, traditional ) {
|
||||
var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
|
||||
|
||||
if ( traditional === undefined && ajaxTraditional ) {
|
||||
|
||||
migrateWarn( "jQuery.param() no longer uses jQuery.ajaxSettings.traditional" );
|
||||
traditional = ajaxTraditional;
|
||||
}
|
||||
|
||||
return oldParam.call( this, data, traditional );
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
|
||||
|
||||
jQuery.fn.andSelf = function() {
|
||||
migrateWarn( "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" );
|
||||
return oldSelf.apply( this, arguments );
|
||||
};
|
||||
|
||||
// Support jQuery slim which excludes the deferred module in jQuery 4.0+
|
||||
if ( jQuery.Deferred ) {
|
||||
|
||||
var oldDeferred = jQuery.Deferred,
|
||||
tuples = [
|
||||
|
||||
// Action, add listener, callbacks, .then handlers, final state
|
||||
[ "resolve", "done", jQuery.Callbacks( "once memory" ),
|
||||
jQuery.Callbacks( "once memory" ), "resolved" ],
|
||||
[ "reject", "fail", jQuery.Callbacks( "once memory" ),
|
||||
jQuery.Callbacks( "once memory" ), "rejected" ],
|
||||
[ "notify", "progress", jQuery.Callbacks( "memory" ),
|
||||
jQuery.Callbacks( "memory" ) ]
|
||||
];
|
||||
|
||||
jQuery.Deferred = function( func ) {
|
||||
var deferred = oldDeferred(),
|
||||
promise = deferred.promise();
|
||||
|
||||
deferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) {
|
||||
var fns = arguments;
|
||||
|
||||
migrateWarn( "deferred.pipe() is deprecated" );
|
||||
|
||||
return jQuery.Deferred( function( newDefer ) {
|
||||
jQuery.each( tuples, function( i, tuple ) {
|
||||
var fn = typeof fns[ i ] === "function" && fns[ i ];
|
||||
|
||||
// Deferred.done(function() { bind to newDefer or newDefer.resolve })
|
||||
// deferred.fail(function() { bind to newDefer or newDefer.reject })
|
||||
// deferred.progress(function() { bind to newDefer or newDefer.notify })
|
||||
deferred[ tuple[ 1 ] ]( function() {
|
||||
var returned = fn && fn.apply( this, arguments );
|
||||
if ( returned && typeof returned.promise === "function" ) {
|
||||
returned.promise()
|
||||
.done( newDefer.resolve )
|
||||
.fail( newDefer.reject )
|
||||
.progress( newDefer.notify );
|
||||
} else {
|
||||
newDefer[ tuple[ 0 ] + "With" ](
|
||||
this === promise ? newDefer.promise() : this,
|
||||
fn ? [ returned ] : arguments
|
||||
);
|
||||
}
|
||||
} );
|
||||
} );
|
||||
fns = null;
|
||||
} ).promise();
|
||||
|
||||
};
|
||||
|
||||
if ( func ) {
|
||||
func.call( deferred, deferred );
|
||||
}
|
||||
|
||||
return deferred;
|
||||
};
|
||||
|
||||
// Preserve handler of uncaught exceptions in promise chains
|
||||
jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook;
|
||||
|
||||
}
|
||||
|
||||
return jQuery;
|
||||
} );
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue