From f243dc8d7527cde3d5b5a4f6e659cf7604f5ae2a Mon Sep 17 00:00:00 2001 From: Jakob Stendahl Date: Thu, 21 Oct 2021 14:12:12 +0200 Subject: :sparkles: Make all variable-types changeable from both home and editor --- NeoRuntime/Runtime/luxcena_neo/__init__.py | 2 +- NeoRuntime/Runtime/luxcena_neo/neo_behaviour.py | 20 +++---- src/SelfUpdater/index.js | 4 +- src/SocketIO/index.js | 2 +- src_frontend/ComponentLib/Toggle.svelte | 50 +++++++++++++++++ src_frontend/Components/Editor/Controls.svelte | 28 ++++++++-- .../MainControls/ControlComponents.svelte | 6 ++- .../Components/MainControls/ControlOthers.svelte | 62 +++++++++++++++++----- 8 files changed, 141 insertions(+), 33 deletions(-) create mode 100644 src_frontend/ComponentLib/Toggle.svelte diff --git a/NeoRuntime/Runtime/luxcena_neo/__init__.py b/NeoRuntime/Runtime/luxcena_neo/__init__.py index 606f365..91fdfba 100644 --- a/NeoRuntime/Runtime/luxcena_neo/__init__.py +++ b/NeoRuntime/Runtime/luxcena_neo/__init__.py @@ -1,2 +1,2 @@ -from .neo_behaviour import NeoBehaviour, VariableType, ColorVariable, FloatVariable, IntegerVariable, BooleanVariable +from .neo_behaviour import NeoBehaviour, VariableType, ColorVariable, FloatVariable, IntegerVariable, BooleanVariable, Trigger import luxcena_neo.color_utils as utils diff --git a/NeoRuntime/Runtime/luxcena_neo/neo_behaviour.py b/NeoRuntime/Runtime/luxcena_neo/neo_behaviour.py index 2eef444..d4ee9bd 100644 --- a/NeoRuntime/Runtime/luxcena_neo/neo_behaviour.py +++ b/NeoRuntime/Runtime/luxcena_neo/neo_behaviour.py @@ -210,7 +210,7 @@ class IntegerVariable(Variable): def __init__(self, name: str, default: int = 0, min_val: int = 0, max_val: int = 255, **kwargs): self.__min = min_val self.__max = max_val - super().__init__(name, default, VariableType.INT) + super().__init__(name, default, VariableType.INT, **kwargs) @Variable.value.setter def value(self, value): @@ -229,10 +229,11 @@ class IntegerVariable(Variable): class FloatVariable(Variable): - def __init__(self, name: str, default: float = 0.0, min_val: float = 0.0, max_val: float = 255.0, **kwargs): + def __init__(self, name: str, default: float = 0.0, min_val: float = 0.0, max_val: float = 255.0, step: float = 0.5, **kwargs): self.__min = min_val self.__max = max_val - super().__init__(name, default, VariableType.FLOAT) + self.__step = step + super().__init__(name, default, VariableType.FLOAT, **kwargs) @Variable.value.setter def value(self, value): @@ -249,19 +250,19 @@ class FloatVariable(Variable): return round(self.value, 2) def to_dict(self): - return {"name": self.name, "value": self.value, "type": self.var_type, "min": self.__min, "max": self.__max} + return {"name": self.name, "value": self.value, "type": self.var_type, "min": self.__min, "max": self.__max, "step": self.__step} class BooleanVariable(Variable): def __init__(self, name: str, default: bool, **kwargs): - super().__init__(name, default, VariableType.BOOL) + super().__init__(name, default, VariableType.BOOL, **kwargs) @Variable.value.setter def value(self, value): try: - value = bool(value) + value = value.lower() == "true" super(BooleanVariable, type(self)).value.fset(self, value) except: print("Attempted to set {} to \"{}\", which is not a valid bool...".format(self.name, value)) @@ -273,9 +274,4 @@ class Trigger(Variable): @Variable.value.setter def value(self, value): - try: - value = bool(value) - if value: value = False - super(BooleanVariable, type(self)).value.fset(self, value) - except: - print("Attempted to set {} to \"{}\", which is not a valid bool...".format(self.name, value)) + super(Trigger, type(self)).value.fset(self, False) diff --git a/src/SelfUpdater/index.js b/src/SelfUpdater/index.js index 19ff4c2..cc4e298 100644 --- a/src/SelfUpdater/index.js +++ b/src/SelfUpdater/index.js @@ -283,11 +283,11 @@ class SelfUpdater { this.remotePackageJSON = JSON.parse(body); this.remoteVersionNumber = this.remotePackageJSON["version"]; if (this.localVersionNumber != this.remoteVersionNumber) { - logger.notice("A new version is available on \"" + this.repoBranch + "\" (v" + this.version + ")"); + logger.notice("A new version is available on \"" + this.branch + "\" (v" + this.remoteVersionNumber + ")"); this.newVersion = true; } else { - logger.info(`Running newest version (${this.newestVersion})`); + logger.info(`Running newest version (${this.localVersionNumber})`); this.newVersion = false; } } else { diff --git a/src/SocketIO/index.js b/src/SocketIO/index.js index 15b4a13..da140bb 100644 --- a/src/SocketIO/index.js +++ b/src/SocketIO/index.js @@ -53,7 +53,7 @@ function createOpenSocketNamespace(io) { socket.emit("power", neoModules.neoRuntimeManager.mode.globvars.get().power_on); }); socket.on("var:set", (name, value) => { - neoModules.neoRuntimeManager.mode.variables.set(name, value); + neoModules.neoRuntimeManager.mode.variables.set(name, value.toString()); }); socket.on("vars:get", () => { socket.emit("vars", neoModules.neoRuntimeManager.mode.variables.get()); diff --git a/src_frontend/ComponentLib/Toggle.svelte b/src_frontend/ComponentLib/Toggle.svelte new file mode 100644 index 0000000..bd24273 --- /dev/null +++ b/src_frontend/ComponentLib/Toggle.svelte @@ -0,0 +1,50 @@ + + + + + \ No newline at end of file diff --git a/src_frontend/Components/Editor/Controls.svelte b/src_frontend/Components/Editor/Controls.svelte index 302aa7a..4b5c8b6 100644 --- a/src_frontend/Components/Editor/Controls.svelte +++ b/src_frontend/Components/Editor/Controls.svelte @@ -13,12 +13,17 @@ } function setPower() { openSocket.emit("power:set", power_on); } function setVar(ev) { - openSocket.emit("var:set", ev.target.id, ev.target.value); + if (ev.target.type == "checkbox") { + openSocket.emit("var:set", ev.target.id, ev.target.checked); + } else { + openSocket.emit("var:set", ev.target.id, ev.target.value); + } } openSocket.on("power", (power) => power_on = power); openSocket.on("brightness", (value) => brightnessValue = value); openSocket.on("vars", (vars) => variables = vars); + openSocket.on("vars", (vars) => console.log(vars)); openSocket.on("var", (name, value) => { name = name.replace("variable/", ""); if (value.value == null) { @@ -27,6 +32,7 @@ variables[name] = value; } variables = variables; + console.log(variables); }); onMount(() => { @@ -75,9 +81,25 @@ {#each Object.entries(variables) as [name, value]} -
- +
+ + {#if value.type == "INT"} +
+ + {value.value} +
+ {:else if value.type == "FLOAT"} +
+ + {value.value} +
+ {:else if value.type == "BOOL"} + + {:else if value.type == "TRIGGER"} + + {:else} + {/if}
{/each}
\ No newline at end of file diff --git a/src_frontend/Components/MainControls/ControlComponents.svelte b/src_frontend/Components/MainControls/ControlComponents.svelte index 71c522a..f12ccbb 100644 --- a/src_frontend/Components/MainControls/ControlComponents.svelte +++ b/src_frontend/Components/MainControls/ControlComponents.svelte @@ -59,7 +59,7 @@ if (value.value == null) { delete variables[name]; } else { - variables[name] = value.value; + variables[name] = value; } variables = variables; } @@ -143,5 +143,7 @@ {#if Object.keys(colorVariables).length > 0} {/if} - + {#if Object.keys(variables).length > 0} + + {/if} \ No newline at end of file diff --git a/src_frontend/Components/MainControls/ControlOthers.svelte b/src_frontend/Components/MainControls/ControlOthers.svelte index 390daf9..4261c64 100644 --- a/src_frontend/Components/MainControls/ControlOthers.svelte +++ b/src_frontend/Components/MainControls/ControlOthers.svelte @@ -1,13 +1,16 @@
- {#each variables as variable} - - {#if variable.type == "range"} - + {#each Object.entries(variables) as [name, value]} +
+ {#if !["TRIGGER"].includes(value.type)} + + {/if} + + {#if value.type == "INT"} +
+ + {value.value} +
+ {:else if value.type == "FLOAT"} +
+ + {value.value} +
+ {:else if value.type == "BOOL"} + + {:else if value.type == "TRIGGER"} + {:else} - + {/if} +
{/each}
\ No newline at end of file -- cgit v1.2.3