Merge branch 'master' into Razer_Chroma_Support

This commit is contained in:
LordGrey 2020-12-09 14:32:05 +01:00 committed by GitHub
commit 772945b505
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
250 changed files with 5153 additions and 2857 deletions

20
.devcontainer.json Normal file
View File

@ -0,0 +1,20 @@
{
"name": "Hyperion.ng Linux",
"extensions": [
"twxs.cmake",
"ms-vscode.cpptools",
"ms-vscode.cmake-tools",
"spmeesseman.vscode-taskexplorer",
"yzhang.markdown-all-in-one",
"CoenraadS.bracket-pair-colorizer",
"vscode-icons-team.vscode-icons",
"editorconfig.editorconfig"
],
"settings": {
"editor.formatOnSave": false,
"cmake.environment": {
},
},
"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"
}

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: false

12
.github/issues.yml vendored Normal file
View File

@ -0,0 +1,12 @@
Issues:
opened: |
Hello @$AUTHOR
We make use of an **[ISSUE TEMPLATE](https://github.com/$REPO_FULL_NAME/issues/new/choose)** to capture relevant information to support you best. Unfortunately, **you ignored or deleted** the given sections. Please take care that all information requested is provided.
This issue will be automatically closed by our bot, please do not take it personally. We would like asking you to open a new issue following the **[ISSUE TEMPLATE](https://github.com/$REPO_FULL_NAME/issues/new/choose)**.
Thanks for your continuous support!
Best regards,
Hyperion-Project

View File

@ -124,6 +124,7 @@ jobs:
runs-on: windows-latest
env:
VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC'
QT_VERSION: 5.15.0
steps:
- name: Checkout
uses: actions/checkout@v1
@ -137,25 +138,37 @@ 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
with:
version: '5.15.0'
version: ${{env.QT_VERSION}}
target: 'desktop'
arch: 'win64_msvc2019_64'
cached: ${{ steps.cache-qt-windows.outputs.cache-hit }}
- name: Install Python
uses: actions/setup-python@v1
- name: Cache Chocolatey downloads
uses: actions/cache@v2
with:
python-version: '3.x'
path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
key: ${{ runner.os }}-chocolatey
- name: Install NSIS & copy plugins
- name: "Remove Redistributable"
shell: cmd
run: |
choco install --no-progress nsis -y
copy "cmake\nsis\template\*.dll" "C:\Program Files (x86)\NSIS\Plugins\x86-ansi\"
MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
- name: Install OpenSSL
run: choco install --no-progress openssl -y
- name: Install Python, NSIS, OpenSSL, DirectX SDK
shell: powershell
run: |
choco install --no-progress python nsis openssl directx-sdk -y
- name: Set up x64 build architecture environment
shell: cmd

View File

@ -95,31 +95,44 @@ jobs:
runs-on: windows-latest
env:
VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC'
QT_VERSION: 5.15.0
steps:
- name: Checkout
uses: actions/checkout@v1
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 }}
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: '5.15.0'
version: ${{ env.QT_VERSION }}
target: 'desktop'
arch: 'win64_msvc2019_64'
cached: ${{ steps.cache-qt-windows.outputs.cache-hit }}
- name: Install Python
uses: actions/setup-python@v1
- name: Cache Chocolatey downloads
uses: actions/cache@v2
with:
python-version: '3.x'
path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
key: ${{ runner.os }}-chocolatey
- name: Install NSIS & copy plugins
- name: "Remove Redistributable"
shell: cmd
run: |
choco install --no-progress nsis -y
copy "cmake\nsis\template\*.dll" "C:\Program Files (x86)\NSIS\Plugins\x86-ansi\"
MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
- name: Install OpenSSL
run: choco install --no-progress openssl -y
- name: Install Python, NSIS, OpenSSL, DirectX SDK
shell: powershell
run: |
choco install --no-progress python nsis openssl directx-sdk -y
- name: Set up x64 build architecture environment
shell: cmd
@ -192,14 +205,14 @@ jobs:
# generate environment variables
- name: Generate environment variables from version and tag
run: |
echo ::set-env name=TAG::${GITHUB_REF/refs\/tags\//}
echo ::set-env name=VERSION::$(tr -d '\n' < version)
echo ::set-env name=preRelease::false
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 ::set-env name=preRelease::true
run: echo "preRelease=true" >> $GITHUB_ENV
# Download artifacts from previous build process
- name: Download artifacts

4
.gitignore vendored
View File

@ -25,3 +25,7 @@ libsrc/flatbufserver/hyperion_request_generated.h
# Kdevelop project files
*.kdev*
# Visual Studio 2015/2017/2019 cache/options directory
.vs/
CMakeSettings.json

View File

@ -16,9 +16,7 @@
"ms-vscode.cmake-tools",
"spmeesseman.vscode-taskexplorer",
"yzhang.markdown-all-in-one",
"formulahendry.auto-rename-tag",
"CoenraadS.bracket-pair-colorizer",
"eamodio.gitlens",
"vscode-icons-team.vscode-icons",
"editorconfig.editorconfig"
]

4
.vscode/launch.json vendored
View File

@ -9,7 +9,7 @@
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/bin/hyperiond",
"args": [],
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
@ -28,7 +28,7 @@
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/build/bin/Debug/hyperiond.exe",
"args": [],
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],

4
.vscode/tasks.json vendored
View File

@ -11,7 +11,7 @@
"windows": {
"command": "cmake -G \"Visual Studio 16 2019\" -A x64 -B ${workspaceFolder}/build"
},
"group": "build",
"group": "build"
},
{
"label": "cmake:conf Debug",
@ -21,7 +21,7 @@
"windows": {
"command": "cmake -G \"Visual Studio 16 2019\" -A x64 -B ${workspaceFolder}/build"
},
"group": "build",
"group": "build"
},
{
"label": "build:debug hyperiond",

View File

@ -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.8...HEAD)
## [Unreleased](https://github.com/hyperion-project/hyperion.ng/compare/2.0.0-alpha.9...HEAD)
### Breaking
@ -13,15 +13,54 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
### Fixed
- Also allow an 8-LED configuration when using Karatelight
- Fix Lightpack issue (#1015)
- Fix color calibration for Kodi 18 (Fixes #771)
### Removed
- Replace Multi-Lightpack by multi-instance Lightpack configuration
## [2.0.0-alpha.9](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.9) - 2020-11-18
### Added
- Grabber: DirectX9 support (#1039)
- New blackbar detection mode "Letterbox", that considers only bars at the top and bottom of picture
- LED-Devices: Cololight support (Cololight Plus & Strip) incl. configuration wizard
- LED-Devices: SK9822 support (#1005,#1017)
- UX: New language support: Russian and Chinese (simplified) (#1005)
- UX: Additional details on Hardware/CPU information (#1045)
- UX: Systray icons added - Issue #925 (#1040)
- Read-Only configuration database support
- Hide Window Systray icon on Hyperion exit & Install DirectX Redistributable
- Read-Only configuration database support
### Changed
- boblight: reduce cpu time spent on memcopy and parsing rgb values (#1016)
- Windows Installer/Uninstaller notification when Hyperion is running (#1033)
- Updated Windows Dependencies
- Documentation: Optimized images (#1058)
- UX: Default LED-layout is now one LED only to avoid errors as in #673
- UX: Change links from http to https (#1067)
- Change links from http to https (#1067)
- Cleanup packages.cmake & extend NSIS plugin directory
- Optimize images (#1058)
- Docs: Refreshed EN JSON API documentation
### Fixed
- Color calibration for Kodi 18 (#1044)
- LED-Devices: Karatelight, allow an 8-LED configuration (#1037)
- LED-Devices: Save Hue light state between sessions (#1014)
- LED-Devices: LED's retain last state after clearing a source (#1008)
- LED-Devices: Lightpack issue #1015 (#1049)
- Fix various JSON API issues (#1036)
- Fix issue #909, Have ratio correction first and then scale (#1047)
- Fix display argument in hyperion-qt (#1027)
- Fix Python reset thread state
- AVAHI included in Webserver (#996)
- Fix add libcec to deb/rpm dependency list
- Fix Hyperion configuration is corrected during start-up, if required
- Fix color comparison / Signal detection (#1087)
### Removed
- Replace Multi-Lightpack by multi-instance Lightpack configuration (#1049)
## [2.0.0-alpha.8](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.8) - 2020-09-14
### Added
@ -35,7 +74,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved UDP-Device Error handling (#961)
- NSIS/Systray option to launch Hyperion on Windows start (HKCU) (#887)
- Updated some dependencies (#929, #1003, #1004)
- refactor: Modernize Qt connections (#914)
- refactor: Modernize Qt connections (#914)
- refactor: Resolve some clang warnings (#915)
- refactor: Several random fixes + Experimental playground (#917)
- Use query interface for void returning X requests (#945)

View File

@ -39,9 +39,9 @@ endif()
SET ( DEFAULT_AMLOGIC OFF )
SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_OSX OFF )
SET ( DEFAULT_QT ON )
SET ( DEFAULT_X11 OFF )
SET ( DEFAULT_XCB OFF )
SET ( DEFAULT_QT ON )
SET ( DEFAULT_WS281XPWM OFF )
SET ( DEFAULT_AVAHI ON )
SET ( DEFAULT_USE_SHARED_AVAHI_LIBS ON )
@ -58,6 +58,8 @@ IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
SET ( DEFAULT_FB ON )
SET ( DEFAULT_USB_HID ON )
SET ( DEFAULT_CEC ON )
ELSEIF ( WIN32 )
SET ( DEFAULT_DX ON )
ELSE()
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_FB OFF )
@ -190,6 +192,9 @@ 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}")
@ -297,12 +302,46 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# 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
FIRSTSUBDIR(SUBDIRQT "C:/Qt")
SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${SUBDIRQT}/msvc2019_64")
if (NOT DEFINED ENV{Qt5_DIR})
message(STATUS "Set Qt5 module path: ${SUBDIRQT}")
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${SUBDIRQT}/msvc2019_64/lib/cmake/Qt5")
#
# 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)
endif()
endif()
# Use GNU gold linker if available

View File

@ -48,7 +48,7 @@ wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/
```
sudo apt-get update
sudo apt-get install git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite 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
sudo apt-get install 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
```
**on RPI you need the videocore IV headers**
@ -84,16 +84,19 @@ brew install zlib
```
## Windows (WIP)
We assume a 64bit Windows 7 or higher. Install the following
We assume a 64bit Windows 7 or higher. Install the following;
- [Git](https://git-scm.com/downloads) (Check: Add to PATH)
- [Python 3 (Windows x86-64 executable installer)](https://www.python.org/downloads/windows/) (Check: Add to PATH and Debug Symbols)
- Open a console window and execute `pip install aqtinstall`.
- Now we can download Qt to _C:\Qt_ `mkdir c:\Qt && aqt install -O c:\Qt 5.15.0 windows desktop win64_msvc2019_64`
- [CMake (Windows win64-x64 Installer)](https://cmake.org/download/) (Check: Add to PATH)
- [Win64 OpenSSL v1.1.1g](https://slproweb.com/products/Win32OpenSSL.html) ([direct link](https://slproweb.com/download/Win64OpenSSL-1_1_1g.exe))
- [Visual Studio 2019 Build Tools](https://go.microsoft.com/fwlink/?linkid=840931) ([direct link](https://aka.ms/vs/16/release/vs_buildtools.exe))
- Select C++ Buildtools
- On the right, just select `MSVC v142 VS 2019 C++ x64/x86-Buildtools` and latest `Windows 10 SDK`. Everything else is not needed.
- [Win64 OpenSSL v1.1.1h](https://slproweb.com/products/Win32OpenSSL.html) ([direct link](https://slproweb.com/download/Win64OpenSSL-1_1_1h.exe))
- [Python 3 (Windows x86-64 executable installer)](https://www.python.org/downloads/windows/) (Check: Add to PATH and Debug Symbols)
- Open a console window and execute `pip install aqtinstall`.
- Now we can download Qt to _C:\Qt_ `mkdir c:\Qt && aqt install -O c:\Qt 5.15.0 windows desktop win64_msvc2019_64`
- [DirectX Software Development Kit](https://www.microsoft.com/en-us/download/details.aspx?id=6812) ([direct link](https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe))
- Optional for package creation: [NSIS 3.x](https://sourceforge.net/projects/nsis/files/NSIS%203/) ([direct link](https://sourceforge.net/projects/nsis/files/latest/download))
# Compiling and installing Hyperion

View File

@ -4,14 +4,14 @@ Use a clean Raspbian Stretch Lite (on target) and Ubuntu 18/19 (on host) to exec
## On the Target system (here Raspberry Pi)
Install required additional packages.
```
sudo apt-get install qtbase5-dev libqt5serialport5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-util0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libqt5sql5-sqlite aptitude qt5-default rsync libssl-dev zlib1g-dev
sudo apt-get install qtbase5-dev libqt5serialport5-dev libqt5svg5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-util0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libqt5sql5-sqlite aptitude qt5-default rsync libssl-dev zlib1g-dev
```
## On the Host system (here Ubuntu)
Update the Ubuntu environment to the latest stage and install required additional packages.
```
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -qq -y install git rsync cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite 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
sudo apt-get -qq -y install git rsync cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5svg5-dev libqt5sql5-sqlite 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
```
Refine the target IP or hostname, plus userID as required and set-up cross-compilation environment:

View File

@ -24,6 +24,9 @@
// 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

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2014 hyperion team
Copyright (c) 2014-2020 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

View File

@ -56,6 +56,6 @@ See [CompileHowto](CompileHowto.md) and [CrossCompileHowto](CrossCompileHowto.md
Alpha releases available from the [Hyperion release page](https://github.com/hyperion-project/hyperion.ng/releases)
## License
The source is released under MIT-License (see http://opensource.org/licenses/MIT).<br>
The source is released under MIT-License (see https://opensource.org/licenses/MIT).<br>
[![GitHub license](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/LICENSE)

View File

@ -21,6 +21,7 @@ import socket
import serial
import serial.threaded
from __future__ import division
class SerialToNet(serial.threaded.Protocol):
"""serial->socket"""
@ -152,7 +153,7 @@ 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(('', args.localport))
srv.bind(('0.0.0.0', args.localport))
try:
intentional_exit = False

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -18,7 +18,7 @@
performTranslation();
var si = sysInfo.hyperion;
var libs = { "Bootstrap 3": "http://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": "http://jeremydorn.com/json-editor/", "jQuery.i18n": "https://github.com/wikimedia/jquery.i18n", "metisMenu": "http://mm.onokumus.com/index.html", "download.js": "http://danml.com/download.html", "gijgo": "http://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/" };
var libh = "";
var lang = [];
var dcount = 0;
@ -35,19 +35,35 @@
var sys = window.sysInfo.system;
var shy = window.sysInfo.hyperion;
var info = "<pre>Hyperion Server: \n";
info += '- Build: ' + shy.build + '\n';
info += '- Build time: ' + shy.time + '\n';
info += '- Git Remote: ' + shy.gitremote + '\n';
info += '- Version: ' + shy.version + '\n';
info += '- UI Lang: ' + storedLang + ' (BrowserLang: ' + navigator.language + ')\n';
info += '- UI Access: ' + storedAccess + '\n';
//info += 'Log lvl: ' + window.serverConfig.logger.level + '\n';
info += '- Avail Capt: ' + window.serverInfo.grabbers.available + '\n\n';
info += '- Build: ' + shy.build + '\n';
info += '- Build time: ' + shy.time + '\n';
info += '- Git Remote: ' + shy.gitremote + '\n';
info += '- Version: ' + shy.version + '\n';
info += '- UI Lang: ' + storedLang + ' (BrowserLang: ' + navigator.language + ')\n';
info += '- UI Access: ' + storedAccess + '\n';
//info += '- Log lvl: ' + window.serverConfig.logger.level + '\n';
info += '- Avail Capt: ' + window.serverInfo.grabbers.available + '\n';
info += '- Database: ' + (shy.readOnlyMode ? "ready-only" : "read/write") + '\n';
info += '\n';
info += 'Hyperion Server OS: \n';
info += '- Distribution: ' + sys.prettyName + '\n';
info += '- Arch: ' + sys.architecture + '\n';
info += '- Kernel: ' + sys.kernelType + ' (' + sys.kernelVersion + ' (WS: ' + sys.wordSize + '))\n';
info += '- Browser: ' + navigator.userAgent + ' </pre>';
info += '- Distribution: ' + sys.prettyName + '\n';
info += '- Architecture: ' + sys.architecture + '\n';
if (sys.cpuModelName)
info += '- CPU Model: ' + sys.cpuModelName + '\n';
if (sys.cpuModelType)
info += '- CPU Type: ' + sys.cpuModelType + '\n';
if (sys.cpuRevision)
info += '- CPU Revision: ' + sys.cpuRevision + '\n';
if (sys.cpuHardware)
info += '- CPU Hardware: ' + sys.cpuHardware + '\n';
info += '- Kernel: ' + sys.kernelType + ' (' + sys.kernelVersion + ' (WS: ' + sys.wordSize + '))\n';
info += '- Qt Version: ' + sys.qtVersion + '\n';
info += '- Python Version: ' + sys.pyVersion + '\n';
info += '- Browser: ' + navigator.userAgent + ' </pre>';
var fc = ['<span id="danger_trig">' + $.i18n("about_version") + '<span>', $.i18n("about_build"), $.i18n("about_builddate"), $.i18n("about_translations"), $.i18n("about_resources", $.i18n("general_webui_title")), "System info (Github Issue)", $.i18n("about_3rd_party_licenses")];
var sc = [currentVersion, si.build, si.time, '(' + availLang.length + ')<p>' + lang + '</p><p><a href="https://github.com/hyperion-project/hyperion.ng" target="_blank">' + $.i18n("about_contribute") + '</a></p>', libh, info, '<pre><div id="3rdpartylicenses" style="overflow:scroll;max-height:400px"></div></pre>'];

View File

@ -50,7 +50,7 @@
<label class="ltdlabel" for="ip_cl_top" data-i18n="conf_leds_layout_cl_top">Top</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_top" type="number" value="10" min="0" step="1"></input>
<input class="form-control ledCLconstr " id="ip_cl_top" type="number" value="1" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
@ -59,7 +59,7 @@
<label class="ltdlabel" for="ip_cl_bottom" data-i18n="conf_leds_layout_cl_bottom">Bottom</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_bottom" type="number" value="10" min="0" step="1"></input>
<input class="form-control ledCLconstr" id="ip_cl_bottom" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
@ -68,7 +68,7 @@
<label class="ltdlabel" for="ip_cl_left" data-i18n="conf_leds_layout_cl_left">Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_left" type="number" value="6" min="0" step="1"></input>
<input class="form-control ledCLconstr" id="ip_cl_left" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
@ -77,7 +77,7 @@
<label class="ltdlabel" for="ip_cl_right" data-i18n="conf_leds_layout_cl_right">Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_right" type="number" value="6" min="0" step="1"></input>
<input class="form-control ledCLconstr" id="ip_cl_right" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
@ -266,7 +266,7 @@
<label class="ltdlabel" for="ip_ma_ledshoriz" data-i18n="conf_leds_layout_ma_horiz">Horizontal</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledshoriz" type="number" value="10" min="1" step="1"></input>
<input class="form-control ledMAconstr" id="ip_ma_ledshoriz" type="number" value="1" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
@ -275,7 +275,7 @@
<label class="ltdlabel" for="ip_ma_ledsvert" data-i18n="conf_leds_layout_ma_vert">Vertical</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledsvert" type="number" value="10" min="1" step="1"></input>
<input class="form-control ledMAconstr" id="ip_ma_ledsvert" type="number" value="1" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>

View File

@ -54,30 +54,30 @@
<i class="fa fa-amazon bg-color-am"></i>
<h4>Amazon</h4>
<ul>
<li><a href="http://www.amazon.de/?tag=hyperionproje-21" target="_blank" data-i18n="general_country_de">Germany</a></li>
<li><a href="http://www.amazon.com/?tag=hyperionpro05-20" target="_blank" data-i18n="general_country_us">United States</a></li>
<li><a href="http://www.amazon.co.uk/?tag=hyperionpro02-21" target="_blank" data-i18n="general_country_uk">United Kingdom</a></li>
<li><a href="http://www.amazon.fr/?tag=hyperionpro0c-21" target="_blank" data-i18n="general_country_fr">France</a></li>
<li><a href="http://www.amazon.es/?tag=hyperionpro07-21" target="_blank" data-i18n="general_country_es">Spain</a></li>
<li><a href="http://www.amazon.it/?tag=hyperionpro00-21" target="_blank" data-i18n="general_country_it">Italy</a></li>
<li><a href="https://www.amazon.de/?tag=hyperionproje-21" target="_blank" data-i18n="general_country_de">Germany</a></li>
<li><a href="https://www.amazon.com/?tag=hyperionpro05-20" target="_blank" data-i18n="general_country_us">United States</a></li>
<li><a href="https://www.amazon.co.uk/?tag=hyperionpro02-21" target="_blank" data-i18n="general_country_uk">United Kingdom</a></li>
<li><a href="https://www.amazon.fr/?tag=hyperionpro0c-21" target="_blank" data-i18n="general_country_fr">France</a></li>
<li><a href="https://www.amazon.es/?tag=hyperionpro07-21" target="_blank" data-i18n="general_country_es">Spain</a></li>
<li><a href="https://www.amazon.it/?tag=hyperionpro00-21" target="_blank" data-i18n="general_country_it">Italy</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-shopping-cart bg-color-am"></i>
<h4>ebay</h4>
<h4>eBay</h4>
<ul>
<li><a href="http://rover.ebay.com/rover/1/707-53477-19255-0/1?pub=5575174930&toolid=10001&campid=707-53477-19255-0&customid=&mpt=9592320&mpre=http%3A%2F%2Fwww.ebay.de" target="_blank" data-i18n="general_country_de">Germany</a></li>
<li><a href="http://rover.ebay.com/rover/1/711-53200-19255-0/1?pub=5575174930&toolid=10001&campid=711-53200-19255-0&customid=&mpt=8091563&mpre=http%3A%2F%2Fwww.ebay.com" target="_blank" data-i18n="general_country_us">United States</a></li>
<li><a href="http://rover.ebay.com/rover/1/710-53481-19255-0/1?pub=5575174930&toolid=10001&campid=710-53481-19255-0&customid=&mpt=9837178&mpre=http%3A%2F%2Fwww.ebay.co.uk" target="_blank" data-i18n="general_country_uk">United Kingdom</a></li>
<li><a href="http://rover.ebay.com/rover/1/1346-53482-19255-0/1?pub=5575174930&toolid=10001&campid=1346-53482-19255-0&customid=&mpt=9890408&mpre=http%3A%2F%2Fwww.ebay.nl" target="_blank" data-i18n="general_country_nl">Netherlands</a></li>
<li><a href="http://rover.ebay.com/rover/1/709-53476-19255-0/1?pub=5575174930&toolid=10001&campid=709-53476-19255-0&customid=&mpt=9865977&mpre=http%3A%2F%2Fwww.ebay.fr" target="_blank" data-i18n="general_country_fr">France</a></li>
<li><a href="http://rover.ebay.com/rover/1/1185-53479-19255-0/1?pub=5575174930&toolid=10001&campid=1185-53479-19255-0&customid=&mpt=1016300&mpre=http%3A%2F%2Fwww.ebay.es" target="_blank" data-i18n="general_country_es">Spain</a></li>
<li><a href="https://rover.ebay.com/rover/1/707-53477-19255-0/1?pub=5575174930&toolid=10001&campid=707-53477-19255-0&customid=&mpt=9592320&mpre=https%3A%2F%2Fwww.ebay.de" target="_blank" data-i18n="general_country_de">Germany</a></li>
<li><a href="https://rover.ebay.com/rover/1/711-53200-19255-0/1?pub=5575174930&toolid=10001&campid=711-53200-19255-0&customid=&mpt=8091563&mpre=https%3A%2F%2Fwww.ebay.com" target="_blank" data-i18n="general_country_us">United States</a></li>
<li><a href="https://rover.ebay.com/rover/1/710-53481-19255-0/1?pub=5575174930&toolid=10001&campid=710-53481-19255-0&customid=&mpt=9837178&mpre=https%3A%2F%2Fwww.ebay.co.uk" target="_blank" data-i18n="general_country_uk">United Kingdom</a></li>
<li><a href="https://rover.ebay.com/rover/1/1346-53482-19255-0/1?pub=5575174930&toolid=10001&campid=1346-53482-19255-0&customid=&mpt=9890408&mpre=https%3A%2F%2Fwww.ebay.nl" target="_blank" data-i18n="general_country_nl">Netherlands</a></li>
<li><a href="https://rover.ebay.com/rover/1/709-53476-19255-0/1?pub=5575174930&toolid=10001&campid=709-53476-19255-0&customid=&mpt=9865977&mpre=https%3A%2F%2Fwww.ebay.fr" target="_blank" data-i18n="general_country_fr">France</a></li>
<li><a href="https://rover.ebay.com/rover/1/1185-53479-19255-0/1?pub=5575174930&toolid=10001&campid=1185-53479-19255-0&customid=&mpt=1016300&mpre=https%3A%2F%2Fwww.ebay.es" target="_blank" data-i18n="general_country_es">Spain</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-paypal bg-color-pp"></i>
<h4>Paypal</h4>
<h4>PayPal</h4>
<p data-i18n="support_label_donationpp">Donation:</p><a href="https://www.paypal.me/hyperionproject/10" target="_blank">Paypal</a>
</div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 382 KiB

After

Width:  |  Height:  |  Size: 377 KiB

View File

@ -258,7 +258,6 @@
"edt_conf_fbs_heading_title": "Flatbuffers Server\n",
"edt_conf_fbs_timeout_expl": "Pokud nebudou v daném časovém období přijata žádná data, bude komponenta (soft) deaktivována.",
"edt_conf_fbs_timeout_title": "Časový limit",
"edt_conf_fg_device_title": "Zařízení",
"edt_conf_fg_display_expl": "Vyberte, která plocha by měla být zachycena (nastavení více monitorů)",
"edt_conf_fg_display_title": "Displej",
"edt_conf_fg_frequency_Hz_expl": "Jak často se pořizují nové snímky",

View File

@ -261,12 +261,14 @@
"edt_conf_enum_automatic": "Automatisch",
"edt_conf_enum_bbclassic": "Klassisch",
"edt_conf_enum_bbdefault": "Standard",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "von unten nach oben",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Farbe",
"edt_conf_enum_custom": "Benutzerdefiniert",
"edt_conf_enum_decay": "Dämpfung",
"edt_conf_enum_dl_error": "nur Fehler",
"edt_conf_enum_dl_informational": "informativ",
"edt_conf_enum_dl_nodebug": "keine Debugausgabe",
@ -296,7 +298,6 @@
"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",
"edt_conf_fg_device_title": "Device",
"edt_conf_fg_display_expl": "Gebe an, von welchem Desktop aufgenommen werden soll. (Multi Monitor Setup)",
"edt_conf_fg_display_title": "Display",
"edt_conf_fg_frequency_Hz_expl": "Wie schnell werden neue Bilder aufgenommen.",
@ -367,7 +368,15 @@
"edt_conf_pbs_timeout_title": "Zeitüberschreitung",
"edt_conf_smooth_continuousOutput_expl": "Aktualisiere die LEDs, auch wenn das Bild sich nicht geändert hat.",
"edt_conf_smooth_continuousOutput_title": "Fortlaufende Ausgabe",
"edt_conf_smooth_decay_expl": "Dämpfungsgrad. Linare Dämpfung = 1; Werte größer eins haben einen stärkeren effekt.",
"edt_conf_smooth_decay_title": "Dämpfungsgrad",
"edt_conf_smooth_dithering_expl": "Erhöhung des Farbgenauigkeitsgrad durch Berücksichtigung benachbarter Farbwerte.",
"edt_conf_smooth_dithering_title": "Dithering",
"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 Ausgangfrequnz zum LED-Device",
"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.",
@ -457,6 +466,8 @@
"edt_dev_spec_dithering_title": "Dithering",
"edt_dev_spec_dmaNumber_title": "DMA Kanal",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Maximalstufe Stromstärke",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Grenzwert für adaptive Stromstärke",
"edt_dev_spec_gpioBcm_title": "GPIO Pin",
"edt_dev_spec_gpioMap_title": "GPIO Zuweisung",
"edt_dev_spec_gpioNumber_title": "GPIO Nummer",
@ -466,8 +477,6 @@
"edt_dev_spec_intervall_title": "Intervall",
"edt_dev_spec_invert_title": "Invertiere Signal",
"edt_dev_spec_latchtime_title": "Sperrzeit",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Maximalstufe Stromstärke",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Grenzwert für adaptive Stromstärke",
"edt_dev_spec_ledIndex_title": "LED-Index",
"edt_dev_spec_ledType_title": "LED-Typ",
"edt_dev_spec_lightid_itemtitle": "ID",
@ -711,11 +720,13 @@
"general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Glättung",
"general_comp_V4L": "USB-Aufnahme",
"general_country_cn": "China",
"general_country_de": "Deutschland",
"general_country_es": "Spanien",
"general_country_fr": "Frankreich",
"general_country_it": "Italien",
"general_country_nl": "Niederlande",
"general_country_ru": "Russland",
"general_country_uk": "England",
"general_country_us": "Amerika",
"general_speech_cs": "Tschechisch",
@ -727,9 +738,11 @@
"general_speech_nl": "Niederländisch",
"general_speech_pl": "Polnisch",
"general_speech_ro": "Rumänisch",
"general_speech_ru": "Russisch",
"general_speech_sv": "Schwedisch",
"general_speech_tr": "Türkisch",
"general_speech_vi": "Vietnamesisch",
"general_speech_zh-CN": "Chinesisch (vereinfacht)",
"general_webui_title": "Hyperion - Web Konfiguration",
"general_wiki_moreto": "Mehr Informationen zu \"$1\" findest du in unserem Wiki",
"infoDialog_checklist_title": "Checkliste!",
@ -847,7 +860,6 @@
"update_versreminder": "Deine Version: $1",
"wiz_atmoorb_desc2": "Nun kannst du auswählen, welche der Orbs 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_atmoorb_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für AtmoOrb. Zu den Funktionen zählen ein automatisches Finden der AtmoOrbs, die einzelnen Lampen unterschiedlichen Bereichen im Bild zuzuordnen und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.",
"wiz_atmoorb_noLights": "Es wurden keine AtmoOrbs gefunden! Bitte verbinde die AtmoOrbs mit dem Netzwerk oder konfiguriere sie manuell.",
"wiz_atmoorb_title": "AtmoOrb Einrichtungsassistent",
"wiz_cc_adjustgamma": "Gamma: Was du jetzt tun musst ist, jeden Gamma-Kanal so einstellen, dass der \"Grauverlauf\" auf den LEDs nicht grünlich/rötlich/bläulich aussieht. Neutral ist übrigens 1.0. Beispiel: Sollte dein grau etwas rötlich sein bedeutet dies, dass du dein Gamma für Rot erhöhen musst, um den Rot-Anteil zu verringern (Je mehr Gamma, desto weniger Farbe).",
"wiz_cc_adjustit": "Verändere dein \"$1\", bis du zufrieden bist. Beachte: Je mehr du reduzierst bzw. von dem Standardwert abweichst, je mehr veränderst du den maximalen Farbraum. Das betrifft alle Farben, die daraus abgeleitet werden. Je nach TV/LED Farbspektrum sind die Ergebnisse unterschiedlich.",
@ -871,6 +883,10 @@
"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_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 Device Eigenschaften kann nicht zugegriffen werden - Konfiguriere die Anzahl der LEDs manuell.",
"wiz_cololight_title": "Cololight Einrichtungsassistent",
"wiz_guideyou": "Der $1 wird dich durch die Konfiguration leiten, drücke dazu einfach den Button!",
"wiz_hue_blinkblue": "Lasse ID $1 blau aufleuchten",
"wiz_hue_clientkey": "Clientkey:",
@ -904,6 +920,7 @@
"wiz_identify_light": "Identifiziere $1",
"wiz_ids_disabled": "Deaktiviert",
"wiz_ids_entire": "Ganzes Bild",
"wiz_noLights": "Es wurden keine $1s gefunden! Bitte verbinde die $1s mit dem Netzwerk oder konfiguriere sie manuell.",
"wiz_pos": "Position/Status",
"wiz_rgb_expl": "Der Farbpunkt ändert alle x Sekunden die Farbe (rot, grün), zur selben Zeit ändern deine LEDs die Farbe ebenfalls. Beantworte die Fragen unten, um deine RGB Byte Reihenfolge zu überprüfen/korrigieren.",
"wiz_rgb_intro1": "Dieser Assistent wird dir dabei helfen die richtige Byte Reihenfolge für deine LEDs zu finden. Klicke auf Fortfahren, um zu beginnen.",
@ -916,7 +933,6 @@
"wiz_wizavail": "Assistent verfügbar",
"wiz_yeelight_desc2": "Nun kannst du auswählen, welche der Lampen 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_yeelight_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Yeelight. Zu den Funktionen zählen ein automatisches Finden der Yeelights, die einzelnen Lampen unterschiedlichen Bereichen im Bild zuzuordnen und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.",
"wiz_yeelight_noLights": "Es wurden keine Yeelights gefunden! Bitte verbinde die Yeelights mit dem Netzwerk oder konfiguriere sie manuell.",
"wiz_yeelight_title": "Yeelight Einrichtungsassistent",
"wiz_yeelight_unsupported": "Nicht unterstützt"
}
}

View File

@ -261,12 +261,14 @@
"edt_conf_enum_automatic": "Automatic",
"edt_conf_enum_bbclassic": "Classic",
"edt_conf_enum_bbdefault": "Default",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Bottom up",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Color",
"edt_conf_enum_custom": "Custom",
"edt_conf_enum_decay": "Decay",
"edt_conf_enum_dl_error": "Error",
"edt_conf_enum_dl_informational": "Informational",
"edt_conf_enum_dl_nodebug": "No Debug output",
@ -296,7 +298,6 @@
"edt_conf_fbs_heading_title": "Flatbuffers Server",
"edt_conf_fbs_timeout_expl": "If no data are received for the given period, the component will be (soft) disabled.",
"edt_conf_fbs_timeout_title": "Timeout",
"edt_conf_fg_device_title": "Device",
"edt_conf_fg_display_expl": "Select which desktop should be captured (multi monitor setup)",
"edt_conf_fg_display_title": "Display",
"edt_conf_fg_frequency_Hz_expl": "How fast new pictures are captured",
@ -367,7 +368,15 @@
"edt_conf_pbs_timeout_title": "Timeout",
"edt_conf_smooth_continuousOutput_expl": "Update the LEDs even there is no changed picture.",
"edt_conf_smooth_continuousOutput_title": "Continuous output",
"edt_conf_smooth_decay_expl": "The speed of decay. 1 is linear, greater values are have stronger effect.",
"edt_conf_smooth_decay_title": "Decay-Power",
"edt_conf_smooth_dithering_expl": "Improve color accuracy at high output speeds by alternating between adjacent colors.",
"edt_conf_smooth_dithering_title": "Dithering",
"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.",
@ -457,6 +466,8 @@
"edt_dev_spec_dithering_title": "Dithering",
"edt_dev_spec_dmaNumber_title": "DMA channel",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Max Current Level",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Adaptive Current Threshold",
"edt_dev_spec_gpioBcm_title": "GPIO Pin",
"edt_dev_spec_gpioMap_title": "GPIO mapping",
"edt_dev_spec_gpioNumber_title": "GPIO number",
@ -466,8 +477,6 @@
"edt_dev_spec_intervall_title": "Interval",
"edt_dev_spec_invert_title": "Invert signal",
"edt_dev_spec_latchtime_title": "Latch time",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Max Current Level",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Adaptive Current Threshold",
"edt_dev_spec_ledIndex_title": "LED index",
"edt_dev_spec_ledType_title": "LED Type",
"edt_dev_spec_lightid_itemtitle": "ID",
@ -712,7 +721,7 @@
"general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Smoothing",
"general_comp_V4L": "USB Capture",
"general_country_cn": "China",
"general_country_cn": "China",
"general_country_de": "Germany",
"general_country_es": "Spain",
"general_country_fr": "France",
@ -730,14 +739,11 @@
"general_speech_nl": "Dutch",
"general_speech_pl": "Polish",
"general_speech_ro": "Romanian",
"general_speech_ru": "Russian",
"general_speech_sv": "Swedish",
"general_speech_tr": "Turkish",
"general_speech_vi": "Vietnamese",
"general_speech_zh-CN": "Chinese (simplified)",
"general_speech_ru": "Russian",
"general_speech_sv": "Swedish",
"general_speech_tr": "Turkish",
"general_speech_vi": "Vietnamese",
"general_speech_zh-CN": "Chinese (simplified)",
"general_webui_title": "Hyperion - Web Configuration",
"general_wiki_moreto": "More information to \"$1\" at our Wiki",
"infoDialog_checklist_title": "Checklist!",
@ -855,7 +861,6 @@
"update_versreminder": "Your version: $1",
"wiz_atmoorb_desc2": "Now choose which Orbs 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_atmoorb_intro1": "This wizards configures Hyperion for AtmoOrbs. Features are the AtmoOrb auto detection, setting each light to a specific position on your picture or disable it and optimise the Hyperion settings automatically! So in short: All you need are some clicks and you are done!",
"wiz_atmoorb_noLights": "No AtmoOrbs found! Please get the lights connected to the network or configure them manually.",
"wiz_atmoorb_title": "AtmoOrb Wizard",
"wiz_cc_adjustgamma": "Gamma: What you have to do is, adjust gamma levels of each channel until you have the same perceived amount of each channel. Hint: Neutral is 1.0! For example, if your Grey is a bit reddish it means that you have to increase red gamma to reduce the amount of red (the more gamma, the less amount of color).",
"wiz_cc_adjustit": "Adjust your \"$1\", until your are fine with it. Take notice: The more you adjust away from the default value the color spectrum will be limited (Also for all colors in between). Depending on TV/LED color spectrum the results will vary.",
@ -879,6 +884,10 @@
"wiz_cc_testintrok": "Push on a button below to start a test video.",
"wiz_cc_testintrowok": "Check out the following link to download test videos:",
"wiz_cc_title": "Colour calibration wizard",
"wiz_cololight_desc2": "Now choose which Cololights should be added. To identify single lights, press the button on the right.",
"wiz_cololight_intro1": "This wizards configures Hyperion for the Cololight system. Features are the Cololight auto detection and tune the Hyperion settings automatically! In short: All you need are some clicks and you are done!<br />Note: In case of Cololight Strip, you might need to manually correct the LED count and layout.",
"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:",
@ -912,6 +921,7 @@
"wiz_identify_light": "Identify $1",
"wiz_ids_disabled": "Deactivated",
"wiz_ids_entire": "Whole picture",
"wiz_noLights": "No $1 found! Please get the lights connected to the network or configure them manually.",
"wiz_pos": "Position/State",
"wiz_rgb_expl": "The color dot switches every x seconds the color (red, green), at the same time your LEDs switch the color too. Answer the questions at the bottom to check/correct your byte order.",
"wiz_rgb_intro1": "This wizard will guide you through the finding process of the correct color order for your leds. Click on continue to begin.",
@ -924,7 +934,6 @@
"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!",
"wiz_yeelight_noLights": "No Yeelights found! Please get the lights connected to the network or configure them manually.",
"wiz_yeelight_title": "Yeelight Wizard",
"wiz_yeelight_unsupported": "Unsupported"
}
}

View File

@ -13,18 +13,18 @@
"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",
"about_builddate": "la fecha de creación",
"about_builddate": "Fecha de creación",
"about_contribute": "¡Añade más idiomas a Hyperion!",
"about_credits": "¡Créditos a todos estos desarrolladores!",
"about_resources": "$1 librerías",
"about_translations": "Traducciones",
"about_version": "Versión",
"conf_colors_blackborder_intro": "Omite bordes negros dondequiera que estén. Cada modo usa otro algoritmo de detección que está ajustado para situaciones especiales. Sube el umbral si no percibes funcionamiento.",
"conf_colors_color_intro": "Cree uno o más perfiles de calibración, ajuste cada color, brillo, linealización y más.",
"conf_colors_color_intro": "Crea uno o más perfiles de calibración, ajusta cada color, brillo, linealización y más.",
"conf_colors_smoothing_intro": "El suavizado aplana los cambios de color/brillo para reducir la distracción molesta.",
"conf_effect_bgeff_intro": "Definir un efecto de fondo, que se muestra durante \"inactivo\". (También temporalmente a través de Observador Kodi)",
"conf_effect_fgeff_intro": "Define un efecto de arranque o color, que se muestra durante el inicio de Hyperion durante una duración definida.",
"conf_effect_path_intro": "Define más rutas de efectos si es necesario.",
"conf_effect_bgeff_intro": "Definir un efecto/color de fondo, que se muestra durante Hyperion \"inactivo\". Comienza siempre con el canal prioritario 255.",
"conf_effect_fgeff_intro": "Define un efecto de arranque o color, que se muestra durante el inicio de Hyperion durante la duración definida.",
"conf_effect_path_intro": "Cargar los efectos de las rutas definidas. Además, puedes desactivar los efectos individuales por nombre para ocultarlos de todas las listas de efectos.",
"conf_general_createInst_btn": "Crear Instalaciñón",
"conf_general_impexp_expbtn": "Exportar",
"conf_general_impexp_impbtn": "Importar",
@ -34,15 +34,15 @@
"conf_general_inst_actionhead": "Acción",
"conf_general_inst_delreq_h": "Eliminar la instalación de hardware LED",
"conf_general_inst_delreq_t": "¿Está seguro de que desea borrar la instalación \"$1\"? También se borrarán todos los ajustes.",
"conf_general_inst_desc": "Utilice hardware LED diferente al mismo tiempo. Cada instalación se ejecuta de forma independiente, lo que permite diferentes diseños de LEDs y configuraciones de calibración. Las instalaciones en ejecución están disponibles en la barra de iconos superior",
"conf_general_inst_desc": "Utiliza hardware LED diferente al mismo tiempo. Cada instalación se ejecuta de forma independiente, lo que permite diferentes diseños de LEDs y configuraciones de calibración. Las instalaciones en ejecución están disponibles en la barra de iconos superior",
"conf_general_inst_name_title": "Nombre de la nueva instalación",
"conf_general_inst_namehead": "Nombre de la instalación",
"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_grabber_fg_intro": "La captura de la plataforma es la captura del sistema local como fuente de entrada, en la que Hyperion está instalado.",
"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 procesamiento.",
"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_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.",
"conf_helptable_expl": "Explicación",
"conf_helptable_option": "Opción",
"conf_leds_contr_label_contrtype": "Tipo de controladora:",
@ -54,7 +54,7 @@
"conf_leds_layout_checkp1": "El led negro es tu primer led, el primer led es el punto donde introduces tu señal de datos.",
"conf_leds_layout_checkp2": "La disposición es siempre la vista delantera de tu TV, nunca la visión posterior.",
"conf_leds_layout_checkp3": "Asegúrate de que la dirección es correcta. Los leds grises indican los led número 2 y 3 para visualizar la dirección de los datos.",
"conf_leds_layout_checkp4": "Hueco: Para crear un hueco, ignóralo primero cuando defina Superior/Inferior/Izquierda/Derecha y ajusta después la longitud del hueco para eliminar una cantidad de leds. Modifica la posición del hueco hasta que coincida.",
"conf_leds_layout_checkp4": "Hueco: Para crear un hueco, ignóralo primero cuando definas Superior/Inferior/Izquierda/Derecha y ajusta después la longitud del hueco para eliminar una cantidad de leds. Modifica la posición del hueco hasta que coincida.",
"conf_leds_layout_cl_bottom": "Inferior",
"conf_leds_layout_cl_bottomleft": "Inferior Izquierda (Esquina)",
"conf_leds_layout_cl_bottomright": "Inferior Derecha (Esquina)",
@ -80,7 +80,7 @@
"conf_leds_layout_cl_vleddepth": "Profundidad LED vertical",
"conf_leds_layout_frame": "Disposición Clásica (Marco LED)",
"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 su TV.",
"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_horiz": "Horizontal",
"conf_leds_layout_ma_optbottomleft": "Inferior Izquierda",
@ -104,13 +104,13 @@
"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)",
"conf_leds_layout_preview_originTEXT": "Creado a partir de: Cuadro de texto",
"conf_leds_layout_preview_totalleds": "Total de LEDs:$1",
"conf_leds_layout_preview_totalleds": "Total de LEDs: $1",
"conf_leds_layout_ptl": "Apunta arriba a la izquierda",
"conf_leds_layout_ptlh": "Horizontal",
"conf_leds_layout_ptln": "Trapezpuntos",
"conf_leds_layout_ptln": "Triplepuntos",
"conf_leds_layout_ptlv": "Vertical",
"conf_leds_layout_ptr": "Apunta arriba a la derecha",
"conf_leds_layout_textf1": "Este campo de texto muestra de forma predeterminada el diseño cargado actual y se sobrescribirá si genera uno nuevo con las opciones siguientes. Opcional, puede realizar más ediciones.",
"conf_leds_layout_textf1": "Este campo de texto muestra de forma predeterminada el diseño cargado actual y se sobrescribirá si generas uno nuevo con las opciones siguientes. Opcional, puedes realizar más ediciones.",
"conf_leds_nav_label_ledcontroller": "Controlador LED",
"conf_leds_nav_label_ledlayout": "Disposición LED",
"conf_leds_optgroup_RPiGPIO": "GPIO RPi",
@ -118,7 +118,7 @@
"conf_leds_optgroup_RPiSPI": "SPI RPi",
"conf_leds_optgroup_debug": "Depurar",
"conf_leds_optgroup_network": "Red",
"conf_leds_optgroup_usb": "USB",
"conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Desplazamiento automático",
"conf_logging_btn_pbupload": "Crear informe para solicitud de soporte",
"conf_logging_contpolicy": "Informe de la Política de Privacidad",
@ -143,11 +143,11 @@
"conf_network_tok_diaMsg": "Aquí está tu nuevo Token que puede ser utilizado para conceder a una aplicación acceso a la API de Hyperion. Por razones de seguridad no puedes volver a verla, así que úsala/anótala ahora.",
"conf_network_tok_diaTitle": "¡Nuevo Token creado!",
"conf_network_tok_grantMsg": "Una aplicación solicitó un token para acceder a la API de Hyperion. ¿Quiere conceder el acceso? Por favor, ¡verifique la información proporcionada!",
"conf_network_tok_grantT": "Aplicación solicita Token",
"conf_network_tok_grantT": "Solicitudes de aplicación Token",
"conf_network_tok_intro": "Aquí puedes crear y eliminar Tokens para la autenticación de la API. Los Tokens creados sólo se mostrarán una vez.",
"conf_network_tok_lastuse": "Último uso",
"conf_network_tok_title": "Gestión de Tokens",
"conf_webconfig_label_intro": "Ajustes de configuración web. Editar con sabiduría.",
"conf_webconfig_label_intro": "Ajustes de configuración web. Editar sabiamente.",
"dashboard_active_instance": "Instalación seleccionada",
"dashboard_alert_message_confedit": "Se ha modificado la configuración de Hyperion. Para aplicarlo, reinicia Hyperion.",
"dashboard_alert_message_confedit_t": "Configuración modificada",
@ -171,7 +171,7 @@
"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_label_intro": "El cuadro de mandos te ofrece una visión general sobre el estado de Hyperion y te mostrará las últimas noticias del Blog de Hyperion.",
"dashboard_label_intro": "El cuadro de mandos te ofrece una visión general sobre el estado de Hyperion y te muestra las últimas noticias del Blog de Hyperion.",
"dashboard_message_default_password": "Establecida la contraseña predeterminada para la WebUi. Recomendamos encarecidamente cambiar esto.",
"dashboard_message_default_password_t": "Establecida la contraseña predeterminada de WebUi",
"dashboard_message_do_not_show_again": "No mostrar este mensaje de nuevo",
@ -201,34 +201,34 @@
"edt_conf_bb_maxInconsistentCnt_title": "maxInconsistentCn",
"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_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_bge_heading_title": "Efecto de fondo/Color",
"edt_conf_bge_heading_title": "Efecto/color de fondo",
"edt_conf_bobls_heading_title": "Servidor Boblight",
"edt_conf_color_backlightColored_expl": "Añada un poco de color a su retroiluminación.",
"edt_conf_color_backlightColored_expl": "Añade un poco de color a tu retroiluminación.",
"edt_conf_color_backlightColored_title": "Retroiluminación colorida",
"edt_conf_color_backlightThreshold_expl": "La cantidad mínima de brillo (retroiluminación). Desactivado durante los efectos, colores y en estado \"Off\"",
"edt_conf_color_backlightThreshold_expl": "La cantidad mínima de brillo (retroiluminación). Desactivado durante los efectos, colores y en estado \"Apagado\"",
"edt_conf_color_backlightThreshold_title": "Umbral de retroiluminación",
"edt_conf_color_black_expl": "El valor negro calibrado.",
"edt_conf_color_black_title": "negro",
"edt_conf_color_blue_expl": "El valor azulcalibrado.",
"edt_conf_color_blue_title": "azul",
"edt_conf_color_brightnessComp_expl": "Compensa las diferencias de brillo entre RGB, CMY y blanco. 100 significa compensación completa, 0 sin compensación",
"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_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": "Ajustes para color, brillo, linealización y más.",
"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.",
"edt_conf_color_channelAdjustment_header_itemtitle": "Perfil",
"edt_conf_color_channelAdjustment_header_title": "Ajustes del canal de color",
"edt_conf_color_cyan_expl": "El valor cian calibrado.",
"edt_conf_color_cyan_title": "cyan",
"edt_conf_color_gammaBlue_expl": "El gamma del azul.",
"edt_conf_color_gammaBlue_expl": "La gamma del azul. 1.0 es neutral. Por encima de 1,0 reduce el azul, por debajo de 1,0 añade azul.",
"edt_conf_color_gammaBlue_title": "azul gamma",
"edt_conf_color_gammaGreen_expl": "El gamma del verde.",
"edt_conf_color_gammaGreen_expl": "El gamma de verde. 1.0 es neutral. Por encima de 1.0 reduce el verde, por debajo de 1.0 añade verde.",
"edt_conf_color_gammaGreen_title": "verde gamma",
"edt_conf_color_gammaRed_expl": "El gamma de rojo.",
"edt_conf_color_gammaRed_expl": "La gamma de rojo. 1.0 es neutral. Por encima de 1.0 reduce el rojo, por debajo de 1.0 añade rojo.",
"edt_conf_color_gammaRed_title": "Rojo gamma",
"edt_conf_color_green_expl": "El valor verde calibrado.",
"edt_conf_color_green_title": "verde",
@ -247,31 +247,33 @@
"edt_conf_color_white_title": "blanco",
"edt_conf_color_yellow_expl": "El valor amarillo calibrado.",
"edt_conf_color_yellow_title": "amarillo",
"edt_conf_effp_disable_expl": "Añada nombres de efectos aquí para deshabilitar/ocultarlos de todas las listas de efectos.",
"edt_conf_effp_disable_expl": "Añade nombres de efectos aquí para deshabilitar/ocultarlos de todas las listas de efectos.",
"edt_conf_effp_disable_itemtitle": "Efecto",
"edt_conf_effp_disable_title": "Efectos Deshabilitados",
"edt_conf_effp_heading_title": "Rutas del efecto",
"edt_conf_effp_paths_expl": "Puedes definir más carpetas que contengan efectos. El configurador de efectos siempre guardará en la primera carpeta.",
"edt_conf_effp_paths_itemtitle": "Ruta",
"edt_conf_effp_paths_title": "Ruta(s) del efecto",
"edt_conf_enum_NO_CHANGE": "Auto",
"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_automatic": "Automático",
"edt_conf_enum_bbclassic": "Clásico",
"edt_conf_enum_bbdefault": "Predeterminado",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "De abajo a arriba",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Color",
"edt_conf_enum_custom": "Personalizado",
"edt_conf_enum_decay": "Degradación",
"edt_conf_enum_dl_error": "Error",
"edt_conf_enum_dl_informational": "Informacional",
"edt_conf_enum_dl_informational": "Informativo",
"edt_conf_enum_dl_nodebug": "No hay depuración",
"edt_conf_enum_dl_statechange": "Cambio de estado",
"edt_conf_enum_dl_verbose": "Verborrea",
"edt_conf_enum_dl_verbose": "Verboso",
"edt_conf_enum_dl_verbose1": "Verbosidad nivel 1",
"edt_conf_enum_dl_verbose2": "Verbosidad nivel 2",
"edt_conf_enum_dl_verbose3": "Verbosidad nivel 3",
@ -282,7 +284,7 @@
"edt_conf_enum_left_right": "De izquierda a derecha",
"edt_conf_enum_linear": "Lineal",
"edt_conf_enum_logdebug": "Depurar",
"edt_conf_enum_logsilent": "Silencio",
"edt_conf_enum_logsilent": "Silenciado",
"edt_conf_enum_logverbose": "Detallado",
"edt_conf_enum_logwarn": "Advertencia",
"edt_conf_enum_multicolor_mean": "Multicolor",
@ -296,19 +298,18 @@
"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_device_title": "Dispositivo",
"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_title": "Frecuencia de captura",
"edt_conf_fg_heading_title": "Captura de Plataforma",
"edt_conf_fg_height_expl": "Reducir la imagen a esta altura, como material raw necesita un montón de tiempo de CPU.",
"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": "Reduce el tamaño de la imagen (factor) en función del tamaño original. Un factor de 1 significa que no hay cambios",
"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",
"edt_conf_fg_pixelDecimation_title": "Diezmado de la imagen",
"edt_conf_fg_type_expl": "Tipo de captura de plataforma, por defecto es 'auto'",
"edt_conf_fg_type_title": "Tipo",
"edt_conf_fg_width_expl": "Encoge la imagen a este ancho, como imagen raw necesita un montón de tiempo de CPU.",
"edt_conf_fg_width_expl": "Reducir la imagen a este ancho, ya que la imagen en bruto necesita mucho tiempo de CPU.",
"edt_conf_fg_width_title": "Anchura",
"edt_conf_fge_color_expl": "Si el tipo es \"Color\", selecciona un color de tu elección.",
"edt_conf_fge_color_title": "Color",
@ -345,29 +346,37 @@
"edt_conf_instC_v4lEnable_title": "Habilitar captura USB",
"edt_conf_instCapture_heading_title": "Captura de instancias",
"edt_conf_js_heading_title": "Servidor JSON",
"edt_conf_log_heading_title": "Registrando",
"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.",
"edt_conf_log_level_title": "Nivel de registro",
"edt_conf_net_apiAuth_expl": "Imponer a todas las aplicaciones que utilizan la API de Hyperion a autenticarse contra Hyperion (Excepción ver \"Autenticación de la API local\"). Mayor seguridad, ya que tú controlas el acceso y lo revocas en cualquier momento.",
"edt_conf_net_apiAuth_expl": "Imponer a todas las aplicaciones que utilizan la API de Hyperion a autenticarse contra Hyperion (Excepción: \"Autenticación de la API local\"). Mayor seguridad, ya que se controla el acceso y se revoca en cualquier momento.",
"edt_conf_net_apiAuth_title": "Autenticación de API",
"edt_conf_net_heading_title": "Red",
"edt_conf_net_internetAccessAPI_expl": "Permite el acceso a la API/interfaz web de Hyperion desde Internet, desactivado para mayor seguridad.",
"edt_conf_net_internetAccessAPI_title": "Acceso a la API de Internet",
"edt_conf_net_ipWhitelist_expl": "En su lugar, puedes hacer una lista blanca de direcciones IP permitiendo que todas las conexiones de Internet se conectan a la API/interfaz web de Hyperion.",
"edt_conf_net_ipWhitelist_expl": "Puedes hacer una lista blanca de direcciones IP en vez de permitir que todas las conexiones de internet se conecten a la API/Webinterface de Hyperion.",
"edt_conf_net_ipWhitelist_title": "IPs de la lista blanca",
"edt_conf_net_ip_itemtitle": "IP",
"edt_conf_net_localAdminAuth_expl": "Cuando está habilitado, el acceso de administración desde tu red doméstica necesita una contraseña.",
"edt_conf_net_localAdminAuth_expl": "Cuando está habilitado, el acceso de administración desde tu red local necesita una contraseña.",
"edt_conf_net_localAdminAuth_title": "Autenticación de la API de administración local",
"edt_conf_net_localApiAuth_expl": "Cuando está habilitado, las conexiones de tu red doméstica también necesitan autenticarse contra Hyperion.",
"edt_conf_net_localApiAuth_title": "Autenticación de API local",
"edt_conf_net_restirctedInternetAccessAPI_expl": "Puede restringir el acceso a la API a través de Internet a determinadas IP.",
"edt_conf_net_restirctedInternetAccessAPI_expl": "Puedes restringir el acceso a la API a través de Internet a determinadas IP.",
"edt_conf_net_restirctedInternetAccessAPI_title": "Restringir a las IP",
"edt_conf_pbs_heading_title": "Servidor de Buffers de Protocolo",
"edt_conf_pbs_timeout_expl": "Si no se reciben datos para el período dado, el componente se desactivará (suavemente).",
"edt_conf_pbs_timeout_title": "Tiempo de espera",
"edt_conf_smooth_continuousOutput_expl": "Actualizar los leds incluso si no hay cambio de imagen.",
"edt_conf_smooth_continuousOutput_expl": "Actualizar los LED incluso si no hay cambio de imagen.",
"edt_conf_smooth_continuousOutput_title": "Salida continua",
"edt_conf_smooth_decay_expl": "La velocidad de degradación. 1 es lineal, los valores mayores tienen un efecto más fuerte.",
"edt_conf_smooth_decay_title": "Potencia de degradación",
"edt_conf_smooth_dithering_expl": "Mejorar la precisión del color a altas velocidades de salida alternando entre colores adyacentes.",
"edt_conf_smooth_dithering_title": "Tramado/Dithering",
"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",
@ -388,7 +397,7 @@
"edt_conf_v4l2_cropRight_title": "Cortar derecha",
"edt_conf_v4l2_cropTop_expl": "Cuenta de píxeles en la parte superior que se quitan de la imagen.",
"edt_conf_v4l2_cropTop_title": "Cortar arriba",
"edt_conf_v4l2_device_expl": "La ruta a la captura USB.",
"edt_conf_v4l2_device_expl": "La ruta a la interfaz de captura USB. Ajustado en 'Automático' para la detección automática. Ejemplo: '/dev/video0'",
"edt_conf_v4l2_device_title": "Dispositivo",
"edt_conf_v4l2_framerate_expl": "Los fotogramas soportados por segundo del dispositivo activo",
"edt_conf_v4l2_framerate_title": "Fotogramas por segundo",
@ -413,11 +422,11 @@
"edt_conf_v4l2_signalDetection_title": "Habilitar detección de señal",
"edt_conf_v4l2_sizeDecimation_expl": "El factor de diezmación del tamaño",
"edt_conf_v4l2_sizeDecimation_title": "Diezmación de tamaño",
"edt_conf_v4l2_standard_expl": "Selecciona el estándar de vídeo para tu región.",
"edt_conf_v4l2_standard_expl": "Selecciona el estándar de vídeo de tu región. \"Automático\" mantiene el valor elegido por la interfaz v4l2.",
"edt_conf_v4l2_standard_title": "Estándar de vídeo",
"edt_conf_webc_crtPath_expl": "Ruta al archivo de certificación (el formato debe ser PEM)",
"edt_conf_webc_crtPath_title": "Ruta del certificado",
"edt_conf_webc_docroot_expl": "Ruta raíz de la interfaz web local (sólo para desarrolladores webui)",
"edt_conf_webc_docroot_expl": "Ruta de la raíz de la interfaz web local (sólo para desarrolladores de webui)",
"edt_conf_webc_docroot_title": "Documento raíz",
"edt_conf_webc_heading_title": "Configuración web",
"edt_conf_webc_keyPassPhrase_expl": "Opcional: La clave puede estar protegida con una contraseña",
@ -429,7 +438,7 @@
"edt_dev_auth_key_title": "Token de autenticación",
"edt_dev_enum_sub_min_cool_adjust": "Min. Ajuste fresco",
"edt_dev_enum_sub_min_warm_adjust": "Min. Ajuste caliente",
"edt_dev_enum_subtract_minimum": "Restar mínimo",
"edt_dev_enum_subtract_minimum": "Restar el mínimo",
"edt_dev_enum_white_off": "Blanco apagado",
"edt_dev_general_colorOrder_title": "Orden de bytes RGB",
"edt_dev_general_hardwareLedCount_title": "Recuento de LEDs de hardware",
@ -457,10 +466,12 @@
"edt_dev_spec_dithering_title": "Tintineo",
"edt_dev_spec_dmaNumber_title": "Canal DMA",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Nivel máximo actual",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Umbral de adaptación actual",
"edt_dev_spec_gpioBcm_title": "Pin GPIO",
"edt_dev_spec_gpioMap_title": "Mapeo GPIO",
"edt_dev_spec_gpioNumber_title": "Número GPIO",
"edt_dev_spec_groupId_title": "Id de grupo",
"edt_dev_spec_groupId_title": "ID de grupo",
"edt_dev_spec_header_title": "Ajustes Específicos",
"edt_dev_spec_interpolation_title": "Interpolación",
"edt_dev_spec_intervall_title": "Intervalo",
@ -483,13 +494,13 @@
"edt_dev_spec_order_left_right_title": "2.",
"edt_dev_spec_order_top_down_title": "1.",
"edt_dev_spec_outputPath_title": "Ruta de salida",
"edt_dev_spec_panel_start_position": "Panel de inicio [paneles 0-max]",
"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_title": "Puerto",
"edt_dev_spec_printTimeStamp_title": "Añadir marca de tiempo",
"edt_dev_spec_pwmChannel_title": "Canal PWM",
"edt_dev_spec_restoreOriginalState_title": "Restaurar el estado original de las luces",
"edt_dev_spec_restoreOriginalState_title": "Restaurar el estado original de las luces cuando se desactivan",
"edt_dev_spec_serial_title": "Número de serie",
"edt_dev_spec_spipath_title": "Ruta SPI",
"edt_dev_spec_sslHSTimeoutMax_title": "Máximo tiempo de espera para el contacto con el Streamer",
@ -537,7 +548,7 @@
"edt_eff_colorevel": "Nivel de color",
"edt_eff_colorone": "Color uno",
"edt_eff_colorrandom": "Color aleatório",
"edt_eff_colorshift": "Cambio de Color",
"edt_eff_colorshift": "Turno de Color",
"edt_eff_colorstart": "Color de inicio",
"edt_eff_colorstarttime": "Tiempo para mantener el color de fin",
"edt_eff_colortwo": "Color dos",
@ -556,24 +567,24 @@
"edt_eff_fadeintime": "Tiempo de fundido",
"edt_eff_fadeouttime": "Tiempo de desvanecimiento",
"edt_eff_flag_header": "Banderas",
"edt_eff_flag_header_desc": "Deja que tus leds brillen en los colores de tu país. Puedes seleccionar más de una bandera, que cambiará en función del tiempo de intervalo.",
"edt_eff_flag_header_desc": "Deja que tus LEDs brillen con los colores de tu país. Puedes seleccionar más de una bandera y cambiarán según el tiempo del intervalo.",
"edt_eff_fps": "Fotogramas por segundo",
"edt_eff_frequency": "Frecuencia",
"edt_eff_gif_header": "Sobre GIF",
"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_height": "Altura",
"edt_eff_huechange": "Cambio de color",
"edt_eff_image": "Archivo de imagen",
"edt_eff_interval": "Intervalo",
"edt_eff_knightrider_header": "Coche Fantástico",
"edt_eff_knightrider_header_desc": "¡K.I.T.T ha vuelto! El escáner frontal del muy conocidocoche, esta vez no sólo en rojo.",
"edt_eff_knightrider_header_desc": "¡K.I.T.T ha vuelto! El escáner frontal del muy conocido coche, esta vez no sólo en rojo.",
"edt_eff_ledlist": "Lista Led",
"edt_eff_ledtest_header": "Prueba de Led",
"edt_eff_ledtest_header_desc": "Salida giratoria: Rojo, Azul, Verde, Blanco, Negro",
"edt_eff_length": "Longitud",
"edt_eff_lightclock_header": "Reloj",
"edt_eff_lightclock_header_desc": "¡Un reloj real como la luz! Ajusta los colores de las horas, minutos, segundos. También está disponible un marcador de 3/6/9/12 en punto opcional. En caso de que el reloj esté mal, debes comprobar el reloj del sistema.",
"edt_eff_maintain_end_color": "Mantener color de fin",
"edt_eff_lightclock_header": "Reloj de luz",
"edt_eff_lightclock_header_desc": "¡Un verdadero reloj como la luz! Ajustar los colores de las horas, los minutos, los segundos. También hay disponible un marcador opcional de 3/6/9/12 en punto. En caso de que el reloj esté equivocado, debes revisar el reloj de tu sistema.",
"edt_eff_maintain_end_color": "Mantener color final",
"edt_eff_margin": "Margen",
"edt_eff_markerDepth": "Profundidad del marcador",
"edt_eff_markerEnable": "Mostrar marcador",
@ -590,8 +601,8 @@
"edt_eff_police_header": "Policía",
"edt_eff_police_header_desc": "Luces como un coche de policía en acción",
"edt_eff_postcolor": "Post color",
"edt_eff_rainbowmood_header": "Ánimo Arcoiris",
"edt_eff_rainbowmood_header_desc": "Todos los leds estado arco iris",
"edt_eff_rainbowmood_header": "Atmósfera de arco iris",
"edt_eff_rainbowmood_header_desc": "Todos los LEDs de atmósfera de arco iris",
"edt_eff_randomCenter": "Centro aleatorio",
"edt_eff_random_header": "Aleatorio",
"edt_eff_random_header_desc": "Pixel Punto, punto, punto...",
@ -609,18 +620,18 @@
"edt_eff_snake_header": "Serpiente",
"edt_eff_snake_header_desc": "¿Dónde hay algo para comer?",
"edt_eff_sparks_header": "Chispas",
"edt_eff_sparks_header_desc": "Estrella-Burbujeante, elege entre un color estático o aleatorio. También puedes ajustar el brillo, la saturación y la velocidad.",
"edt_eff_sparks_header_desc": "Estrella-Burbujeante, elige entre un color estático o aleatorio. También puedes ajustar el brillo, la saturación y la velocidad.",
"edt_eff_speed": "Velocidad",
"edt_eff_swirl_header": "Remolino del color",
"edt_eff_swirl_header_desc": "Un remolino con colores personalizado. Los colores se extienden hasta 360°, entre colores se calcularán turnos. Adicionalmente puedes añadir un segundo remolino en la parte superior, ¡ten en cuenta que necesita transparencia parcial! Sugerencia: Una reapertura del mismo color da como resultado un área de color mas \"matizada\" y un área de cambio de color reducida.",
"edt_eff_swirl_header_desc": "Un remolino con colores personalizados. Los colores se extienden incluso a 360°, entre los colores se calcularán los cambios. Adicionalmente puedes añadir un segundo remolino en la parte superior, ten en cuenta que necesitas una transparencia parcial! Sugerencia: Una repetición del mismo color resulta en un área de color \"más alta\" y un área de cambio de color reducido.",
"edt_eff_systemshutdown_header": "Apagado del Sistema",
"edt_eff_systemshutdown_header_desc": "Una animación corta con probablemente un apagado real del sistema",
"edt_eff_traces_header": "Rastros de Color",
"edt_eff_traces_header": "Trazas de Color",
"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_waves_header": "Ondas",
"edt_eff_waves_header_desc": "¡Ondas de color! Elije tus colores, el tiempo de rotación, la dirección de inversión y mucho más.",
"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",
"edt_eff_whitelevel": "Nivel de blanco",
"edt_eff_x-mas_header": "Navidad",
@ -709,11 +720,13 @@
"general_comp_PROTOSERVER": "Servidor de Buffers de Protocolo",
"general_comp_SMOOTHING": "Suavizado",
"general_comp_V4L": "Captura USB",
"general_country_cn": "China",
"general_country_de": "Alemania",
"general_country_es": "España",
"general_country_fr": "Francia",
"general_country_it": "Italia",
"general_country_nl": "Holanda",
"general_country_ru": "Rusia",
"general_country_uk": "Reino Unido",
"general_country_us": "Estados Unidos",
"general_speech_cs": "Czech",
@ -725,9 +738,11 @@
"general_speech_nl": "Holandés",
"general_speech_pl": "Polaco",
"general_speech_ro": "Rumano",
"general_speech_ru": "Ruso",
"general_speech_sv": "Sueco",
"general_speech_tr": "Turco",
"general_speech_vi": "Vietnamita",
"general_speech_zh-CN": "Chino (simplificado)",
"general_webui_title": "Hyperion - Configuración Web",
"general_wiki_moreto": "Más información sobre \"$1\" en nuestra Wiki",
"infoDialog_checklist_title": "¡Lista!",
@ -736,14 +751,14 @@
"infoDialog_general_error_title": "Error",
"infoDialog_general_success_title": "Éxito",
"infoDialog_general_warning_title": "Advertencia",
"infoDialog_import_comperror_text": ":( Tu navegador no admite una importación. Inténtalo de nuevo con otro navegador.",
"infoDialog_import_comperror_text": "¡Lástima! Tu navegador no admite una importación. Inténtalo de nuevo con otro navegador.",
"infoDialog_import_confirm_text": "¿Estás seguro de importar \"$1\"? ¡Este proceso no puede revertirse!",
"infoDialog_import_confirm_title": "Confirmar importación",
"infoDialog_import_hyperror_text": "No se puede importar el archivo de configuración seleccionado \"$1\". ¡No es compatible con Hyperion 2.0 y superior!",
"infoDialog_import_jsonerror_text": "El archivo de configuración seleccionado \"$1\" no es un archivo .json o está dañado. Mensaje de error: ($2)",
"infoDialog_wizrgb_text": "Tu Orden de Bytes RGB ya está bien ajustado.",
"infoDialog_writeconf_error_text": "Error al guardar la configuración.",
"infoDialog_writeimage_error_text": "¡El archivo seleccionado \"$1\" no es un archivo de imagen o está dañado! Por favor, seleccione otro archivo de imagen.",
"infoDialog_writeconf_error_text": "Error al guardar tu configuración.",
"infoDialog_writeimage_error_text": "¡El archivo seleccionado \"$1\" no es un archivo de imagen o está dañado! Por favor, selecciona otro archivo de imagen.",
"info_404": "¡La pagina que buscas no está disponible!",
"info_conlost_label_autorecon": "Nos volvemos a conectar después de que Hyperion esté disponible.",
"info_conlost_label_autorefresh": "Esta página se actualizará automáticamente.",
@ -756,7 +771,7 @@
"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 actualmente...",
"info_restart_title": "Reinicia ahora...",
"main_ledsim_btn_togglelednumber": "Números LED",
"main_ledsim_btn_toggleleds": "Mostrar LEDs",
"main_ledsim_btn_togglelivevideo": "video en vivo",
@ -779,7 +794,7 @@
"main_menu_system_token": "Sistema",
"main_menu_update_token": "Actualizar",
"main_menu_webconfig_token": "Configuración web",
"remote_adjustment_intro": "Modifica el color/brillo/linealización durante el tiempo de ejecución. $1",
"remote_adjustment_intro": "Modifica el color/brillo/compensación durante el tiempo de ejecución. $1",
"remote_adjustment_label": "Ajustes de color",
"remote_color_button_reset": "Restablecer Color/Efecto",
"remote_color_intro": "Establecer un efecto o color. También se enumeran los efectos creados uno mismo (si están disponibles). $1",
@ -802,7 +817,7 @@
"remote_input_sourceactiv_btn": "Entrada activa",
"remote_input_status": "Estado/Acción",
"remote_losthint": "Nota: Todos los cambios se pierden después de un reinicio.",
"remote_maptype_intro": "Cambie el tipo de mapeo durante el tiempo de ejecución. $1",
"remote_maptype_intro": "Normalmente la disposición de los leds define qué leds cubren un área específica de la imagen, puedes cambiarlo aquí: $1.",
"remote_maptype_label": "Tipo de Mapeo",
"remote_maptype_label_multicolor_mean": "Multicolor",
"remote_maptype_label_unicolor_mean": "Unicolor",
@ -820,7 +835,7 @@
"support_label_donate": "Dona o utiliza nuestros enlaces de afiliados",
"support_label_donationpp": "Donación:",
"support_label_fbtext": "Comparte nuestra página de Hyperion en Facebook y obten un aviso cuando se publiquen nuevas actualizaciones",
"support_label_forumtext": "Casos de muestra, discusiones, ayuda y mucho más",
"support_label_forumtext": "Casos de ejemplo, discusiones, ayuda y mucho más",
"support_label_forumtitle": "Foro",
"support_label_ggtext": "¡Haznos un círculo en Google+!",
"support_label_ghtext": "Visitanos en Github",
@ -837,34 +852,41 @@
"support_label_yttext": "¿Aburrido de las fotos? ¡Comprueba nuestro canal de Youtube!",
"update_button_changelog": "Registro completo de cambios",
"update_button_install": "Instalar",
"update_error_getting_versions": "Tuvimos problemas para determinar las versiones disponibles.",
"update_error_getting_versions": "Tuvimos problemas para determinar la última versión disponible.",
"update_label_description": "Descripción:",
"update_label_intro": "Descripción general de todas las versiones disponibles de Hyperion. En la parte superior puedes actualizar o degradar tu versión de Hyperion siempre que lo desees. Ordenado de nuevo a más antiguo",
"update_label_type": "Tipo:",
"update_no_updates_for_branch": "No hay actualizaciones para el canal de versión seleccionado.",
"update_versreminder": "Tu versión: $1",
"wiz_cc_adjustgamma": "Gamma: Lo que tienes que hacer es ajustar los niveles gamma de cada canal hasta que tengas la misma cantidad percibida de cada canal. Por ejemplo, si su Gris es un poco rojizo, significa que tiene que aumentar el gamma rojo para reducir la cantidad de rojo (más gamma, menos cantidad de color).",
"wiz_atmoorb_desc2": "Ahora elige qué Orbes deben ser añadidos. La posición asigna la lámpara a una posición específica en tu \"imagen\". No se añadirán las lámparas desactivadas. Para identificar las lámparas individuales, pulsa el botón de la derecha.",
"wiz_atmoorb_intro1": "Este asistente configura Hyperion para AtmoOrbs. Las características son la detección automática de AtmoOrb, ajustando cada luz a una posición específica en su imagen o desactivarla y ¡optimizar la configuración de Hyperion automáticamente! En resumen: ¡Todo lo que necesitas son algunos clics y listo!",
"wiz_atmoorb_title": "Asistente AtmoOrb",
"wiz_cc_adjustgamma": "Gamma: Lo que tienes que hacer es ajustar los niveles de gamma de cada canal hasta que tengas la misma cantidad percibida de cada canal. Pista: ¡Neutral es 1.0! Por ejemplo, si tu gris es un poco rojizo significa que tienes que aumentar la gamma del rojo para reducir la cantidad de rojo (a mayor gamma, menor cantidad de color).",
"wiz_cc_adjustit": "Ajusta tu \"$1\", hasta que estés agusto con él. Ten en cuenta: Cuanto más lo ajustes fuera del valor predeterminado, el espectro de color será limitado (también para todos los colores intermedios). Dependiendo del espectro de color de TV/LED, los resultados variarán.",
"wiz_cc_backlight": "Adicionalmente podrías definir una retroiluminación para solucionar \"malos colores\" en áreas casi oscuras o si no te gusta el cambio entre color y apagado durante la observación. Adicionalmente se podría definir si debe haber algún color en ella o simplemente blanco. Esto se desactiva durante el estado \"Off\", \"Color\" y \"Efecto\".",
"wiz_cc_backlight": "Además, puedes definir una luz de fondo para distinguir los \"colores malos\" en las zonas casi oscuras o si no te gusta el cambio entre el color y el apagado durante el visionado. Además podrías definir si debería haber algún color en él o sólo blanco. Esto se desactiva durante el estado \"Apagado\", \"Color\" y \"Efecto\".",
"wiz_cc_btn_stop": "Parar vídeo",
"wiz_cc_btn_switchpic": "Cambiar imagen",
"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 utilizando Kodi, las imágenes de calibración y los videos se pueden enviar directamente a kodi sin más tareas de tu lado. Si no, necesitas descargar estos archivos tú mismo y aplicarlos, si el asistente lo desea.",
"wiz_cc_kodicon": "Servidor web Kodi encontrado, proceder con el soporte de Kodi.",
"wiz_cc_kodidiscon": "No se encuentra el servidor web de Kodi, procede sin el soporte de Kodi.",
"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_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",
"wiz_cc_kwebs": "Servidor web Kodi (IP:PUERTO)",
"wiz_cc_kwebs": "Servidor web Kodi (Nombre de Host o IP)",
"wiz_cc_lettvshow": "Deja que tu TV muestre la siguiente imagen: $1",
"wiz_cc_lettvshowm": "Comprueba esto con las siguientes imágenes: $1",
"wiz_cc_link": "¡Haz click en mi!",
"wiz_cc_morethanone": "Tienes más de un perfil, elije el perfil que deseas calibrar.",
"wiz_cc_summary": "Una conclusión de su configuración. Durante la reproducción de vídeo, puede cambiar o probar valores de nuevo. Si está hecho, haga clic en guardar.",
"wiz_cc_summary": "Una conclusión de tu configuración. Durante la reproducción de vídeo, puedes cambiar o probar valores de nuevo. Si has terminado, haz clic en guardar.",
"wiz_cc_testintro": "¡Tiempo para una prueba real!",
"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_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",
"wiz_cololight_title": "Asistente Cololight",
"wiz_guideyou": "El $1 te guiará a través de los ajustes. Simplemente ¡presiona el botón!",
"wiz_hue_blinkblue": "Permite a ID $1 encender el azul",
"wiz_hue_clientkey": "Llave de cliente:",
@ -876,7 +898,7 @@
"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.",
"wiz_hue_e_desc2": "Ahora elige tu grupo de entretenimiento, que tiene todas tus luces dentro para usarlas con Hyperion.",
"wiz_hue_e_desc3": "Ahora puedes elegir en qué posición la respectiva lámpara debe estar \"en la foto\". Se hizo una preselección de la posición basada en las posiciones configuradas de las luces del grupo de entretenimiento. Esto es sólo una recomendación y puede ser personalizada como se desee. Por lo tanto, puede resaltarlas brevemente haciendo clic en el botón derecho para mejorar la selección.",
"wiz_hue_e_intro1": "Este asistente configura Hyperion para el conocido sistema de entretenimiento Philips Hue. Las características son la detección automática de Hue Bridge, la creación de teclas de usuario y cliente, la selección de grupos de entretenimiento y la configuración de las luces de grupo en una posición específica en la imagen y la sintonización de la configuración de Hyperion de forma automática! En resumen: ¡Sólo necesitas algunos clics y listo!",
"wiz_hue_e_intro1": "Este asistente configura Hyperion para el conocido sistema de entretenimiento Philips Hue. Las características son: Detección automática de Hue Bridge, creación de teclas de usuario y cliente, selección de grupos de entretenimiento, ajuste de luces de grupo a una posición específica en la imagen y optimización de la configuración de Hyperion de forma automática! En resumen: ¡Sólo necesitas algunos clics y listo!",
"wiz_hue_e_noapisupport": "El Asistente ha desactivado el soporte de la API de entretenimiento y continuará en el modo clásico.",
"wiz_hue_e_noapisupport_hint": "La opción \"<b>Usar API de Entretenimiento Hue</b>\" estaba desmarcada.",
"wiz_hue_e_noegrpids": "No se han definido grupos de entretenimiento en este puente de Hue.",
@ -886,7 +908,7 @@
"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_user": "Usuario no encontrado, crea uno nuevo debajo o introduce un ID de usuario válido",
"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_noids": "Este puente de Matiz no tiene bombillas/tiras, por favor, emparéjalos antes con las aplicaciones de Hue",
@ -898,6 +920,7 @@
"wiz_identify_light": "Identificar $1",
"wiz_ids_disabled": "Desactivado",
"wiz_ids_entire": "Toda la imagen",
"wiz_noLights": "¡No se encontró $1! Por favor, conecta las luces a la red o configúralas manualmente.",
"wiz_pos": "Posición/Estado",
"wiz_rgb_expl": "El punto de color cambia cada x segundos el color (rojo, verde), al mismo tiempo que tus leds cambian el color también. Responde las preguntas en la parte inferior para verificar/corregir tu orden de bytes.",
"wiz_rgb_intro1": "Este asistente te guiará a través del proceso de búsqueda del orden de color correcto para tus leds. Haz clic en continuar para comenzar.",
@ -910,7 +933,6 @@
"wiz_wizavail": "Asistente disponible",
"wiz_yeelight_desc2": "Ahora elige qué lámparas deben añadirse. La posición asigna la lámpara a una posición específica en su \"imagen\". Las lámparas desactivadas no se añadirán. Para identificar las lámparas individuales, pulsa el botón de la derecha.",
"wiz_yeelight_intro1": "Este asistente configura el Hyperion para el sistema Yeelight. Las características son la detección automática de los Yeelights, ajustando cada luz a una posición específica en su imagen o desactivarla y ¡ajustar la configuración de Hyperion automáticamente! En resumen: ¡Todo lo que necesitas son algunos clics y listo!",
"wiz_yeelight_noLights": "¡No se encontraron Yeelights! Por favor, conecta las luces a la red o configúralas manualmente.",
"wiz_yeelight_title": "Asistente Yeelight",
"wiz_yeelight_unsupported": "Sin soporte"
}

View File

@ -252,7 +252,6 @@
"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_device_title": "Appareil",
"edt_conf_fg_frequency_Hz_title": "Fréquence de capture",
"edt_conf_fg_heading_title": "Platform de capture",
"edt_conf_fg_height_title": "Hauteur",

View File

@ -295,7 +295,6 @@
"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).",
"edt_conf_fbs_timeout_title": "Timeout",
"edt_conf_fg_device_title": "Dispositivo",
"edt_conf_fg_display_expl": "Seleziona quale desktop dovrebbe essere catturato (setup multi monitor)",
"edt_conf_fg_display_title": "Display",
"edt_conf_fg_frequency_Hz_expl": "Quanto velocemente vengono catturare le immagini",
@ -705,11 +704,13 @@
"general_comp_PROTOSERVER": "Server Protocol Buffers",
"general_comp_SMOOTHING": "Sfumatura",
"general_comp_V4L": "Cattura USB",
"general_country_cn": "Cina",
"general_country_de": "Germania",
"general_country_es": "Spagna",
"general_country_fr": "Francia",
"general_country_it": "Italia",
"general_country_nl": "Olanda",
"general_country_ru": "Russia",
"general_country_uk": "Regno Unito",
"general_country_us": "Stati Uniti",
"general_speech_cs": "Czech",
@ -721,9 +722,11 @@
"general_speech_nl": "Olandese",
"general_speech_pl": "Polacco",
"general_speech_ro": "Rumeno",
"general_speech_ru": "Russo",
"general_speech_sv": "Svedese",
"general_speech_tr": "Turco",
"general_speech_vi": "Vietnamita",
"general_speech_zh-CN": "Cinese (semplificanto)",
"general_webui_title": "Hyperion - Configurazione Web",
"general_wiki_moreto": "Più informazioni su '$1' sulla nostra Wiki",
"infoDialog_checklist_title": "Lista!",
@ -903,7 +906,6 @@
"wiz_wizavail": "Assistente disponibile",
"wiz_yeelight_desc2": "Scegli quale lampade devono essere aggiunte. La posizione assegna la lampada a una specifica posizione nella tua \"immagine\". Lampade disabilitate non saranno aggiunte. Per identificare una singola lampada premi il bottone sulla destra.",
"wiz_yeelight_intro1": "Questi assistenti Configurano Hyperion per il sistema Yeelight. Le funzionalità sono: rilevamento automatico Yeelights, assegnazione di ciascuna luce a una specifica posizione nella tua immagine, disabilitazione luci, regolazione automatica delle impostazioni di Hyperion! In breve: tutto ciò che ti serve sono un paio di click e sei pronto!",
"wiz_yeelight_noLights": "Nessuna Yeelight trovata! Connetti le luci alla rete o configurale manualmente.",
"wiz_yeelight_title": "Assistente Yeelight",
"wiz_yeelight_unsupported": "Non supportato"
}

View File

@ -296,7 +296,6 @@
"edt_conf_fbs_heading_title": "Flatbuffers Server",
"edt_conf_fbs_timeout_expl": "Als er voor een bepaalde tijd geen data binnenkomt, zal de component worden uitgeschakeld.",
"edt_conf_fbs_timeout_title": "Timeout",
"edt_conf_fg_device_title": "Apparaat",
"edt_conf_fg_display_expl": "Selecteer welk scherm moet worden opgenomen (multi-scherm setup)",
"edt_conf_fg_display_title": "Scherm",
"edt_conf_fg_frequency_Hz_expl": "Hoe snel nieuw beeld wordt opgenomen",
@ -910,7 +909,6 @@
"wiz_wizavail": "Wizard beschikbaar",
"wiz_yeelight_desc2": "Kies nu welke lampen moeten worden toegevoegd. De positie wijst de lamp toe aan een specifieke positie op uw \"foto\". Uitgeschakelde lampen worden niet toegevoegd. Druk op de knop aan de rechterkant om afzonderlijke lampen te identificeren.",
"wiz_yeelight_intro1": "Deze wizards configureren Hyperion voor het Yeelight-systeem. Functies zijn de automatische detectie van de Yeelighs, waarbij elk licht op een specifieke positie op uw foto wordt ingesteld of uitgeschakeld en de Hyperion-instellingen automatisch worden afgestemd! Kortom: u heeft slechts enkele klikken nodig en u bent klaar!",
"wiz_yeelight_noLights": "Geen Yeelights gevonden! Zorg ervoor dat de lampen op het netwerk zijn aangesloten of configureer ze mannelijk.",
"wiz_yeelight_title": "Yeelight Wizard",
"wiz_yeelight_unsupported": "Niet ondersteund"
}

View File

@ -159,7 +159,7 @@
"dashboard_componentbox_label_status": "Status",
"dashboard_componentbox_label_title": "Status komponentów",
"dashboard_infobox_label_currenthyp": "Twoja wersja Hyperion:",
"dashboard_infobox_label_disableh": "Wyłącz instancję: 1 $",
"dashboard_infobox_label_disableh": "Wyłącz instancję: $1",
"dashboard_infobox_label_enableh": "Uruchom Hyperion",
"dashboard_infobox_label_instance": "Instancja:",
"dashboard_infobox_label_latesthyp": "Najnowsza wersja Hyperion:",
@ -296,7 +296,6 @@
"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.",
"edt_conf_fbs_timeout_title": "Timeout",
"edt_conf_fg_device_title": "Urządzenie",
"edt_conf_fg_display_expl": "Wybierz pulpit, który ma zostać przechwycony (konfiguracja wielu monitorów)",
"edt_conf_fg_display_title": "Pulpit",
"edt_conf_fg_frequency_Hz_expl": "Jak często rejestrowane są nowe zdjęcia",
@ -703,12 +702,12 @@
"general_comp_BLACKBORDER": "Usuń czarne pasy",
"general_comp_BOBLIGHTSERVER": "Serwer Boblight",
"general_comp_FLATBUFSERVER": "Serwer FlatBuffers",
"general_comp_FORWARDER": "Przekazywanie wejścia",
"general_comp_GRABBER": "Przechwytywanie pulpitu",
"general_comp_FORWARDER": "Przekazyw. wejścia",
"general_comp_GRABBER": "Przechwytyw. pulpitu",
"general_comp_LEDDEVICE": "Urządzenie LED",
"general_comp_PROTOSERVER": "Serwer protokołu buforowania",
"general_comp_SMOOTHING": "Wygładzanie animacji",
"general_comp_V4L": "Przechwytywanie USB",
"general_comp_V4L": "Przechwytyw. USB",
"general_country_de": "Niemcy (Germany)",
"general_country_es": "Hiszpania (Spain)",
"general_country_fr": "Francja (France)",
@ -843,6 +842,9 @@
"update_label_type": "Typ:",
"update_no_updates_for_branch": "Brak aktualizacji dla wybranej wersji kanału.",
"update_versreminder": "Twoja wersja: $1",
"wiz_atmoorb_desc2": "Teraz wybierz, które kule mają zostać dodane. Pozycja przypisuje lampę do określonej pozycji na twoim \"obrazie\". Wyłączone lampy nie zostaną dodane. Aby zidentyfikować pojedyncze lampy, naciśnij przycisk po prawej stronie.",
"wiz_atmoorb_intro1": "Ten kreator konfiguruje Hyperion dla AtmoOrbs. Funkcje obejmują automatyczne wykrywanie AtmoOrb, ustawianie każdego światła w określonej pozycji w obrazie lub wyłączanie go i automatyczne dostrajanie ustawień Hyperion! Krótko mówiąc: wystarczy kilka kliknięć i gotowe!",
"wiz_atmoorb_title": "Kreator AtmoOrb",
"wiz_cc_adjustgamma": "Gamma: Musisz dostosować poziomy gamma każdego kanału, aż uzyskasz taką samą postrzeganą ilość dla każdego kanału. Wskazówka: Neutralny to 1.0! Na przykład, jeśli twoja szarość jest nieco czerwonawa, oznacza to, że musisz zwiększyć czerwoną gamma, aby zmniejszyć ilość czerwieni (im więcej gamma, tym mniej koloru).",
"wiz_cc_adjustit": "Dostosuj swoje „$1”, aż będziesz z niego zadowolony. Zwróć uwagę: Im więcej zmienisz od wartości domyślnej, tym bardziej zmniejszy się dostępne spektrum kolorów (wpływa to również na kolory pomiędzy). W zależności od spektrum kolorów telewizora / LED wyniki mogą się różnić.",
"wiz_cc_backlight": "Dodatkowo możesz zdefiniować podświetlenie, aby uporządkować „złe kolory” w prawie ciemnych obszarach lub jeśli nie lubisz przełączać między kolorem a wyłączaniem podczas oglądania. Możesz również zdefiniować konkretny kolor, który będzie używany jako podświetlenie. Jest to wyłączone w stanach „Wył.”, „Kolor” i „Efekt”.",
@ -910,7 +912,6 @@
"wiz_wizavail": "Kreator dostępny",
"wiz_yeelight_desc2": "Teraz wybierz, które lampy chcesz dodać. Pozycja przypisuje lampę do określonej pozycji na twoim \"obrazie\". Wyłączone lampy nie zostaną dodane. Aby zidentyfikować pojedyncze lampy, naciśnij przycisk po prawej stronie.",
"wiz_yeelight_intro1": "Ten kreator konfiguruje Hyperion dla systemu Yeelight. Funkcje obejmują automatyczne wykrywanie Yeelighów, ustawianie każdego światła w określonej pozycji na zdjęciu lub wyłączanie go i automatyczne dostrajanie ustawień Hyperiona! Krótko mówiąc: wystarczy kilka kliknięć i gotowe!",
"wiz_yeelight_noLights": "Nie znaleziono Yeelights! Podłącz światła do sieci lub skonfiguruj je ręcznie.",
"wiz_yeelight_title": "Kreator Yeelight",
"wiz_yeelight_unsupported": "Niewspierane"
}

View File

@ -95,6 +95,8 @@
"conf_leds_layout_ma_position": "Inmatning",
"conf_leds_layout_ma_vert": "Vertikal",
"conf_leds_layout_matrix": "Matrislayout (LED-vägg)",
"conf_leds_layout_pbl": "Punkt, vänster botten",
"conf_leds_layout_pbr": "Punkt, höger botten",
"conf_leds_layout_peview": "Förhandsvisning av LED-layout",
"conf_leds_layout_preview_l1": "Detta är din första LED (ingångsposition)",
"conf_leds_layout_preview_l2": "Detta visualiserar datariktningen (andra/tredje led)",
@ -103,8 +105,11 @@
"conf_leds_layout_preview_originMA": "Skapad från Matrislayout (LED-vägg)",
"conf_leds_layout_preview_originTEXT": "Skapad från: Textfält",
"conf_leds_layout_preview_totalleds": "Totalt antal LEDs: $1",
"conf_leds_layout_ptl": "Punkt, vänster toppen",
"conf_leds_layout_ptlh": "Horisontell",
"conf_leds_layout_ptln": "Trapespunkter",
"conf_leds_layout_ptlv": "Vertikal",
"conf_leds_layout_ptr": "Punkt, höger toppen",
"conf_leds_layout_textf1": "Detta textfält visar (som standard) din nuvarande laddade layout och skrivs över om du genererar en ny med alternativen ovan. Valfritt kan du utföra ytterligare redigeringar.",
"conf_leds_nav_label_ledcontroller": "LED-styrenhet",
"conf_leds_nav_label_ledlayout": "LED layout",
@ -169,6 +174,7 @@
"dashboard_label_intro": "Denna sida ger dig en snabb överblick över din Hyperion-installation och visar dig de senaste nyheterna från Hyperion-bloggen.",
"dashboard_message_default_password": "Standardlösenordet för webbanvändargränssnittet är inställt. Vi rekommenderar starkt att ändra detta.",
"dashboard_message_default_password_t": "Webbanvändargränssnittets standardlösenord är inställt",
"dashboard_message_do_not_show_again": "Visa inte detta meddelande igen",
"dashboard_message_global_setting": "Inställningarna på den här sidan beror inte på en specifik instans. Ändringar lagras globalt för alla instanser.",
"dashboard_message_global_setting_t": "Instansoberoende inställning",
"dashboard_newsbox_label_title": "Hyperion-Blog",
@ -230,7 +236,7 @@
"edt_conf_color_id_expl": "Tilldelat användarnamn",
"edt_conf_color_id_title": "ID",
"edt_conf_color_imageToLedMappingType_expl": "Om inte \"flerfärgad\" kommer din LED-layout att skrivas över med en annan bildtilldelning",
"edt_conf_color_imageToLedMappingType_title": "LED-tilldelningstyp",
"edt_conf_color_imageToLedMappingType_title": "LED-områdestilldelning",
"edt_conf_color_leds_expl": "Tilldelas alla (*) lysdioder eller endast till vissa LED-nummer (0-17).",
"edt_conf_color_leds_title": "LED index",
"edt_conf_color_magenta_expl": "Det kalibrerade magentavärdet.",
@ -257,8 +263,18 @@
"edt_conf_enum_bbdefault": "Standard",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Botten upp",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Färg",
"edt_conf_enum_custom": "Anpassad",
"edt_conf_enum_dl_error": "Fel",
"edt_conf_enum_dl_informational": "Informativ",
"edt_conf_enum_dl_nodebug": "Ingen felsökning",
"edt_conf_enum_dl_statechange": "Tillståndsförändring",
"edt_conf_enum_dl_verbose": "Omfattande",
"edt_conf_enum_dl_verbose1": "Riklighetsnivå 1",
"edt_conf_enum_dl_verbose2": "Riklighetsnivå 2",
"edt_conf_enum_dl_verbose3": "Riklighetsnivå 3",
"edt_conf_enum_effect": "Effekt",
"edt_conf_enum_gbr": "GBR",
"edt_conf_enum_grb": "GRB",
@ -273,13 +289,13 @@
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Höger till vänster",
"edt_conf_enum_top_down": "Top ner",
"edt_conf_enum_transeffect_smooth": "Mjuk",
"edt_conf_enum_transeffect_sudden": "Plötslig",
"edt_conf_enum_unicolor_mean": "Enfärg",
"edt_conf_fbs_heading_title": "Flatbuffers-server",
"edt_conf_fbs_timeout_expl": "Om ingen data tas emot under den angivna tiden inaktiveras komponenten (tillfälligt)",
"edt_conf_fbs_timeout_title": "Timeout",
"edt_conf_fg_device_title": "Enhet",
"edt_conf_fg_display_expl": "Ange vilket skrivbord du vill spela in från. (Multi Monitor Setup)",
"edt_conf_fg_display_title": "Visa",
"edt_conf_fg_frequency_Hz_expl": "Hur ofta nya bilder tas",
@ -430,8 +446,12 @@
"edt_dev_spec_brightnessMax_title": "Högsta ljusstyrka",
"edt_dev_spec_brightnessMin_title": "Minsta ljusstyrka",
"edt_dev_spec_brightnessThreshold_title": "Minsta signalstyrka för ljusstyrka",
"edt_dev_spec_chanperfixture_title": "Kanaler per fixtur",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Klientnyckel",
"edt_dev_spec_colorComponent_title": "Färgkomponent",
"edt_dev_spec_debugLevel_title": "Felsökningsnivå för Streameranslutning",
"edt_dev_spec_debugStreamer_title": "Streamerfelsökning",
"edt_dev_spec_delayAfterConnect_title": "Försening efter anslutning",
"edt_dev_spec_dithering_title": "Ditrering",
"edt_dev_spec_dmaNumber_title": "DMA-kanal",
@ -439,6 +459,7 @@
"edt_dev_spec_gpioBcm_title": "GPIO-stift",
"edt_dev_spec_gpioMap_title": "GPIO-kartläggning",
"edt_dev_spec_gpioNumber_title": "GPIO-nummer",
"edt_dev_spec_groupId_title": "Grupp-ID",
"edt_dev_spec_header_title": "Specifika inställningar",
"edt_dev_spec_interpolation_title": "Interpolation",
"edt_dev_spec_intervall_title": "Intervall",
@ -458,7 +479,11 @@
"edt_dev_spec_networkDevicePort_title": "Port",
"edt_dev_spec_numberOfLeds_title": "Antal LEDs",
"edt_dev_spec_orbIds_title": "Sfär-ID(n)",
"edt_dev_spec_order_left_right_title": "2.",
"edt_dev_spec_order_top_down_title": "1.",
"edt_dev_spec_outputPath_title": "Sökväg",
"edt_dev_spec_panel_start_position": "Startpanel [0-max-panel]",
"edt_dev_spec_panelorganisation_title": "Panelnumreringssekvens",
"edt_dev_spec_pid_title": "PID",
"edt_dev_spec_port_title": "Port",
"edt_dev_spec_printTimeStamp_title": "Lägg till tidsstämpel",
@ -466,13 +491,19 @@
"edt_dev_spec_restoreOriginalState_title": "Återställ lampans ursprungliga tillstånd när den inaktiveras",
"edt_dev_spec_serial_title": "Serienummer",
"edt_dev_spec_spipath_title": "SPI-väg",
"edt_dev_spec_sslHSTimeoutMax_title": "Maximal Streamer-handskakningstimeout",
"edt_dev_spec_sslHSTimeoutMin_title": "Streamer-handskakningstimeout minimum",
"edt_dev_spec_sslReadTimeout_title": "Streamer-avläsningstimeout",
"edt_dev_spec_switchOffOnBlack_title": "Stäng av när svart",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Stäng av, under minimum",
"edt_dev_spec_targetIpHost_title": "Mål IP/värdnamn",
"edt_dev_spec_targetIp_title": "Mål-IP",
"edt_dev_spec_transeffect_title": "Övergångseffekt",
"edt_dev_spec_transistionTimeExtra_title": "Extra mörkertid",
"edt_dev_spec_transistionTime_title": "Övergångstid",
"edt_dev_spec_uid_title": "UID",
"edt_dev_spec_universe_title": "Universal",
"edt_dev_spec_useEntertainmentAPI_title": "Använd Hue Entertainment API\n",
"edt_dev_spec_useOrbSmoothing_title": "Sfärisk utjämning",
"edt_dev_spec_useRgbwProtocol_title": "Använd RGBW-protokoll",
"edt_dev_spec_username_title": "Användarnamn",
@ -688,11 +719,14 @@
"general_speech_de": "Tyska",
"general_speech_en": "Engelska",
"general_speech_es": "Spanska",
"general_speech_fr": "Franska",
"general_speech_it": "Italienska",
"general_speech_nl": "Holländska",
"general_speech_pl": "Polska",
"general_speech_ro": "Rumänska",
"general_speech_sv": "Svenska",
"general_speech_tr": "Turkiska",
"general_speech_vi": "Vietnamesiska",
"general_webui_title": "Hyperion - Webbkonfiguration",
"general_wiki_moreto": "Mer information om \"$1\" finns i vår",
"infoDialog_checklist_title": "Checklista!",
@ -808,6 +842,9 @@
"update_label_type": "Typ:",
"update_no_updates_for_branch": "Inga uppdateringar för vald versionskanal.",
"update_versreminder": "Din version: $1",
"wiz_atmoorb_desc2": "Välj vilka kulor som ska läggas till. Positionen tilldelar lampan till en specifik position på din \"bild\". Inaktiverade lampor kommer inte att läggas till. För att identifiera enstaka lampor, tryck på knappen till höger.",
"wiz_atmoorb_intro1": "Den här guiden konfigurerar Hyperion för AtmoOrbs. Funktionerna är den automatiska detekteringen av AtmoOrb, genom att ställa in varje ljus till en specifik position på din bild eller inaktivera den och ställ in Hyperion-inställningarna automatiskt! Kort sagt: Några klick och du är klar!",
"wiz_atmoorb_title": "AtmoOrb-Guide",
"wiz_cc_adjustgamma": "Gamma: Du ställer in varje gammakanal så att den \"gråa lutningen\" på lysdioderna inte ser grön-/röd-/blåaktig ut. Tips: Neutral är 1,0! T.ex.: Om grå är lite rödaktig betyder det att du måste öka din gamma för röd för att minska mängden röd (mer gamma ger mindre färg).",
"wiz_cc_adjustit": "Justera din \"$1\" tills du är nöjd med det. Observera: Ju mer du justerar bort från standardvärdet minskar det tillgängliga färgspektrumet (Detta påverkar också färgerna däremellan). Beroende på din TV/LED-färgspektrum kan dina resultat variera.",
"wiz_cc_backlight": "Dessutom kan du ställa in en bakgrundsbelysning för att undvika \"irriterande färger\" i en nästan svart bild eller att du tycker att ändringen mellan färg och av för ansträngande. Dessutom kan det avgöras om detta ska vara färgat eller bara vitt. Inaktiveras automatiskt i läget \"Av\" såväl som \"Färg\" och \"Effekt\".",
@ -859,6 +896,11 @@
"wiz_hue_searchb": "Letar efter brygga...",
"wiz_hue_title": "Philips Hue Guide",
"wiz_hue_username": "Användar-ID",
"wiz_identify": "Identifiera",
"wiz_identify_light": "Identifiera $1",
"wiz_ids_disabled": "Inaktiverad",
"wiz_ids_entire": "Hela bilden",
"wiz_pos": "Position/läge",
"wiz_rgb_expl": "Den färgade punkten kommer att ändra färg (röd, grön) varje x sekund, samtidigt som dina lysdioder byter till den färgen. Svara på frågorna längst ner för att kontrollera/korrigera din byte-order.",
"wiz_rgb_intro1": "Den här guiden leder dig genom processen för att hitta rätt färgordning för dina lysdioder. Klicka på Fortsätt för att börja.",
"wiz_rgb_intro2": "När behöver du den här guiden? Exempel: Du ställer in färgen röd, men får istället grön eller blå. Men du kan också använda den som första-gången-konfiguration.",
@ -867,5 +909,9 @@
"wiz_rgb_qrend": "...röd?",
"wiz_rgb_switchevery": "Byt färg varje...",
"wiz_rgb_title": "RGB-byte-ordningsguide",
"wiz_wizavail": "Guiden tillgänglig"
"wiz_wizavail": "Guiden tillgänglig",
"wiz_yeelight_desc2": "Välj nu vilka lampor som ska läggas till. Positionen tilldelar lampan en specifik position på din \"bild\". Inaktiverade lampor läggs inte till. För att identifiera enstaka lampor, tryck på knappen till höger.",
"wiz_yeelight_intro1": "De här guiderna konfigurerar Hyperion för Yeelight-systemet. Funktionerna är Yeelights automatiska detektering, ställ in varje ljus till en specifik position på din bild eller inaktivera den och ställ in Hyperion-inställningarna automatiskt! Kort sagt: Några klick och du är klar!",
"wiz_yeelight_title": "Yeelight-Guide",
"wiz_yeelight_unsupported": "Utan stöd"
}

View File

@ -184,7 +184,6 @@
"edt_conf_enum_unicolor_mean": "Tek renkli",
"edt_conf_fbs_heading_title": "Flatbuffers Sunucusu",
"edt_conf_fbs_timeout_title": "Zaman aşımı",
"edt_conf_fg_device_title": "Aygıt",
"edt_conf_fg_display_title": "Ekran",
"edt_conf_fg_frequency_Hz_title": "Yakalama frekansı",
"edt_conf_fg_height_title": "Yükseklik",

View File

@ -257,7 +257,6 @@
"edt_conf_fbs_heading_title": "Máy chủ Flatbuffers",
"edt_conf_fbs_timeout_expl": "Nếu không có dữ liệu nào được nhận trong khoảng thời gian nhất định, thành phần sẽ bị tắt (mềm).",
"edt_conf_fbs_timeout_title": "Hết giờ",
"edt_conf_fg_device_title": "Thiết bị",
"edt_conf_fg_display_expl": "Chọn máy tính để bàn nào sẽ được chụp (thiết lập nhiều màn hình)",
"edt_conf_fg_display_title": "Trưng bày",
"edt_conf_fg_frequency_Hz_expl": "Tần suất chụp ảnh mới",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -35,7 +35,7 @@ $(document).ready( function() {
}, true, true);
editor_color.on('change',function() {
editor_color.validate().length ? $('#btn_submit_color').attr('disabled', true) : $('#btn_submit_color').attr('disabled', false);
editor_color.validate().length || window.readOnlyMode ? $('#btn_submit_color').attr('disabled', true) : $('#btn_submit_color').attr('disabled', false);
});
$('#btn_submit_color').off().on('click',function() {
@ -48,7 +48,8 @@ $(document).ready( function() {
}, true, true);
editor_smoothing.on('change',function() {
editor_smoothing.validate().length ? $('#btn_submit_smoothing').attr('disabled', true) : $('#btn_submit_smoothing').attr('disabled', false);
editor_smoothing.validate().length || window.readOnlyMode ? $('#btn_submit_smoothing').attr('disabled', true) : $('#btn_submit_smoothing').attr('disabled', false);
});
$('#btn_submit_smoothing').off().on('click',function() {
@ -61,7 +62,7 @@ $(document).ready( function() {
}, true, true);
editor_blackborder.on('change',function() {
editor_blackborder.validate().length ? $('#btn_submit_blackborder').attr('disabled', true) : $('#btn_submit_blackborder').attr('disabled', false);
editor_blackborder.validate().length || window.readOnlyMode ? $('#btn_submit_blackborder').attr('disabled', true) : $('#btn_submit_blackborder').attr('disabled', false);
});
$('#btn_submit_blackborder').off().on('click',function() {

View File

@ -70,7 +70,6 @@ $(document).ready( function() {
});
var instancename = window.currentHyperionInstanceName;
console.log ("instancename: ",instancename);
$('#dash_statush').html(hyperion_enabled ? '<span style="color:green">'+$.i18n('general_btn_on')+'</span>' : '<span style="color:red">'+$.i18n('general_btn_off')+'</span>');
$('#btn_hsc').html(hyperion_enabled ? '<button class="btn btn-sm btn-danger" onClick="requestSetComponentState(\'ALL\',false)">'+$.i18n('dashboard_infobox_label_disableh', instancename)+'</button>' : '<button class="btn btn-sm btn-success" onClick="requestSetComponentState(\'ALL\',true)">'+$.i18n('dashboard_infobox_label_enableh', instancename)+'</button>');

View File

@ -43,7 +43,7 @@ $(document).ready( function() {
}, true, true);
effects_editor.on('change',function() {
effects_editor.validate().length ? $('#btn_submit_effects').attr('disabled', true) : $('#btn_submit_effects').attr('disabled', false);
effects_editor.validate().length || window.readOnlyMode ? $('#btn_submit_effects').attr('disabled', true) : $('#btn_submit_effects').attr('disabled', false);
});
$('#btn_submit_effects').off().on('click',function() {
@ -65,11 +65,11 @@ $(document).ready( function() {
});
foregroundEffect_editor.on('change',function() {
foregroundEffect_editor.validate().length ? $('#btn_submit_foregroundEffect').attr('disabled', true) : $('#btn_submit_foregroundEffect').attr('disabled', false);
foregroundEffect_editor.validate().length || window.readOnlyMode ? $('#btn_submit_foregroundEffect').attr('disabled', true) : $('#btn_submit_foregroundEffect').attr('disabled', false);
});
backgroundEffect_editor.on('change',function() {
backgroundEffect_editor.validate().length ? $('#btn_submit_backgroundEffect').attr('disabled', true) : $('#btn_submit_backgroundEffect').attr('disabled', false);
backgroundEffect_editor.validate().length || window.readOnlyMode ? $('#btn_submit_backgroundEffect').attr('disabled', true) : $('#btn_submit_backgroundEffect').attr('disabled', false);
});
$('#btn_submit_foregroundEffect').off().on('click',function() {

View File

@ -83,7 +83,8 @@ $(document).ready( function() {
}
if( effects_editor.validate().length == 0 && effectName != "")
{
$('#btn_start_test, #btn_write').attr('disabled', false);
$('#btn_start_test').attr('disabled', false);
!window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true);
}
else
{
@ -101,6 +102,7 @@ $(document).ready( function() {
} else {
effects_editor.enable();
$("#eff_footer").children().attr('disabled',false);
!window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true);
}
});

View File

@ -18,7 +18,7 @@ $(document).ready( function() {
}, true, true);
conf_editor.on('change',function() {
conf_editor.validate().length ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_submit').off().on('click',function() {
@ -28,6 +28,12 @@ $(document).ready( function() {
// Instance handling
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);
});
var inst = e.currentTarget.id.split("_")[1];
showInfoDialog('renInst', $.i18n('conf_general_inst_renreq_t'), getInstanceNameByIndex(inst));
@ -77,6 +83,10 @@ $(document).ready( function() {
$('#instren_'+inst[key].instance).off().on('click', handleInstanceRename);
$('#inst_'+inst[key].instance).off().on('click', handleInstanceStartStop);
$('#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);
}
}
@ -85,7 +95,7 @@ $(document).ready( function() {
buildInstanceList();
$('#inst_name').off().on('input',function(e) {
(e.currentTarget.value.length >= 5) ? $('#btn_create_inst').attr('disabled', false) : $('#btn_create_inst').attr('disabled', true);
(e.currentTarget.value.length >= 5) && !window.readOnlyMode ? $('#btn_create_inst').attr('disabled', false) : $('#btn_create_inst').attr('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
@ -105,7 +115,7 @@ $(document).ready( function() {
//import
function dis_imp_btn(state)
{
state ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false);
state || window.readOnlyMode ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false);
}
function readFile(evt)

View File

@ -1,45 +1,45 @@
$(document).ready( function() {
$(document).ready(function () {
performTranslation();
var conf_editor_v4l2 = null;
var conf_editor_fg = null;
var conf_editor_instCapt = null;
var V4L2_AVAIL = window.serverInfo.grabbers.available.includes("v4l2");
if(V4L2_AVAIL) {
if (V4L2_AVAIL) {
// Dynamic v4l2 enum schema
var v4l2_dynamic_enum_schema = {
"available_devices":
{
"type": "string",
"title": "edt_conf_v4l2_device_title",
"propertyOrder" : 1,
"required" : true
"propertyOrder": 1,
"required": true
},
"device_inputs":
{
"type": "string",
"title": "edt_conf_v4l2_input_title",
"propertyOrder" : 3,
"required" : true
"propertyOrder": 3,
"required": true
},
"resolutions":
{
"type": "string",
"title": "edt_conf_v4l2_resolution_title",
"propertyOrder" : 6,
"required" : true
"propertyOrder": 6,
"required": true
},
"framerates":
{
"type": "string",
"title": "edt_conf_v4l2_framerate_title",
"propertyOrder" : 9,
"required" : true
"propertyOrder": 9,
"required": true
}
};
// Build dynamic v4l2 enum schema parts
var buildSchemaPart = function(key, schema, device) {
var buildSchemaPart = function (key, schema, device) {
if (schema[key]) {
var enumVals = [];
var enumTitelVals = [];
@ -76,31 +76,31 @@ $(document).ready( function() {
"type": schema[key].type,
"title": schema[key].title,
"enum": [].concat(["auto"], enumVals, ["custom"]),
"options" :
"options":
{
"enum_titles" : [].concat(["edt_conf_enum_automatic"], enumTitelVals, ["edt_conf_enum_custom"]),
"enum_titles": [].concat(["edt_conf_enum_automatic"], enumTitelVals, ["edt_conf_enum_custom"]),
},
"propertyOrder" : schema[key].propertyOrder,
"required" : schema[key].required
"propertyOrder": schema[key].propertyOrder,
"required": schema[key].required
};
}
};
// Switch between visible states
function toggleOption(option, state) {
$('[data-schemapath="root.grabberV4L2.'+option+'"]').toggle(state);
$('[data-schemapath="root.grabberV4L2.' + option + '"]').toggle(state);
if (state) (
$('[data-schemapath="root.grabberV4L2.'+option+'"]').addClass('col-md-12'),
$('label[for="root_grabberV4L2_'+option+'"]').css('left','10px'),
$('[id="root_grabberV4L2_'+option+'"]').css('left','10px')
$('[data-schemapath="root.grabberV4L2.' + option + '"]').addClass('col-md-12'),
$('label[for="root_grabberV4L2_' + option + '"]').css('left', '10px'),
$('[id="root_grabberV4L2_' + option + '"]').css('left', '10px')
);
}
// Watch all v4l2 dynamic fields
var setWatchers = function(schema) {
var setWatchers = function (schema) {
var path = 'root.grabberV4L2.';
Object.keys(schema).forEach(function(key) {
conf_editor_v4l2.watch(path + key, function() {
Object.keys(schema).forEach(function (key) {
conf_editor_v4l2.watch(path + key, function () {
var ed = conf_editor_v4l2.getEditor(path + key);
var val = ed.getValue();
@ -108,7 +108,7 @@ $(document).ready( function() {
var V4L2properties = ['device_inputs', 'resolutions', 'framerates'];
if (val == 'custom') {
var grabberV4L2 = ed.parent;
V4L2properties.forEach(function(item) {
V4L2properties.forEach(function (item) {
buildSchemaPart(item, v4l2_dynamic_enum_schema, 'none');
grabberV4L2.original_schema.properties[item] = window.schema.grabberV4L2.properties[item];
grabberV4L2.schema.properties[item] = window.schema.grabberV4L2.properties[item];
@ -123,9 +123,8 @@ $(document).ready( function() {
conf_editor_v4l2.getEditor(path + 'standard').enable();
toggleOption('device', true);
} else if (val == 'auto') {
V4L2properties.forEach(function(item) {
V4L2properties.forEach(function (item) {
conf_editor_v4l2.getEditor(path + item).setValue('auto');
conf_editor_v4l2.getEditor(path + item).disable();
});
@ -134,12 +133,11 @@ $(document).ready( function() {
conf_editor_v4l2.getEditor(path + 'standard').disable();
(toggleOption('device', false), toggleOption('input', false),
toggleOption('width', false), toggleOption('height', false),
toggleOption('fps', false));
toggleOption('width', false), toggleOption('height', false),
toggleOption('fps', false));
} else {
var grabberV4L2 = ed.parent;
V4L2properties.forEach(function(item) {
V4L2properties.forEach(function (item) {
buildSchemaPart(item, v4l2_dynamic_enum_schema, val);
grabberV4L2.original_schema.properties[item] = window.schema.grabberV4L2.properties[item];
grabberV4L2.schema.properties[item] = window.schema.grabberV4L2.properties[item];
@ -176,12 +174,12 @@ $(document).ready( function() {
};
// Insert dynamic v4l2 enum schema parts
Object.keys(v4l2_dynamic_enum_schema).forEach(function(key) {
Object.keys(v4l2_dynamic_enum_schema).forEach(function (key) {
buildSchemaPart(key, v4l2_dynamic_enum_schema, window.serverConfig.grabberV4L2.device);
});
}
if(window.showOptHelp) {
if (window.showOptHelp) {
// 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'));
@ -193,7 +191,7 @@ $(document).ready( function() {
$('#conf_cont_fg').append(createHelpTable(window.schema.framegrabber.properties, $.i18n("edt_conf_fg_heading_title")));
// V4L2 - hide if not available
if(V4L2_AVAIL) {
if (V4L2_AVAIL) {
$('#conf_cont').append(createRow('conf_cont_v4l'));
$('#conf_cont_v4l').append(createOptPanel('fa-camera', $.i18n("edt_conf_v4l2_heading_title"), 'editor_container_v4l2', 'btn_submit_v4l2'));
$('#conf_cont_v4l').append(createHelpTable(window.schema.grabberV4L2.properties, $.i18n("edt_conf_v4l2_heading_title")));
@ -202,7 +200,7 @@ $(document).ready( function() {
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_instCapture_heading_title"), 'editor_container_instCapt', 'btn_submit_instCapt'));
$('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_fg_heading_title"), 'editor_container_fg', 'btn_submit_fg'));
if(V4L2_AVAIL) {
if (V4L2_AVAIL) {
$('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_v4l2_heading_title"), 'editor_container_v4l2', 'btn_submit_v4l2'));
}
}
@ -212,11 +210,11 @@ $(document).ready( function() {
instCapture: window.schema.instCapture
}, true, true);
conf_editor_instCapt.on('change',function() {
conf_editor_instCapt.validate().length ? $('#btn_submit_instCapt').attr('disabled', true) : $('#btn_submit_instCapt').attr('disabled', false);
conf_editor_instCapt.on('change', function () {
conf_editor_instCapt.validate().length || window.readOnlyMode ? $('#btn_submit_instCapt').attr('disabled', true) : $('#btn_submit_instCapt').attr('disabled', false);
});
$('#btn_submit_instCapt').off().on('click',function() {
$('#btn_submit_instCapt').off().on('click', function () {
requestWriteConfig(conf_editor_instCapt.getValue());
});
@ -225,24 +223,46 @@ $(document).ready( function() {
framegrabber: window.schema.framegrabber
}, true, true);
conf_editor_fg.on('change',function() {
conf_editor_fg.validate().length ? $('#btn_submit_fg').attr('disabled', true) : $('#btn_submit_fg').attr('disabled', false);
conf_editor_fg.on('change', function () {
//Remove Grabbers which are not supported
var grabbers = window.serverInfo.grabbers.available;
var selector = "root_framegrabber_type";
var options = $("#" + selector + " option");
for (var i = 0; i < options.length; i++) {
var type = options[i].value;
if (grabbers.indexOf(type) === -1) {
$("#" + selector + " option[value='" + type + "']").remove();
}
}
if (window.serverInfo.grabbers.active)
{
var activegrabber = window.serverInfo.grabbers.active.toLowerCase();
$("#" + selector + " option[value='" + activegrabber + "']").attr('selected', 'selected');
}
var selectedType = $("#root_framegrabber_type").val();
filerFgGrabberOptions(selectedType);
conf_editor_fg.validate().length || window.readOnlyMode ? $('#btn_submit_fg').attr('disabled', true) : $('#btn_submit_fg').attr('disabled', false);
});
$('#btn_submit_fg').off().on('click',function() {
$('#btn_submit_fg').off().on('click', function () {
requestWriteConfig(conf_editor_fg.getValue());
});
if(V4L2_AVAIL) {
if (V4L2_AVAIL) {
conf_editor_v4l2 = createJsonEditor('editor_container_v4l2', {
grabberV4L2 : window.schema.grabberV4L2
grabberV4L2: window.schema.grabberV4L2
}, true, true);
conf_editor_v4l2.on('change',function() {
conf_editor_v4l2.validate().length ? $('#btn_submit_v4l2').attr('disabled', true) : $('#btn_submit_v4l2').attr('disabled', false);
conf_editor_v4l2.on('change', function () {
conf_editor_v4l2.validate().length || window.readOnlyMode ? $('#btn_submit_v4l2').attr('disabled', true) : $('#btn_submit_v4l2').attr('disabled', false);
});
conf_editor_v4l2.on('ready', function() {
conf_editor_v4l2.on('ready', function () {
setWatchers(v4l2_dynamic_enum_schema);
if (window.serverConfig.grabberV4L2.available_devices == 'custom' && window.serverConfig.grabberV4L2.device != 'auto')
@ -252,7 +272,7 @@ $(document).ready( function() {
conf_editor_v4l2.getEditor('root.grabberV4L2.available_devices').setValue('auto');
if (window.serverConfig.grabberV4L2.available_devices == 'auto') {
['device_inputs', 'standard', 'resolutions', 'framerates'].forEach(function(item) {
['device_inputs', 'standard', 'resolutions', 'framerates'].forEach(function (item) {
conf_editor_v4l2.getEditor('root.grabberV4L2.' + item).setValue('auto');
conf_editor_v4l2.getEditor('root.grabberV4L2.' + item).disable();
});
@ -266,10 +286,9 @@ $(document).ready( function() {
if (window.serverConfig.grabberV4L2.framerates == 'custom' && window.serverConfig.grabberV4L2.device != 'auto')
toggleOption('fps', true);
});
$('#btn_submit_v4l2').off().on('click',function() {
$('#btn_submit_v4l2').off().on('click', function () {
var v4l2Options = conf_editor_v4l2.getValue();
if (v4l2Options.grabberV4L2.available_devices != 'custom' && v4l2Options.grabberV4L2.available_devices != 'auto')
@ -304,31 +323,54 @@ $(document).ready( function() {
//////////////////////////////////////////////////
//create introduction
if(window.showOptHelp) {
if (window.showOptHelp) {
createHint("intro", $.i18n('conf_grabber_fg_intro'), "editor_container_fg");
if(V4L2_AVAIL){
if (V4L2_AVAIL) {
createHint("intro", $.i18n('conf_grabber_v4l_intro'), "editor_container_v4l2");
}
}
function hideEl(el) {
for(var i = 0; i<el.length; i++) {
$('[data-schemapath*="root.framegrabber.'+el[i]+'"]').toggle(false);
function toggleFgOptions(el, state) {
for (var i = 0; i < el.length; i++) {
$('[data-schemapath*="root.framegrabber.' + el[i] + '"]').toggle(state);
}
}
//hide specific options
conf_editor_fg.on('ready',function() {
var grabbers = window.serverInfo.grabbers.available;
function filerFgGrabberOptions(type) {
//hide specific options for grabbers found
if (grabbers.indexOf('dispmanx') > -1)
hideEl(["device","pixelDecimation"]);
else if (grabbers.indexOf('x11') > -1 || grabbers.indexOf('xcb') > -1)
hideEl(["device","width","height"]);
else if (grabbers.indexOf('osx') > -1 )
hideEl(["device","pixelDecimation"]);
else if (grabbers.indexOf('amlogic') > -1)
hideEl(["pixelDecimation"]);
var grabbers = window.serverInfo.grabbers.available;
if (grabbers.indexOf(type) > -1) {
toggleFgOptions(["width", "height", "pixelDecimation", "display"], true);
switch (type) {
case "dispmanx":
toggleFgOptions(["pixelDecimation", "display"], false);
break;
case "x11":
case "xcb":
toggleFgOptions(["width", "height", "display"], false);
break;
case "framebuffer":
toggleFgOptions(["display"], false);
break;
case "amlogic":
toggleFgOptions(["pixelDecimation", "display"], false);
break;
case "qt":
break;
case "dx":
break;
case "osx":
break;
default:
}
}
};
$('#root_framegrabber_type').change(function () {
var selectedType = $("#root_framegrabber_type").val();
filerFgGrabberOptions(selectedType);
});
removeOverlay();

View File

@ -26,6 +26,9 @@ $(document).ready(function () {
$(window.hyperion).on("cmd-serverinfo", function (event) {
window.serverInfo = event.response.info;
window.readOnlyMode = window.sysInfo.hyperion.readOnlyMode;
// comps
window.comps = event.response.info.components

View File

@ -59,40 +59,36 @@ function createLedPreview(leds, origin){
}
function createClassicLeds(){
//get values
var ledstop = parseInt($("#ip_cl_top").val());
var ledsbottom = parseInt($("#ip_cl_bottom").val());
var ledsleft = parseInt($("#ip_cl_left").val());
var ledsright = parseInt($("#ip_cl_right").val());
var ledsglength = parseInt($("#ip_cl_glength").val());
var ledsgpos = parseInt($("#ip_cl_gpos").val());
var position = parseInt($("#ip_cl_position").val());
var reverse = $("#ip_cl_reverse").is(":checked");
function createClassicLedLayoutSimple( ledstop,ledsleft,ledsright,ledsbottom,position,reverse ){
//advanced values
var ledsVDepth = parseInt($("#ip_cl_vdepth").val())/100;
var ledsHDepth = parseInt($("#ip_cl_hdepth").val())/100;
var edgeVGap = parseInt($("#ip_cl_edgegap").val())/100/2;
//var cornerVGap = parseInt($("#ip_cl_cornergap").val())/100/2;
var overlap = $("#ip_cl_overlap").val()/100;
let params = {
ledstop: 0, ledsleft: 0, ledsright: 0, ledsbottom: 0,
ledsglength: 0, ledsgpos: 0, position: 0,
ledsHDepth: 0.08, ledsVDepth: 0.05, overlap: 0,
edgeVGap: 0,
ptblh: 0, ptblv: 1, ptbrh: 1, ptbrv: 1,
pttlh: 0, pttlv: 0, pttrh: 1, pttrv: 0,
reverse:false
};
params.ledstop = ledstop;
params.ledsleft = ledsleft;
params.ledsright = ledsright;
params.ledsbottom = ledsbottom;
params.position = position;
params.reverse = reverse;
//trapezoid values % -> float
var ptblh = parseInt($("#ip_cl_pblh").val())/100;
var ptblv = parseInt($("#ip_cl_pblv").val())/100;
var ptbrh = parseInt($("#ip_cl_pbrh").val())/100;
var ptbrv = parseInt($("#ip_cl_pbrv").val())/100;
var pttlh = parseInt($("#ip_cl_ptlh").val())/100;
var pttlv = parseInt($("#ip_cl_ptlv").val())/100;
var pttrh = parseInt($("#ip_cl_ptrh").val())/100;
var pttrv = parseInt($("#ip_cl_ptrv").val())/100;
return createClassicLedLayout( params );
}
function createClassicLedLayout( params ){
//helper
var edgeHGap = edgeVGap/(16/9);
var edgeHGap = params.edgeVGap/(16/9);
var ledArray = [];
function createFinalArray(array){
finalLedArray = [];
var finalLedArray = [];
for(var i = 0; i<array.length; i++){
var hmin = array[i].hmin;
var hmax = array[i].hmax;
@ -100,7 +96,7 @@ function createClassicLeds(){
var vmax = array[i].vmax;
finalLedArray[i] = { "hmax": hmax, "hmin": hmin, "vmax": vmax, "vmin": vmin }
}
createLedPreview(finalLedArray, 'classic');
return finalLedArray;
}
function rotateArray(array, times){
@ -131,9 +127,9 @@ function createClassicLeds(){
function ovl(scan,val)
{
if(scan == "+")
return valScan(val += overlap);
return valScan(val += params.overlap);
else
return valScan(val -= overlap);
return valScan(val -= params.overlap);
}
function createLedArray(hmin, hmax, vmin, vmax){
@ -145,53 +141,53 @@ function createClassicLeds(){
}
function createTopLeds(){
var steph = (pttrh - pttlh - (2*edgeHGap))/ledstop;
var stepv = (pttrv - pttlv)/ledstop;
var steph = (params.pttrh - params.pttlh - (2*edgeHGap))/params.ledstop;
var stepv = (params.pttrv - params.pttlv)/params.ledstop;
for (var i = 0; i<ledstop; i++){
var hmin = ovl("-",pttlh+(steph*Number([i]))+edgeHGap);
var hmax = ovl("+",pttlh+(steph*Number([i+1]))+edgeHGap);
var vmin = pttlv+(stepv*Number([i]));
var vmax = vmin + ledsHDepth;
for (var i = 0; i<params.ledstop; i++){
var hmin = ovl("-",params.pttlh+(steph*Number([i]))+edgeHGap);
var hmax = ovl("+",params.pttlh+(steph*Number([i+1]))+edgeHGap);
var vmin = params.pttlv+(stepv*Number([i]));
var vmax = vmin + params.ledsHDepth;
createLedArray(hmin, hmax, vmin, vmax);
}
}
function createRightLeds(){
var steph = (ptbrh - pttrh)/ledsright;
var stepv = (ptbrv - pttrv - (2*edgeVGap))/ledsright;
var steph = (params.ptbrh - params.pttrh)/params.ledsright;
var stepv = (params.ptbrv - params.pttrv - (2*params.edgeVGap))/params.ledsright;
for (var i = 0; i<ledsright; i++){
var hmax = pttrh+(steph*Number([i+1]));
var hmin = hmax-ledsVDepth;
var vmin = ovl("-",pttrv+(stepv*Number([i]))+edgeVGap);
var vmax = ovl("+",pttrv+(stepv*Number([i+1]))+edgeVGap);
for (var i = 0; i<params.ledsright; i++){
var hmax = params.pttrh+(steph*Number([i+1]));
var hmin = hmax-params.ledsVDepth;
var vmin = ovl("-",params.pttrv+(stepv*Number([i]))+params.edgeVGap);
var vmax = ovl("+",params.pttrv+(stepv*Number([i+1]))+params.edgeVGap);
createLedArray(hmin, hmax, vmin, vmax);
}
}
function createBottomLeds(){
var steph = (ptbrh - ptblh - (2*edgeHGap))/ledsbottom;
var stepv = (ptbrv - ptblv)/ledsbottom;
var steph = (params.ptbrh - params.ptblh - (2*edgeHGap))/params.ledsbottom;
var stepv = (params.ptbrv - params.ptblv)/params.ledsbottom;
for (var i = ledsbottom-1; i>-1; i--){
var hmin = ovl("-",ptblh+(steph*Number([i]))+edgeHGap);
var hmax = ovl("+",ptblh+(steph*Number([i+1]))+edgeHGap);
var vmax= ptblv+(stepv*Number([i]));
var vmin = vmax-ledsHDepth;
for (var i = params.ledsbottom-1; i>-1; i--){
var hmin = ovl("-",params.ptblh+(steph*Number([i]))+edgeHGap);
var hmax = ovl("+",params.ptblh+(steph*Number([i+1]))+edgeHGap);
var vmax= params.ptblv+(stepv*Number([i]));
var vmin = vmax-params.ledsHDepth;
createLedArray(hmin, hmax, vmin, vmax);
}
}
function createLeftLeds(){
var steph = (ptblh - pttlh)/ledsleft;
var stepv = (ptblv - pttlv - (2*edgeVGap))/ledsleft;
var steph = (params.ptblh - params.pttlh)/params.ledsleft;
var stepv = (params.ptblv - params.pttlv - (2*params.edgeVGap))/params.ledsleft;
for (var i = ledsleft-1; i>-1; i--){
var hmin = pttlh+(steph*Number([i]));
var hmax = hmin+ledsVDepth;
var vmin = ovl("-",pttlv+(stepv*Number([i]))+edgeVGap);
var vmax = ovl("+",pttlv+(stepv*Number([i+1]))+edgeVGap);
for (var i = params.ledsleft-1; i>-1; i--){
var hmin = params.pttlh+(steph*Number([i]));
var hmax = hmin+params.ledsVDepth;
var vmin = ovl("-",params.pttlv+(stepv*Number([i]))+params.edgeVGap);
var vmax = ovl("+",params.pttlv+(stepv*Number([i+1]))+params.edgeVGap);
createLedArray(hmin, hmax, vmin, vmax);
}
@ -202,47 +198,87 @@ function createClassicLeds(){
createRightLeds();
createBottomLeds();
createLeftLeds();
//check led gap pos
if (ledsgpos+ledsglength > ledArray.length)
if (params.ledsgpos+params.ledsglength > ledArray.length)
{
var mpos = Math.max(0,ledArray.length-ledsglength);
$('#ip_cl_ledsgpos').val(mpos);
var mpos = Math.max(0,ledArray.length-params.ledsglength);
//$('#ip_cl_ledsgpos').val(mpos);
ledsgpos = mpos;
}
//check led gap length
if(ledsglength >= ledArray.length)
if(params.ledsglength >= ledArray.length)
{
$('#ip_cl_ledsglength').val(ledArray.length-1);
ledsglength = ledArray.length-ledsglength-1;
//$('#ip_cl_ledsglength').val(ledArray.length-1);
params.ledsglength = ledArray.length-params.ledsglength-1;
}
if(ledsglength != 0){
ledArray.splice(ledsgpos, ledsglength);
if(params.ledsglength != 0){
ledArray.splice(params.ledsgpos, params.ledsglength);
}
if (position != 0){
rotateArray(ledArray, position);
if (params.position != 0){
rotateArray(ledArray, params.position);
}
if (reverse)
if (params.reverse)
ledArray.reverse();
createFinalArray(ledArray);
return createFinalArray(ledArray);
}
function createMatrixLeds(){
function createClassicLeds(){
//get values
let params = {
ledstop : parseInt($("#ip_cl_top").val()),
ledsbottom : parseInt($("#ip_cl_bottom").val()),
ledsleft : parseInt($("#ip_cl_left").val()),
ledsright : parseInt($("#ip_cl_right").val()),
ledsglength : parseInt($("#ip_cl_glength").val()),
ledsgpos : parseInt($("#ip_cl_gpos").val()),
position : parseInt($("#ip_cl_position").val()),
reverse : $("#ip_cl_reverse").is(":checked"),
//advanced values
ledsVDepth : parseInt($("#ip_cl_vdepth").val())/100,
ledsHDepth : parseInt($("#ip_cl_hdepth").val())/100,
edgeVGap : parseInt($("#ip_cl_edgegap").val())/100/2,
//cornerVGap : parseInt($("#ip_cl_cornergap").val())/100/2,
overlap : $("#ip_cl_overlap").val()/100,
//trapezoid values % -> float
ptblh : parseInt($("#ip_cl_pblh").val())/100,
ptblv : parseInt($("#ip_cl_pblv").val())/100,
ptbrh : parseInt($("#ip_cl_pbrh").val())/100,
ptbrv : parseInt($("#ip_cl_pbrv").val())/100,
pttlh : parseInt($("#ip_cl_ptlh").val())/100,
pttlv : parseInt($("#ip_cl_ptlv").val())/100,
pttrh : parseInt($("#ip_cl_ptrh").val())/100,
pttrv : parseInt($("#ip_cl_ptrv").val())/100,
}
finalLedArray = createClassicLedLayout( params );
//check led gap pos
if (params.ledsgpos+params.ledsglength > finalLedArray.length) {
var mpos = Math.max(0,finalLedArray.length-params.ledsglength);
$('#ip_cl_ledsgpos').val(mpos);
}
//check led gap length
if(params.ledsglength >= finalLedArray.length) {
$('#ip_cl_ledsglength').val(finalLedArray.length-1);
}
createLedPreview(finalLedArray, 'classic');
}
function createMatrixLayout( ledshoriz, ledsvert, cabling, start){
// Big thank you to RanzQ (Juha Rantanen) from Github for this script
// https://raw.githubusercontent.com/RanzQ/hyperion-audio-effects/master/matrix-config.js
//get values
var ledshoriz = parseInt($("#ip_ma_ledshoriz").val());
var ledsvert = parseInt($("#ip_ma_ledsvert").val());
var cabling = $("#ip_ma_cabling").val();
//var order = $("#ip_ma_order").val();
var start = $("#ip_ma_start").val();
var parallel = false
var leds = []
var hblock = 1.0 / ledshoriz
@ -298,9 +334,23 @@ function createMatrixLeds(){
endX = tmp
}
}
finalLedArray =[];
finalLedArray = leds
createLedPreview(leds, 'matrix');
return leds;
}
function createMatrixLeds(){
// Big thank you to RanzQ (Juha Rantanen) from Github for this script
// https://raw.githubusercontent.com/RanzQ/hyperion-audio-effects/master/matrix-config.js
//get values
var ledshoriz = parseInt($("#ip_ma_ledshoriz").val());
var ledsvert = parseInt($("#ip_ma_ledsvert").val());
var cabling = $("#ip_ma_cabling").val();
var start = $("#ip_ma_start").val();
finalLedArray = createMatrixLayout(ledshoriz,ledsvert,cabling,start);
createLedPreview(finalLedArray, 'matrix');
}
function migrateLedConfig(slConfig){
@ -309,10 +359,10 @@ function migrateLedConfig(slConfig){
//Default Classic layout
newLedConfig.classic = {
"top" : 8,
"bottom" : 8,
"left" : 5,
"right" : 5,
"top" : 1,
"bottom" : 0,
"left" : 0,
"right" : 0,
"glength" : 0,
"gpos" : 0,
"position" : 0,
@ -336,8 +386,8 @@ function migrateLedConfig(slConfig){
newLedConfig.classic.overlap = slConfig.overlap;
//Default Matrix layout
newLedConfig["matrix"] = { "ledshoriz": 10,
"ledsvert" : 10,
newLedConfig["matrix"] = { "ledshoriz": 1,
"ledsvert" : 1,
"cabling" : "snake",
"start" : "top-left"
}
@ -468,6 +518,11 @@ $(document).ready(function() {
$('#leds_custom_updsim').attr("disabled", true);
$('#leds_custom_save').attr("disabled", true);
}
if ( window.readOnlyMode )
{
$('#leds_custom_save').attr('disabled', true);
}
}
}, window.serverConfig.leds);
@ -520,7 +575,13 @@ $(document).ready(function() {
};
// change save button state based on validation result
conf_editor.validate().length ? $('#btn_submit_controller').attr('disabled', true) : $('#btn_submit_controller').attr('disabled', false);
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit_controller').attr('disabled', true) : $('#btn_submit_controller').attr('disabled', false);
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 ? $('#leds_custom_save').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
// led controller sepecific wizards
$('#btn_wiz_holder').html("");
@ -549,6 +610,12 @@ $(document).ready(function() {
var atmoorb_title = 'wiz_atmoorb_title';
changeWizard(data, atmoorb_title, startWizardAtmoOrb);
}
else if(ledType == "cololight") {
var ledWizardType = (this.checked) ? "cololight" : ledType;
var data = { type: ledWizardType };
var cololight_title = 'wiz_cololight_title';
changeWizard(data, cololight_title, startWizardCololight);
}
else if(ledType == "yeelight") {
var ledWizardType = (this.checked) ? "yeelight" : ledType;
var data = { type: ledWizardType };
@ -572,10 +639,10 @@ $(document).ready(function() {
var devRPiPWM = ['ws281x'];
var devRPiGPIO = ['piblaster'];
var devNET = ['atmoorb', 'fadecandy', 'philipshue', 'nanoleaf', 'razer', 'tinkerforge', 'tpm2net', 'udpe131', 'udpartnet', 'udph801', 'udpraw', 'wled', 'yeelight'];
var devNET = ['atmoorb', 'cololight', 'fadecandy', 'philipshue', 'nanoleaf', 'razer', 'tinkerforge', 'tpm2net', 'udpe131', 'udpartnet', 'udph801', 'udpraw', 'wled', 'yeelight'];
var devUSB = ['adalight', 'dmx', 'atmo', 'hyperionusbasp', 'lightpack', 'paintpack', 'rawhid', 'sedu', 'tpm2', 'karate'];
var optArr = [[]];
var optArr = [[]];
optArr[1]=[];
optArr[2]=[];
optArr[3]=[];

View File

@ -22,7 +22,7 @@ $(document).ready(function() {
}, true, true);
conf_editor.on('change',function() {
conf_editor.validate().length ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_submit').off().on('click',function() {
@ -73,17 +73,32 @@ $(document).ready(function() {
//create general info
info = "### GENERAL ### \n";
info += 'Build: '+shy.build+'\n';
info += 'Build time: '+shy.time+'\n';
info += 'Version: '+shy.version+'\n';
info += 'UI Lang: '+storedLang+' (BrowserL: '+navigator.language+')\n';
info += 'UI Access: '+storedAccess+'\n';
info += 'Log lvl: '+window.serverConfig.logger.level+'\n';
info += 'Avail Capt: '+window.serverInfo.grabbers.available+'\n\n';
info += 'Distribution:'+sys.prettyName+'\n';
info += 'Arch: '+sys.architecture+'\n';
info += 'Kernel: '+sys.kernelType+' ('+sys.kernelVersion+' (WS: '+sys.wordSize+'))\n';
info += 'Browser/OS: '+navigator.userAgent+'\n\n';
info += 'Build: '+shy.build+'\n';
info += 'Build time: '+shy.time+'\n';
info += 'Version: '+shy.version+'\n';
info += 'UI Lang: '+storedLang+' (BrowserL: '+navigator.language+')\n';
info += 'UI Access: '+storedAccess+'\n';
info += 'Log lvl: '+window.serverConfig.logger.level+'\n';
info += 'Avail Capt: '+window.serverInfo.grabbers.available+'\n';
info += 'Database: '+(shy.readOnlyMode ? "ready-only" : "read/write")+'\n';
info += '\n';
info += 'Distribution: '+sys.prettyName+'\n';
info += 'Architecture: '+sys.architecture+'\n';
if (sys.cpuModelName)
info += 'CPU Model: ' + sys.cpuModelName + '\n';
if (sys.cpuModelType)
info += 'CPU Type: ' + sys.cpuModelType + '\n';
if (sys.cpuRevision)
info += 'CPU Revision: ' + sys.cpuRevision + '\n';
if (sys.cpuHardware)
info += 'CPU Hardware: ' + sys.cpuHardware + '\n';
info += 'Kernel: ' + sys.kernelType+' ('+sys.kernelVersion+' (WS: '+sys.wordSize+'))' + '\n';
info += 'Qt Version: ' + sys.qtVersion + '\n';
info += 'Python Version: ' + sys.pyVersion + '\n';
info += 'Browser/OS: ' + navigator.userAgent + '\n\n';
//create prios
info += "### PRIORITIES ### \n";

View File

@ -62,7 +62,7 @@ $(document).ready( function() {
}, true, true);
conf_editor_net.on('change',function() {
conf_editor_net.validate().length ? $('#btn_submit_net').attr('disabled', true) : $('#btn_submit_net').attr('disabled', false);
conf_editor_net.validate().length || window.readOnlyMode ? $('#btn_submit_net').attr('disabled', true) : $('#btn_submit_net').attr('disabled', false);
});
$('#btn_submit_net').off().on('click',function() {
@ -75,7 +75,7 @@ $(document).ready( function() {
}, true, true);
conf_editor_json.on('change',function() {
conf_editor_json.validate().length ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false);
conf_editor_json.validate().length || window.readOnlyMode ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false);
});
$('#btn_submit_jsonserver').off().on('click',function() {
@ -88,7 +88,7 @@ $(document).ready( function() {
}, true, true);
conf_editor_fbs.on('change',function() {
conf_editor_fbs.validate().length ? $('#btn_submit_fbserver').attr('disabled', true) : $('#btn_submit_fbserver').attr('disabled', false);
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() {
@ -101,7 +101,7 @@ $(document).ready( function() {
}, true, true);
conf_editor_proto.on('change',function() {
conf_editor_proto.validate().length ? $('#btn_submit_protoserver').attr('disabled', true) : $('#btn_submit_protoserver').attr('disabled', false);
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() {
@ -114,7 +114,7 @@ $(document).ready( function() {
}, true, true);
conf_editor_bobl.on('change',function() {
conf_editor_bobl.validate().length ? $('#btn_submit_boblightserver').attr('disabled', true) : $('#btn_submit_boblightserver').attr('disabled', false);
conf_editor_bobl.validate().length || window.readOnlyMode ? $('#btn_submit_boblightserver').attr('disabled', true) : $('#btn_submit_boblightserver').attr('disabled', false);
});
$('#btn_submit_boblightserver').off().on('click',function() {
@ -129,7 +129,7 @@ $(document).ready( function() {
}, true, true);
conf_editor_forw.on('change',function() {
conf_editor_forw.validate().length ? $('#btn_submit_forwarder').attr('disabled', true) : $('#btn_submit_forwarder').attr('disabled', false);
conf_editor_forw.validate().length || window.readOnlyMode ? $('#btn_submit_forwarder').attr('disabled', true) : $('#btn_submit_forwarder').attr('disabled', false);
});
$('#btn_submit_forwarder').off().on('click',function() {

View File

@ -14,7 +14,7 @@
}, true, true);
conf_editor.on('change',function() {
conf_editor.validate().length ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_submit').off().on('click',function() {

View File

@ -454,9 +454,9 @@ function requestAdjustment(type, value, complete)
sendToHyperion("adjustment", "", '"adjustment": {"'+type+'": '+value+'}');
}
async function requestLedDeviceDiscovery(type)
async function requestLedDeviceDiscovery(type, params)
{
let data = { ledDeviceType: type };
let data = { ledDeviceType: type, params: params };
return sendAsyncToHyperion("leddevice", "discover", data, Math.floor(Math.random() * 1000) );
}
@ -471,8 +471,5 @@ async function requestLedDeviceProperties(type, params)
function requestLedDeviceIdentification(type, params)
{
sendToHyperion("leddevice", "identify", '"ledDeviceType": "'+type+'","params": '+JSON.stringify(params)+'');
//let data = {ledDeviceType: type, params: params};
//sendToHyperion("leddevice", "identify", data );
}

View File

@ -21,7 +21,7 @@ function changePassword(){
});
$('#newPw, #oldPw').off().on('input',function(e) {
($('#oldPw').val().length >= 8 && $('#newPw').val().length >= 8) ? $('#id_btn_ok').attr('disabled', false) : $('#id_btn_ok').attr('disabled', true);
($('#oldPw').val().length >= 8 && $('#newPw').val().length >= 8) && !window.readOnlyMode ? $('#id_btn_ok').attr('disabled', false) : $('#id_btn_ok').attr('disabled', true);
});
}

View File

@ -184,7 +184,7 @@ function initLanguageSelection()
for (var i = 0; i < availLang.length; i++)
{
$("#language-select").append('<option value="'+i+'" selected="">'+availLangText[i]+'</option>');
}
}
var langLocale = storedLang;
@ -389,7 +389,7 @@ function showInfoDialog(type,header,message)
$(document).on('click', '[data-dismiss-modal]', function () {
var target = $(this).attr('data-dismiss-modal');
$(target).modal('hide');
$.find(target).modal.hide();
});
}
@ -533,7 +533,7 @@ function createJsonEditor(container,schema,setconfig,usePanel,arrayre)
{
for(var key in editor.root.editors)
{
editor.getEditor("root."+key).setValue( window.serverConfig[key] );
editor.getEditor("root."+key).setValue(Object.assign({}, editor.getEditor("root."+key).value, window.serverConfig[key] ));
}
}

View File

@ -109,9 +109,13 @@ function beginWizardRGB() {
if (redS == "r" && greenS == "g") {
$('#btn_wiz_save').toggle(false);
$('#btn_wiz_checkok').toggle(true);
window.readOnlyMode ? $('#btn_wiz_checkok').attr('disabled', true) : $('#btn_wiz_checkok').attr('disabled', false);
}
else {
$('#btn_wiz_save').toggle(true);
window.readOnlyMode ? $('#btn_wiz_save').attr('disabled', true) : $('#btn_wiz_save').attr('disabled', false);
$('#btn_wiz_checkok').toggle(false);
}
new_rgb_order = rgb_order;
@ -148,9 +152,11 @@ function beginWizardRGB() {
$('#btn_wizard_byteorder').off().on('click', startWizardRGB);
//color calibration wizard
var kodiHost = document.location.hostname;
var kodiPort = 9090;
var kodiAddress = kodiHost;
var wiz_editor;
var colorLength;
var cobj;
@ -164,6 +170,7 @@ var picnr = 0;
var availVideos = ["Sweet_Cocoon", "Caminandes_2_GranDillama", "Caminandes_3_Llamigos"];
if (getStorage("kodiAddress") != null) {
kodiAddress = getStorage("kodiAddress");
[kodiHost, kodiPort] = kodiAddress.split(":", 2);
@ -390,6 +397,7 @@ function performAction() {
$('#btn_wiz_next').attr("disabled", true);
$('#btn_wiz_save').toggle(true);
window.readOnlyMode ? $('#btn_wiz_save').attr('disabled', true) : $('#btn_wiz_save').attr('disabled', false);
}
else {
$('#btn_wiz_next').attr("disabled", false);
@ -407,16 +415,16 @@ function updateWEditor(el, all) {
}
function startWizardCC() {
// Ensure that Kodi's default REST-API port is not used, as now the Web-Socket port is used
[kodiHost, kodiPort] = kodiAddress.split(":", 2);
if (kodiPort === "8080") {
kodiAddress = kodiHost;
kodiPort = undefined;
}
//create html
$('#wiz_header').html('<i class="fa fa-magic fa-fw"></i>' + $.i18n('wiz_cc_title'));
$('#wizp1_body').html('<h4 style="font-weight:bold;text-transform:uppercase;">' + $.i18n('wiz_cc_title') + '</h4><p>' + $.i18n('wiz_cc_intro1') + '</p><label>' + $.i18n('wiz_cc_kwebs') + '</label><input class="form-control" style="width:170px;margin:auto" id="wiz_cc_kodiip" type="text" placeholder="' + kodiAddress + '" value="' + kodiAddress + '" /><span id="kodi_status"></span><span id="multi_cali"></span>');
$('#wizp1_body').html('<h4 style="font-weight:bold;text-transform:uppercase;">' + $.i18n('wiz_cc_title') + '</h4><p>' + $.i18n('wiz_cc_intro1') + '</p><label>' + $.i18n('wiz_cc_kwebs') + '</label><input class="form-control" style="width:170px;margin:auto" id="wiz_cc_kodiip" type="text" placeholder="' + kodiAddress + '" value="' + kodiAddress + '" /><span id="kodi_status"></span><span id="multi_cali"></span>');
$('#wizp1_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_cont" disabled="disabled"><i class="fa fa-fw fa-check"></i>' + $.i18n('general_btn_continue') + '</button><button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>' + $.i18n('general_btn_cancel') + '</button>');
$('#wizp2_body').html('<div id="wiz_cc_desc" style="font-weight:bold"></div><div id="editor_container_wiz"></div>');
$('#wizp2_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_back"><i class="fa fa-fw fa-chevron-left"></i>' + $.i18n('general_btn_back') + '</button><button type="button" class="btn btn-primary" id="btn_wiz_next">' + $.i18n('general_btn_next') + '<i style="margin-left:4px;"class="fa fa-fw fa-chevron-right"></i></button><button type="button" class="btn btn-warning" id="btn_wiz_save" style="display:none"><i class="fa fa-fw fa-save"></i>' + $.i18n('general_btn_save') + '</button><button type="button" class="btn btn-danger" id="btn_wiz_abort"><i class="fa fa-fw fa-close"></i>' + $.i18n('general_btn_cancel') + '</button>');
@ -429,7 +437,10 @@ function startWizardCC() {
});
$('#wiz_cc_kodiip').off().on('change', function () {
kodiAddress = $(this).val().trim();
$('#wizp1_body').find("kodiAddress").val(kodiAddress);
$('#kodi_status').html('');
// Remove Kodi's default Web-Socket port (9090) from display and ensure Kodi's default REST-API port (8080) is mapped to web-socket port to ease migration
@ -579,6 +590,30 @@ function assignLightPos(id, pos, name) {
return i;
}
function getHostInLights(hostname) {
return lights.filter(
function (lights) {
return lights.host === hostname
}
);
}
function getIpInLights(ip) {
return lights.filter(
function (lights) {
return lights.ip === ip
}
);
}
function getIdInLights(id) {
return lights.filter(
function (lights) {
return lights.id === id
}
);
}
//****************************
// Wizard Philips Hue
//****************************
@ -792,17 +827,8 @@ async function getProperties_hue_bridge(hostAddress, username, resourceFilter) {
}
function identify_hue_device(hostAddress, username, id) {
console.log("identify_hue_device");
let params = { host: hostAddress, user: username, lightId: id };
const res = requestLedDeviceIdentification("philipshue", params);
// TODO: error case unhandled
// res can be: false (timeout) or res.error (not found)
if (res && !res.error) {
const r = res.info
console.log(r);
}
requestLedDeviceIdentification("philipshue", params);
}
function getHueIPs() {
@ -1151,7 +1177,9 @@ function get_hue_lights() {
cC++;
}
}
(cC == 0) ? $('#btn_wiz_save').attr("disabled", true) : $('#btn_wiz_save').attr("disabled", false);
(cC == 0 || window.readOnlyMode) ? $('#btn_wiz_save').attr("disabled", true) : $('#btn_wiz_save').attr("disabled", false);
});
}
$('.hue_sel_watch').trigger('change');
@ -1263,14 +1291,7 @@ async function getProperties_wled(hostAddress, resourceFilter) {
function identify_wled(hostAddress) {
let params = { host: hostAddress };
const res = requestLedDeviceIdentification("wled", params);
// TODO: error case unhandled
// res can be: false (timeout) or res.error (not found)
if (res && !res.error) {
const r = res.info
console.log(r);
}
requestLedDeviceIdentification("wled", params);
}
//****************************
@ -1382,14 +1403,6 @@ function beginWizardYeelight() {
$('#btn_wiz_abort').off().on('click', resetWizard);
}
function getHostInLights(hostname) {
return lights.filter(
function (lights) {
return lights.host === hostname
}
);
}
async function discover_yeelight_lights() {
var light = {};
// Get discovered lights
@ -1406,10 +1419,9 @@ async function discover_yeelight_lights() {
if (device.hostname !== "") {
if (getHostInLights(device.hostname).length === 0) {
light = {};
var light = {};
light.host = device.hostname;
light.port = device.port;
light.name = device.other.name;
light.model = device.other.model;
lights.push(light);
@ -1427,7 +1439,7 @@ async function discover_yeelight_lights() {
if (host !== "")
if (getHostInLights(host).length === 0) {
light = {};
var light = {};
light.host = host;
light.port = port;
light.name = configuredLights[keyConfig].name;
@ -1446,7 +1458,7 @@ function assign_yeelight_lights() {
// If records are left for configuration
if (Object.keys(lights).length > 0) {
$('#wh_topcontainer').toggle(false);
$('#yee_ids_t,#btn_wiz_save').toggle(true);
$('#yee_ids_t, #btn_wiz_save').toggle(true);
var lightOptions = [
"top", "topleft", "topright",
@ -1478,7 +1490,7 @@ function assign_yeelight_lights() {
options += '>' + $.i18n(txt + val) + '</option>';
}
var enabled = 'enabled'
var enabled = 'enabled';
if (!models.includes(lights[lightid].model)) {
var enabled = 'disabled';
options = '<option value=disabled>' + $.i18n('wiz_yeelight_unsupported') + '</option>';
@ -1497,7 +1509,8 @@ function assign_yeelight_lights() {
cC++;
}
}
if (cC === 0)
if (cC === 0 || window.readOnlyMode)
$('#btn_wiz_save').attr("disabled", true);
else
$('#btn_wiz_save').attr("disabled", false);
@ -1505,7 +1518,7 @@ function assign_yeelight_lights() {
$('.yee_sel_watch').trigger('change');
}
else {
var noLightsTxt = '<p style="font-weight:bold;color:red;">' + $.i18n('wiz_yeelight_noLights') + '</p>';
var noLightsTxt = '<p style="font-weight:bold;color:red;">' + $.i18n('wiz_noLights','Yeelights') + '</p>';
$('#wizp2_body').append(noLightsTxt);
}
}
@ -1527,13 +1540,7 @@ async function getProperties_yeelight(hostname, port) {
function identify_yeelight_device(hostname, port) {
let params = { hostname: hostname, port: port };
const res = requestLedDeviceIdentification("yeelight", params);
// TODO: error case unhandled
// res can be: false (timeout) or res.error (not found)
if (res && !res.error) {
//const r = res.info;
}
requestLedDeviceIdentification("yeelight", params);
}
//****************************
@ -1580,7 +1587,7 @@ function beginWizardAtmoOrb() {
lights = [];
configuredLights = [];
configruedOrbIds = conf_editor.getEditor("root.specificOptions.orbIds").getValue().trim();
var configruedOrbIds = conf_editor.getEditor("root.specificOptions.orbIds").getValue().trim();
if (configruedOrbIds.length !== 0) {
configuredLights = configruedOrbIds.split(",").map(Number);
}
@ -1640,24 +1647,19 @@ function beginWizardAtmoOrb() {
$('#btn_wiz_abort').off().on('click', resetWizard);
}
function getIdInLights(id) {
return lights.filter(
function (lights) {
return lights.id === id
}
);
}
async function discover_atmoorb_lights(multiCastGroup, multiCastPort) {
var light = {};
if (multiCastGroup === "")
multiCastGroup = "239.255.255.250";
var params = {};
if (multiCastGroup !== "")
{
params.multiCastGroup = multiCastGroup;
}
if (multiCastPort === "")
multiCastPort = 49692;
let params = { multiCastGroup: multiCastGroup, multiCastPort: multiCastPort };
if (multiCastPort !== 0)
{
params.multiCastPort = multiCastPort;
}
// Get discovered lights
const res = await requestLedDeviceDiscovery('atmoorb', params);
@ -1665,13 +1667,13 @@ async function discover_atmoorb_lights(multiCastGroup, multiCastPort) {
// TODO: error case unhandled
// res can be: false (timeout) or res.error (not found)
if (res && !res.error) {
const r = res.info
const r = res.info;
// Process devices returned by discovery
for (const device of r.devices) {
if (device.id !== "") {
if (getIdInLights(device.id).length === 0) {
light = {};
var light = {};
light.id = device.id;
light.ip = device.ip;
light.host = device.hostname;
@ -1684,7 +1686,7 @@ async function discover_atmoorb_lights(multiCastGroup, multiCastPort) {
for (const keyConfig in configuredLights) {
if (configuredLights[keyConfig] !== "" && !isNaN(configuredLights[keyConfig])) {
if (getIdInLights(configuredLights[keyConfig]).length === 0) {
light = {};
var light = {};
light.id = configuredLights[keyConfig];
light.ip = "";
light.host = "";
@ -1735,9 +1737,9 @@ function assign_atmoorb_lights() {
options += '>' + $.i18n(txt + val) + '</option>';
}
var enabled = 'enabled'
var enabled = 'enabled';
if (orbId < 1 || orbId > 255) {
enabled = 'disabled'
enabled = 'disabled';
options = '<option value=disabled>' + $.i18n('wiz_atmoorb_unsupported') + '</option>';
}
@ -1759,7 +1761,7 @@ function assign_atmoorb_lights() {
cC++;
}
}
if (cC === 0)
if (cC === 0 || window.readOnlyMode)
$('#btn_wiz_save').attr("disabled", true);
else
$('#btn_wiz_save').attr("disabled", false);
@ -1767,20 +1769,14 @@ function assign_atmoorb_lights() {
$('.orb_sel_watch').trigger('change');
}
else {
var noLightsTxt = '<p style="font-weight:bold;color:red;">' + $.i18n('wiz_atmoorb_noLights') + '</p>';
var noLightsTxt = '<p style="font-weight:bold;color:red;">' + $.i18n('wiz_noLights','AtmoOrbs') + '</p>';
$('#wizp2_body').append(noLightsTxt);
}
}
function identify_atmoorb_device(orbId) {
let params = { id: orbId };
const res = requestLedDeviceIdentification("atmoorb", params);
// TODO: error case unhandled
// res can be: false (timeout) or res.error (not found)
if (res && !res.error) {
const r = res.info
}
requestLedDeviceIdentification("atmoorb", params);
}
//****************************
@ -1829,16 +1825,197 @@ async function getProperties_nanoleaf(hostAddress, authToken, resourceFilter) {
function identify_nanoleaf(hostAddress, authToken) {
let params = { host: hostAddress, token: authToken };
requestLedDeviceIdentification("nanoleaf", params);
}
//****************************
// Wizard Cololight
//****************************
var lights = null;
var selectedLightId = null;
function startWizardCololight(e) {
//create html
var cololight_title = 'wiz_cololight_title';
var cololight_intro1 = 'wiz_cololight_intro1';
$('#wiz_header').html('<i class="fa fa-magic fa-fw"></i>' + $.i18n(cololight_title));
$('#wizp1_body').html('<h4 style="font-weight:bold;text-transform:uppercase;">' + $.i18n(cololight_title) + '</h4><p>' + $.i18n(cololight_intro1) + '</p>');
$('#wizp1_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_cont"><i class="fa fa-fw fa-check"></i>' + $.i18n('general_btn_continue') + '</button><button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-fw fa-close"></i>' + $.i18n('general_btn_cancel') + '</button>');
$('#wizp2_body').html('<div id="wh_topcontainer"></div>');
$('#wh_topcontainer').append('<div class="form-group" id="usrcont" style="display:none"></div>');
$('#wizp2_body').append('<div id="colo_ids_t" style="display:none"><p style="font-weight:bold" id="colo_id_headline">' + $.i18n('wiz_cololight_desc2') + '</p></div>');
createTable("lidsh", "lidsb", "colo_ids_t");
$('.lidsh').append(createTableRow([$.i18n('edt_dev_spec_lights_title'), $.i18n('wiz_identify')], true));
$('#wizp2_footer').html('<button type="button" class="btn btn-primary" id="btn_wiz_save" style="display:none"><i class="fa fa-fw fa-save"></i>'
+ $.i18n('general_btn_save') + '</button><buttowindow.serverConfig.device = d;n type="button" class="btn btn-danger" id="btn_wiz_abort"><i class="fa fa-fw fa-close"></i>'
+ $.i18n('general_btn_cancel') + '</button>');
//open modal
$("#wizard_modal").modal({
backdrop: "static",
keyboard: false,
show: true
});
//listen for continue
$('#btn_wiz_cont').off().on('click', function () {
beginWizardCololight();
$('#wizp1').toggle(false);
$('#wizp2').toggle(true);
});
}
function beginWizardCololight() {
lights = [];
discover_cololights();
$('#btn_wiz_save').off().on("click", function () {
//LED device config
//Start with a clean configuration
var d = {};
d.type = 'cololight';
//Cololight does not resolve into stable hostnames (as devices named the same), therefore use IP
if (!lights[selectedLightId].ip) {
d.host = lights[selectedLightId].host;
} else {
d.host = lights[selectedLightId].ip;
}
var coloLightProperties = lights[selectedLightId].props;
if (Object.keys(coloLightProperties).length === 0) {
alert($.i18n('wiz_cololight_noprops'));
d.hardwareLedCount = 1;
} else {
if (coloLightProperties.ledCount > 0) {
d.hardwareLedCount = coloLightProperties.ledCount;
} else if (coloLightProperties.modelType === "Strip")
d.hardwareLedCount = 120;
}
d.colorOrder = conf_editor.getEditor("root.generalOptions.colorOrder").getValue();
d.latchTime = parseInt(conf_editor.getEditor("root.specificOptions.latchTime").getValue());;
window.serverConfig.device = d;
//LED layout - have initial layout prepared matching the LED-count
var coloLightLedConfig = [];
if (coloLightProperties.modelType === "Strip") {
coloLightLedConfig = createClassicLedLayoutSimple(d.hardwareLedCount / 2, d.hardwareLedCount / 4, d.hardwareLedCount / 4, 0, d.hardwareLedCount / 4 * 3, false);
} else {
coloLightLedConfig = createClassicLedLayoutSimple(0, 0, 0, d.hardwareLedCount, 0, true);
}
window.serverConfig.leds = coloLightLedConfig;
//smoothing off
window.serverConfig.smoothing.enable = false;
requestWriteConfig(window.serverConfig, true);
resetWizard();
});
$('#btn_wiz_abort').off().on('click', resetWizard);
}
async function discover_cololights() {
const res = await requestLedDeviceDiscovery('cololight');
const res = requestLedDeviceIdentification("nanoleaf", params);
// TODO: error case unhandled
// res can be: false (timeout) or res.error (not found)
if (res && !res.error) {
const r = res.info
console.log(r);
const r = res.info;
// Process devices returned by discovery
for (const device of r.devices) {
if (device.ip !== "") {
if (getIpInLights(device.ip).length === 0) {
var light = {};
light.ip = device.ip;
light.host = device.hostname;
light.name = device.name;
light.type = device.type;
lights.push(light);
}
}
}
assign_cololight_lights();
}
}
function assign_cololight_lights() {
// If records are left for configuration
if (Object.keys(lights).length > 0) {
$('#wh_topcontainer').toggle(false);
$('#colo_ids_t, #btn_wiz_save').toggle(true);
$('.lidsb').html("");
var options = "";
for (var lightid in lights) {
lights[lightid].id = lightid;
var lightHostname = lights[lightid].host;
var lightIP = lights[lightid].ip;
var val = lightHostname + " (" + lightIP + ")";
options += '<option value="' + lightid + '">' + val + '</option>';
}
var enabled = 'enabled';
$('.lidsb').append(createTableRow(['<select id="colo_select_id" ' + enabled + ' class="colo_sel_watch form-control">'
+ options
+ '</select>', '<button id="wiz_identify_btn" class="btn btn-sm btn-primary">'
+ $.i18n('wiz_identify') + '</button>']));
$('.colo_sel_watch').bind("change", function () {
selectedLightId = $('#colo_select_id').val();
var lightIP = lights[selectedLightId].ip;
$('#wiz_identify_btn').unbind().bind('click', function (event) { identify_cololight_device(lightIP); });
if (!lights[selectedLightId].props) {
getProperties_cololight(lightIP);
}
});
$('.colo_sel_watch').trigger('change');
}
else {
var noLightsTxt = '<p style="font-weight:bold;color:red;">' + $.i18n('wiz_noLights','Cololights') + '</p>';
$('#wizp2_body').append(noLightsTxt);
}
}
async function getProperties_cololight(ip) {
let params = { host: ip };
const res = await requestLedDeviceProperties('cololight', params);
if (res && !res.error) {
var coloLightProperties = res.info;
//Store properties along light with given IP-address
var id = getIpInLights(ip)[0].id;
lights[id].props = coloLightProperties;
}
}
function identify_cololight_device(hostAddress) {
let params = { host: hostAddress };
requestLedDeviceIdentification("cololight", params);
}
//****************************
// Wizard/Routines RS232-Devices
//****************************
@ -1860,7 +2037,6 @@ async function discover_providerRs232(rs232Type) {
//****************************
async function discover_providerHid(hidType) {
const res = await requestLedDeviceDiscovery(hidType);
console.log("discover_providerHid", res);
// TODO: error case unhandled
// res can be: false (timeout) or res.error (not found)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -27,6 +27,7 @@ sudo apt-get install \
libssl-dev \
libjpeg-dev \
libqt5sql5-sqlite \
libqt5svg5-dev \
zlib1g-dev \
if [ -e /dev/vc-cma -a -e /dev/vc-mem ]

View File

@ -1,16 +0,0 @@
[Unit]
Description=Hyperion ambient light systemd service for OpenELEC/LibreELEC/RasPlex
After=graphical.target
After=network.target
[Service]
WorkingDirectory=/storage/hyperion/bin/
Environment=LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
ExecStart=./hyperiond /storage/.config/hyperion/hyperion.config.json
TimeoutStopSec=5
KillMode=mixed
Restart=on-failure
RestartSec=2
[Install]
WantedBy=default.target

View File

@ -311,6 +311,28 @@ macro(DeployWindows TARGET)
)
endforeach()
# Download DirectX End-User Runtimes (June 2010)
set(url "https://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe")
if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/dx_redist.exe")
file(DOWNLOAD "${url}" "${CMAKE_CURRENT_BINARY_DIR}/dx_redist.exe"
STATUS result
)
# Check if the download is successful
list(GET result 0 result_code)
if(NOT result_code EQUAL 0)
list(GET result 1 reason)
message(FATAL_ERROR "Could not download DirectX End-User Runtimes: ${reason}")
endif()
endif()
# Copy DirectX End-User Runtimes to 'hyperion'
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/dx_redist.exe
DESTINATION "bin"
COMPONENT "Hyperion"
)
else()
# Run CMake after target was built
add_custom_command(

32
cmake/FindDirectX9.cmake Normal file
View File

@ -0,0 +1,32 @@
# Find the DirectX 9 includes and library
# This module defines:
# DIRECTX9_INCLUDE_DIRS, where to find d3d9.h, etc.
# DIRECTX9_LIBRARIES, libraries to link against to use DirectX.
# DIRECTX9_FOUND, If false, do not try to use DirectX.
# DIRECTX9_ROOT_DIR, directory where DirectX was installed.
set(DIRECTX9_INCLUDE_PATHS
"$ENV{DXSDK_DIR}/Include"
"$ENV{DIRECTX_ROOT}/Include"
"C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include"
"C:/Program Files/Microsoft DirectX SDK (June 2010)/Include"
)
find_path(DIRECTX9_INCLUDE_DIRS d3dx9.h ${DIRECTX9_INCLUDE_PATHS} NO_DEFAULT_PATH)
get_filename_component(DIRECTX9_ROOT_DIR "${DIRECTX9_INCLUDE_DIRS}/.." ABSOLUTE)
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(DIRECTX9_LIBRARY_PATHS "${DIRECTX9_ROOT_DIR}/Lib/x64")
else ()
set(DIRECTX9_LIBRARY_PATHS "${DIRECTX9_ROOT_DIR}/Lib/x86" "${DIRECTX9_ROOT_DIR}/Lib")
endif ()
find_library(DIRECTX9_D3D9_LIBRARY d3d9 ${DIRECTX9_LIBRARY_PATHS} NO_DEFAULT_PATH)
find_library(DIRECTX9_D3DX9_LIBRARY d3dx9 ${DIRECTX9_LIBRARY_PATHS} NO_DEFAULT_PATH)
find_library(DIRECTX9_DXERR_LIBRARY DxErr ${DIRECTX9_LIBRARY_PATHS} NO_DEFAULT_PATH)
set(DIRECTX9_LIBRARIES ${DIRECTX9_D3D9_LIBRARY} ${DIRECTX9_D3DX9_LIBRARY} ${DIRECTX9_DXERR_LIBRARY})
# handle the QUIETLY and REQUIRED arguments and set DIRECTX9_FOUND to TRUE if all listed variables are TRUE
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(DirectX9 DEFAULT_MSG DIRECTX9_ROOT_DIR DIRECTX9_LIBRARIES DIRECTX9_INCLUDE_DIRS)
mark_as_advanced(DIRECTX9_INCLUDE_DIRS DIRECTX9_D3D9_LIBRARY DIRECTX9_D3DX9_LIBRARY DIRECTX9_DXERR_LIBRARY)

View File

@ -21,6 +21,7 @@ echo "---Hyperion ambient light postinstall ---"
#check system
CPU_RPI=`grep -m1 -c 'BCM2708\|BCM2709\|BCM2710\|BCM2835\|BCM2836\|BCM2837\|BCM2711' /proc/cpuinfo`
CPU_X32X64=`uname -m | grep 'x86_32\|i686\|x86_64' | wc -l`
OS_HYPERBIAN=`grep ID /etc/os-release | grep -m1 -c HyperBian`
#Check for a bootloader as Berryboot
BOOT_BERRYBOOT=$(grep -m1 -c '\(/var/media\|/media/pi\)/berryboot' /etc/mtab)
@ -47,12 +48,19 @@ if grep -m1 systemd /proc/1/comm > /dev/null
then
echo "---> init deamon: systemd"
# systemd
install_file /usr/share/hyperion/service/hyperion.systemd /etc/systemd/system/hyperiond@.service
# service registration just on Raspberry Pi, probably need to ask the user how we should use the service. TODO service start in user login scope eg for x11?!
if [ $ENABLE_SERVICE -eq 1 ]; then
systemctl enable hyperiond"@${FOUND_USR}".service
start_msg="--> systemctl start hyperiond for user ${FOUND_USR}"
systemctl start hyperiond"@${FOUND_USR}"
if [ $OS_HYPERBIAN -eq 1 ]; then
# start service only
echo "--> Service file already exists, skip creation"
start_msg="--> systemctl start hyperion"
systemctl start hyperion
else
install_file /usr/share/hyperion/service/hyperion.systemd /etc/systemd/system/hyperiond@.service
# service registration just on Raspberry Pi, probably need to ask the user how we should use the service. TODO service start in user login scope eg for x11?!
if [ $ENABLE_SERVICE -eq 1 ]; then
systemctl enable hyperiond"@${FOUND_USR}".service
start_msg="--> systemctl start hyperiond for user ${FOUND_USR}"
systemctl start hyperiond"@${FOUND_USR}"
fi
fi
elif [ -e /sbin/initctl ]
@ -92,11 +100,13 @@ ln -fs $BINSP/hyperion-xcb $BINTP/hyperion-xcb 2>/dev/null
ln -fs $BINSP/hyperion-aml $BINTP/hyperion-aml 2>/dev/null
ln -fs $BINSP/hyperion-qt $BINTP/hyperion-qt 2>/dev/null
# install desktop icons
echo "---> Install Hyperion desktop icons"
mkdir /usr/share/pixmaps/hyperion 2>/dev/null
cp /usr/share/hyperion/desktop/*.png /usr/share/pixmaps/hyperion 2>/dev/null
desktop-file-install /usr/share/hyperion/desktop/hyperiond.desktop 2>/dev/null
# install desktop icons / not on HyperBian
if [ $OS_HYPERBIAN -ne 1 ]; then
echo "---> Install Hyperion desktop icons"
mkdir /usr/share/pixmaps/hyperion 2>/dev/null
cp /usr/share/hyperion/desktop/*.png /usr/share/pixmaps/hyperion 2>/dev/null
desktop-file-install /usr/share/hyperion/desktop/hyperiond.desktop 2>/dev/null
fi
# cleanup desktop icons
rm -r /usr/share/hyperion/desktop 2>/dev/null

View File

@ -12,7 +12,7 @@ then
then
echo "--> stop init deamon: systemd"
# systemd
systemctl stop hyperiond"@${FOUND_USR}" 2> /dev/null
systemctl stop hyperion hyperiond"@${FOUND_USR}" 2> /dev/null
elif [ -e /sbin/initctl ]
then

View File

@ -13,10 +13,10 @@ if grep -m1 systemd /proc/1/comm > /dev/null
then
echo "---> stop init deamon: systemd"
# systemd
$HYPERION_RUNNING && systemctl stop hyperiond"@${FOUND_USR}" 2> /dev/null
# disable user specific symlink
$HYPERION_RUNNING && systemctl stop hyperion hyperiond"@${FOUND_USR}" 2> /dev/null
# disable user specific symlink / not on HyperBian
echo "---> Disable service and remove entry"
systemctl -q disable hyperiond"@${FOUND_USR}"
systemctl -q disable hyperiond"@${FOUND_USR}" 2> /dev/null
rm -v /etc/systemd/system/hyperiond@.service 2>/dev/null
elif [ -e /sbin/initctl ]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -43,6 +43,8 @@
;Tnstaller window branding text
BrandingText /TRIMLEFT "@CPACK_NSIS_BRANDING_TEXT@"
@CPACK_NSIS_EXTRA_DEFS@
@CPACK_NSIS_DEFINES@
!include Sections.nsh
@ -787,8 +789,15 @@ Section "-Core installation"
; Goto End
;End:
; Install Visual c++ Redistributable
ExecWait '"$INSTDIR\bin\vc_redist.x64.exe" /install /quiet'
; Install DirectX 9 Redistributable
ExecWait '"$INSTDIR\bin\dx_redist.exe" /q /t:"$INSTDIR\tmp"'
ExecWait '"$INSTDIR\tmp\DXSETUP.exe" /silent'
Delete '$INSTDIR\tmp\*.*'
RMDir '$INSTDIR\tmp'
SectionEnd
Section "-Add to path"

View File

@ -58,7 +58,7 @@ ENDIF()
# https://cmake.org/Wiki/CMake:CPackPackageGenerators
# .deb files for apt
SET ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/preinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/prerm" )
SET ( CPACK_DEBIAN_PACKAGE_DEPENDS "libcec4" )
SET ( CPACK_DEBIAN_PACKAGE_DEPENDS "libcec6 | libcec4" )
SET ( CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous" )
# .rpm for rpm
@ -105,19 +105,12 @@ SET ( CPACK_NSIS_HELP_LINK "https://www.hyperion-project.org")
SET ( CPACK_NSIS_URL_INFO_ABOUT "https://www.hyperion-project.org")
SET ( CPACK_NSIS_MUI_FINISHPAGE_RUN "hyperiond.exe")
SET ( CPACK_NSIS_BRANDING_TEXT "Hyperion-${HYPERION_VERSION}")
# custom nsis plugin directory
SET ( CPACK_NSIS_EXTRA_DEFS "!addplugindir ${CMAKE_SOURCE_DIR}/cmake/nsis/plugins")
# additional hyperiond startmenu link, won't be created if the user disables startmenu links
SET ( CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Hyperion (Console).lnk' '$INSTDIR\\\\bin\\\\hyperiond.exe' '-d -c'")
SET ( CPACK_NSIS_DELETE_ICONS_EXTRA "Delete '$SMPROGRAMS\\\\$MUI_TEMP\\\\Hyperion (Console).lnk'")
#SET ( CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Hyperion.lnk' '$INSTDIR\\\\bin\\\\hyperiond.exe'")
#SET ( CPACK_NSIS_DELETE_ICONS_EXTRA "Delete '$SMPROGRAMS\\\\$START_MENU\\\\Hyperion.lnk'")
# hyperiond desktop link
#SET ( CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$DESKTOP\\\\Hyperion.lnk' '$INSTDIR\\\\bin\\\\hyperiond.exe' ")
#SET ( CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "Delete '$DESKTOP\\\\Hyperion.lnk' ")
#SET ( CPACK_NSIS_EXTRA_INSTALL_COMMANDS "CreateShortCut \\\"$DESKTOP\\\\Hyperion.lnk\\\" \\\"$INSTDIR\\\\bin\\\\hyperiond.exe\\\" ")
#SET ( CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "Delete \\\"$DESKTOP\\\\Hyperion.lnk\\\" ")
# define the install components
# See also https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/Component-Install-With-CPack
# and https://cmake.org/cmake/help/latest/module/CPackComponent.html

View File

@ -165,10 +165,7 @@
"pixelDecimation" : 8,
// valid for qt
"display" 0,
// valid for framebuffer
"device" : "/dev/fb0"
"display" 0
},
/// The black border configuration, contains the following items:
@ -178,7 +175,7 @@
/// * borderFrameCnt : Number of frames before a consistent detected border gets set (default 50)
/// * maxInconsistentCnt : Number of inconsistent frames that are ignored before a new border gets a chance to proof consistency
/// * blurRemoveCnt : Number of pixels that get removed from the detected border to cut away blur (default 1)
/// * mode : Border detection mode (values=default,classic,osd)
/// * mode : Border detection mode (values=default,classic,osd,letterbox)
"blackborderdetector" :
{
"enable" : true,

View File

@ -48,12 +48,16 @@
"smoothing" :
{
"enable" : true,
"type" : "linear",
"time_ms" : 200,
"updateFrequency" : 25.0000,
"updateDelay" : 0,
"continuousOutput" : true
"enable" : true,
"type" : "linear",
"time_ms" : 200,
"updateFrequency" : 25.0000,
"interpolationRate" : 25.0000,
"outputRate" : 25.0000,
"decay" : 1,
"dithering" : false,
"updateDelay" : 0,
"continuousOutput" : true
},
"grabberV4L2" :
@ -91,7 +95,7 @@
"cropRight" : 0,
"cropTop" : 0,
"cropBottom" : 0,
"device" : "/dev/fb0"
"display" : 0
},
"blackborderdetector" :
@ -116,7 +120,7 @@
"backgroundEffect" :
{
"enable" : true,
"enable" : false,
"type" : "effect",
"color" : [255,138,0],
"effect" : "Warm mood blobs"
@ -193,10 +197,10 @@
{
"classic":
{
"top" : 8,
"bottom" : 8,
"left" : 5,
"right" : 5,
"top" : 1,
"bottom" : 0,
"left" : 0,
"right" : 0,
"glength" : 0,
"gpos" : 0,
"position" : 0,
@ -217,8 +221,8 @@
"matrix":
{
"ledshoriz": 10,
"ledsvert" : 10,
"ledshoriz": 1,
"ledsvert" : 1,
"cabling" : "snake",
"start" : "top-left"
}
@ -227,160 +231,10 @@
"leds":
[
{
"hmax": 0.125,
"hmax": 1,
"hmin": 0,
"vmax": 0.08,
"vmin": 0
},
{
"hmax": 0.25,
"hmin": 0.125,
"vmax": 0.08,
"vmin": 0
},
{
"hmax": 0.375,
"hmin": 0.25,
"vmax": 0.08,
"vmin": 0
},
{
"hmax": 0.5,
"hmin": 0.375,
"vmax": 0.08,
"vmin": 0
},
{
"hmax": 0.625,
"hmin": 0.5,
"vmax": 0.08,
"vmin": 0
},
{
"hmax": 0.75,
"hmin": 0.625,
"vmax": 0.08,
"vmin": 0
},
{
"hmax": 0.875,
"hmin": 0.75,
"vmax": 0.08,
"vmin": 0
},
{
"hmax": 1,
"hmin": 0.875,
"vmax": 0.08,
"vmin": 0
},
{
"hmax": 1,
"hmin": 0.95,
"vmax": 0.2,
"vmin": 0
},
{
"hmax": 1,
"hmin": 0.95,
"vmax": 0.4,
"vmin": 0.2
},
{
"hmax": 1,
"hmin": 0.95,
"vmax": 0.6,
"vmin": 0.4
},
{
"hmax": 1,
"hmin": 0.95,
"vmax": 0.8,
"vmin": 0.6
},
{
"hmax": 1,
"hmin": 0.95,
"vmax": 1,
"vmin": 0.8
},
{
"hmax": 1,
"hmin": 0.875,
"vmax": 1,
"vmin": 0.92
},
{
"hmax": 0.875,
"hmin": 0.75,
"vmax": 1,
"vmin": 0.92
},
{
"hmax": 0.75,
"hmin": 0.625,
"vmax": 1,
"vmin": 0.92
},
{
"hmax": 0.625,
"hmin": 0.5,
"vmax": 1,
"vmin": 0.92
},
{
"hmax": 0.5,
"hmin": 0.375,
"vmax": 1,
"vmin": 0.92
},
{
"hmax": 0.375,
"hmin": 0.25,
"vmax": 1,
"vmin": 0.92
},
{
"hmax": 0.25,
"hmin": 0.125,
"vmax": 1,
"vmin": 0.92
},
{
"hmax": 0.125,
"hmin": 0,
"vmax": 1,
"vmin": 0.92
},
{
"hmax": 0.05,
"hmin": 0,
"vmax": 1,
"vmin": 0.8
},
{
"hmax": 0.05,
"hmin": 0,
"vmax": 0.8,
"vmin": 0.6
},
{
"hmax": 0.05,
"hmin": 0,
"vmax": 0.6,
"vmin": 0.4
},
{
"hmax": 0.05,
"hmin": 0,
"vmax": 0.4,
"vmin": 0.2
},
{
"hmax": 0.05,
"hmin": 0,
"vmax": 0.2,
"vmin": 0
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 389 KiB

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 KiB

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 KiB

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 460 KiB

After

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 KiB

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 KiB

After

Width:  |  Height:  |  Size: 498 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Some files were not shown because too many files have changed in this diff Show More