always output latest version of config file to webui (#307)

* always output latest version of config file to webui

* fix permissions after default config export

* tune code

* set permissions for exported effects

* use qt setperm instead of chmod
update effects code style a bit

* add fallback when config is not readable
This commit is contained in:
redPanther 2016-12-03 21:11:52 +01:00 committed by GitHub
parent 82a140f5ed
commit 5b0e401ca5
8 changed files with 42 additions and 37 deletions

View File

@ -1,6 +1,4 @@
import hyperion import hyperion, time, colorsys
import time
import colorsys
# Get the parameters # Get the parameters
speed = float(hyperion.args.get('speed', 1.0)) speed = float(hyperion.args.get('speed', 1.0))

View File

@ -1,7 +1,4 @@
import hyperion import hyperion, time, colorsys, math
import time
import colorsys
import math
from random import random from random import random
# Get the parameters # Get the parameters

View File

@ -1,23 +1,21 @@
import hyperion import hyperion, time, colorsys
import time
import colorsys
# Get the parameters # Get the parameters
rotationTime = float(hyperion.args.get('rotation-time', 2.0)) rotationTime = float(hyperion.args.get('rotation-time', 2.0))
colorOne = hyperion.args.get('color_one', (255,0,0)) colorOne = hyperion.args.get('color_one', (255,0,0))
colorTwo = hyperion.args.get('color_two', (0,0,255)) colorTwo = hyperion.args.get('color_two', (0,0,255))
colorsCount = hyperion.args.get('colors_count', hyperion.ledCount/2) colorsCount = hyperion.args.get('colors_count', hyperion.ledCount/2)
reverse = bool(hyperion.args.get('reverse', False)) reverse = bool(hyperion.args.get('reverse', False))
# Check parameters # Check parameters
rotationTime = max(0.1, rotationTime) rotationTime = max(0.1, rotationTime)
colorsCount = min(hyperion.ledCount/2, colorsCount) colorsCoun t = min(hyperion.ledCount/2, colorsCount)
# Initialize the led data # Initialize the led data
hsv1 = colorsys.rgb_to_hsv(colorOne[0]/255.0, colorOne[1]/255.0, colorOne[2]/255.0) hsv1 = colorsys.rgb_to_hsv(colorOne[0]/255.0, colorOne[1]/255.0, colorOne[2]/255.0)
hsv2 = colorsys.rgb_to_hsv(colorTwo[0]/255.0, colorTwo[1]/255.0, colorTwo[2]/255.0) hsv2 = colorsys.rgb_to_hsv(colorTwo[0]/255.0, colorTwo[1]/255.0, colorTwo[2]/255.0)
colorBlack = (0,0,0) colorBlack = (0,0,0)
ledData = bytearray() ledData = bytearray()
for i in range(hyperion.ledCount): for i in range(hyperion.ledCount):
if i <= colorsCount: if i <= colorsCount:
rgb = colorsys.hsv_to_rgb(hsv1[0], hsv1[1], hsv1[2]) rgb = colorsys.hsv_to_rgb(hsv1[0], hsv1[1], hsv1[2])

View File

@ -1,17 +1,15 @@
import hyperion import hyperion, time, colorsys
import time
import colorsys
# Get the parameters # Get the parameters
rotationTime = float(hyperion.args.get('rotation-time', 30.0)) rotationTime = float(hyperion.args.get('rotation-time', 30.0))
brightness = float(hyperion.args.get('brightness', 1.0)) brightness = float(hyperion.args.get('brightness', 1.0))
saturation = float(hyperion.args.get('saturation', 1.0)) saturation = float(hyperion.args.get('saturation', 1.0))
reverse = bool(hyperion.args.get('reverse', False)) reverse = bool(hyperion.args.get('reverse', False))
# Check parameters # Check parameters
rotationTime = max(0.1, rotationTime) rotationTime = max(0.1, rotationTime)
brightness = max(0.0, min(brightness, 1.0)) brightness = max(0.0, min(brightness, 1.0))
saturation = max(0.0, min(saturation, 1.0)) saturation = max(0.0, min(saturation, 1.0))
# Calculate the sleep time and hue increment # Calculate the sleep time and hue increment
sleepTime = 0.1 sleepTime = 0.1

View File

@ -8,7 +8,7 @@ centerY = float(hyperion.args.get('center_y', 0.5))
sleepTime = max(0.1, rotationTime) / 360 sleepTime = max(0.1, rotationTime) / 360
angle = 0 angle = 0
centerX = int(round(hyperion.imageWidth)*centerX) centerX = int(round(float(hyperion.imageWidth)*centerX))
centerY = int(round(float(hyperion.imageHeight)*centerY)) centerY = int(round(float(hyperion.imageHeight)*centerY))
increment = -1 if reverse else 1 increment = -1 if reverse else 1

View File

@ -1,6 +1,4 @@
import hyperion import hyperion, time, colorsys
import time
import colorsys
# Get the parameters # Get the parameters
sleepTime = float(hyperion.args.get('sleepTime', 1.0)) sleepTime = float(hyperion.args.get('sleepTime', 1.0))

View File

@ -1042,8 +1042,15 @@ void JsonClientConnection::handleConfigGetCommand(const QJsonObject& message, co
result["success"] = true; result["success"] = true;
result["command"] = command; result["command"] = command;
result["tan"] = tan; result["tan"] = tan;
const QJsonObject & config = _hyperion->getQJsonConfig();
result["result"] = config; try
{
result["result"] = QJsonFactory::readJson(QString::fromStdString(_hyperion->getConfigFileName()));
}
catch(...)
{
result["result"] = _hyperion->getQJsonConfig();
}
// send the result // send the result
sendMessage(result); sendMessage(result);

View File

@ -29,6 +29,8 @@
using namespace commandline; using namespace commandline;
#define PERM0664 QFileDevice::ReadOwner | QFileDevice::ReadGroup | QFileDevice::ReadOther | QFileDevice::WriteOwner | QFileDevice::WriteGroup
void signal_handler(const int signum) void signal_handler(const int signum)
{ {
QCoreApplication::quit(); QCoreApplication::quit();
@ -128,16 +130,19 @@ int main(int argc, char** argv)
{ {
std::cout << "extract to folder: " << std::endl; std::cout << "extract to folder: " << std::endl;
QStringList filenames = directory.entryList(QStringList() << "*", QDir::Files, QDir::Name | QDir::IgnoreCase); QStringList filenames = directory.entryList(QStringList() << "*", QDir::Files, QDir::Name | QDir::IgnoreCase);
QString destFileName;
foreach (const QString & filename, filenames) foreach (const QString & filename, filenames)
{ {
if (QFile::exists(destDir.dirName()+"/"+filename)) destFileName = destDir.dirName()+"/"+filename;
if (QFile::exists(destFileName))
{ {
QFile::remove(destDir.dirName()+"/"+filename); QFile::remove(destFileName);
} }
std::cout << "Extract: " << filename.toStdString() << " ... "; std::cout << "Extract: " << filename.toStdString() << " ... ";
if (QFile::copy(QString(":/effects/")+filename, destDir.dirName()+"/"+filename)) if (QFile::copy(QString(":/effects/")+filename, destFileName))
{ {
QFile::setPermissions(destFileName, PERM0664 );
std::cout << "ok" << std::endl; std::cout << "ok" << std::endl;
} }
else else
@ -176,11 +181,15 @@ int main(int argc, char** argv)
QDir().mkpath(FileUtils::getDirName(exportConfigFileTarget)); QDir().mkpath(FileUtils::getDirName(exportConfigFileTarget));
if (QFile::copy(":/hyperion_default.config",exportConfigFileTarget)) if (QFile::copy(":/hyperion_default.config",exportConfigFileTarget))
{ {
QFile::setPermissions(exportConfigFileTarget, PERM0664 );
Info(log, "export complete."); Info(log, "export complete.");
if (exitAfterexportDefaultConfig) return 0; if (exitAfterexportDefaultConfig) return 0;
} }
Error(log, "can not export to %s",exportConfigFileTarget.toLocal8Bit().constData()); else
if (exitAfterexportDefaultConfig) return 1; {
Error(log, "error while export to %s",exportConfigFileTarget.toLocal8Bit().constData());
if (exitAfterexportDefaultConfig) return 1;
}
} }
if (configFiles.size() == 0) if (configFiles.size() == 0)