mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-02-18 12:25:38 +00:00
Merge pull request #533 from WallK/godot-configurator-poc
Godot configurator POC progress
This commit is contained in:
commit
e8d79fdd3c
|
@ -4,9 +4,8 @@ func _ready():
|
||||||
self.pressed.connect(self._button_pressed)
|
self.pressed.connect(self._button_pressed)
|
||||||
|
|
||||||
func _button_pressed():
|
func _button_pressed():
|
||||||
var output = []
|
var output := [] #[] is shared, Array isn't (maybe fixed in 4.1)
|
||||||
# var exit_code = OS.execute("ls", ["-l", "/"], output, true)
|
var exit_code := OS.execute("touch", ["godot_configurator_hardcoded"], output)
|
||||||
var exit_code = OS.execute("touch", ["godot_configurator_hardcoded"], output)
|
|
||||||
print("exit code: ", exit_code)
|
print("exit code: ", exit_code)
|
||||||
print("output: ", output)
|
print("output: ", output)
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,7 @@ func _ready():
|
||||||
self.pressed.connect(self._button_pressed)
|
self.pressed.connect(self._button_pressed)
|
||||||
|
|
||||||
func _button_pressed():
|
func _button_pressed():
|
||||||
var output = []
|
var output := [] #[] is shared, Array isn't (maybe fixed in 4.1)
|
||||||
# var exit_code = OS.execute("ls", ["-l", "/"], output, true)
|
var exit_code := OS.execute("bash", ["touch_external.sh"], output)
|
||||||
var exit_code = OS.execute("bash", ["touch_external.sh"], output)
|
|
||||||
print("exit code: ", exit_code)
|
print("exit code: ", exit_code)
|
||||||
print("output: ",
|
print("output: ", output)
|
||||||
output)
|
|
||||||
|
|
32
tools/configurator/ProgressBar.gd
Normal file
32
tools/configurator/ProgressBar.gd
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
extends ProgressBar
|
||||||
|
|
||||||
|
var progress_file := "progress" #File with progress from 0 to 100
|
||||||
|
var progress_button: Button
|
||||||
|
var file := FileAccess
|
||||||
|
|
||||||
|
var prev_prog: float = 0
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
self.value = 0
|
||||||
|
progress_button = $"../HBoxContainerProgress/ProgressButton"
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
if file.file_exists(progress_file): #File to be removed after script is done
|
||||||
|
var file := FileAccess.open(progress_file, FileAccess.READ)
|
||||||
|
var _progress := float(file.get_as_text())
|
||||||
|
if prev_prog != _progress: #To not rewrite every frame
|
||||||
|
self.value = _progress
|
||||||
|
print("boom", _progress)
|
||||||
|
prev_prog = _progress
|
||||||
|
else:
|
||||||
|
if prev_prog == 100:
|
||||||
|
progress_button.disabled = false #Reenable progress button
|
||||||
|
prev_prog = 0
|
||||||
|
|
||||||
|
|
||||||
|
func _on_check_button_toggled(button_pressed):
|
||||||
|
var _fill_color := Color("999999")
|
||||||
|
if button_pressed:
|
||||||
|
_fill_color = Color("FF0000")
|
||||||
|
self.get("theme_override_styles/fill").set_bg_color(_fill_color)
|
||||||
|
|
17
tools/configurator/ProgressButton.gd
Normal file
17
tools/configurator/ProgressButton.gd
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
extends Button
|
||||||
|
|
||||||
|
var thread: Thread
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
self.pressed.connect(self._button_pressed)
|
||||||
|
|
||||||
|
func _button_pressed():
|
||||||
|
thread = Thread.new()
|
||||||
|
thread.start(_execute_bash.bind(["progress_file.sh"])) #Need to bind
|
||||||
|
self.disabled = true #To prevent multiple launches
|
||||||
|
# thread.wait_to_finish() #Should be done somewhere
|
||||||
|
|
||||||
|
func _execute_bash(filename):
|
||||||
|
var output := []
|
||||||
|
var exit_code := OS.execute("bash", filename, output)
|
||||||
|
print(exit_code)
|
|
@ -1,4 +1,4 @@
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
$VBoxContainerButtons/Button.grab_focus()
|
$VBoxContainerButtons/Button.grab_focus() #Required to enable controller focusing
|
||||||
|
|
|
@ -1,13 +1,21 @@
|
||||||
[gd_scene load_steps=6 format=3 uid="uid://qk2gw74anwlq"]
|
[gd_scene load_steps=9 format=3 uid="uid://qk2gw74anwlq"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bv6vh33cnfaw4" path="res://icon.svg" id="1_axfei"]
|
[ext_resource type="Texture2D" uid="uid://bv6vh33cnfaw4" path="res://icon.svg" id="1_axfei"]
|
||||||
[ext_resource type="Script" path="res://main.gd" id="1_obpq7"]
|
[ext_resource type="Script" path="res://main.gd" id="1_obpq7"]
|
||||||
[ext_resource type="Script" path="res://Button.gd" id="3_aenvv"]
|
[ext_resource type="Script" path="res://Button.gd" id="3_aenvv"]
|
||||||
[ext_resource type="Script" path="res://Button2.gd" id="4_u2f14"]
|
[ext_resource type="Script" path="res://Button2.gd" id="4_u2f14"]
|
||||||
|
[ext_resource type="Script" path="res://ProgressButton.gd" id="5_slq0p"]
|
||||||
|
[ext_resource type="Script" path="res://ProgressBar.gd" id="6_cx658"]
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_b77hh"]
|
[sub_resource type="LabelSettings" id="LabelSettings_b77hh"]
|
||||||
font_size = 24
|
font_size = 24
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xyjyy"]
|
||||||
|
corner_radius_top_left = 5
|
||||||
|
corner_radius_top_right = 5
|
||||||
|
corner_radius_bottom_right = 5
|
||||||
|
corner_radius_bottom_left = 5
|
||||||
|
|
||||||
[node name="Control" type="Control"]
|
[node name="Control" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
@ -52,31 +60,55 @@ anchor_left = 0.5
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = -70.5
|
offset_left = -74.0
|
||||||
offset_top = -33.0
|
offset_top = -66.0
|
||||||
offset_right = 70.5
|
offset_right = 273.0
|
||||||
offset_bottom = 33.0
|
offset_bottom = 66.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="VBoxContainerButtons"]
|
[node name="Button" type="Button" parent="VBoxContainerButtons"]
|
||||||
|
custom_minimum_size = Vector2(150, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 0
|
||||||
focus_neighbor_top = NodePath("../Button2")
|
focus_neighbor_top = NodePath("../HBoxContainerProgress/ProgressButton")
|
||||||
focus_neighbor_bottom = NodePath("../Button2")
|
focus_neighbor_bottom = NodePath("../Button2")
|
||||||
text = "Hardcoded script"
|
text = "Hardcoded script"
|
||||||
script = ExtResource("3_aenvv")
|
script = ExtResource("3_aenvv")
|
||||||
|
|
||||||
[node name="Button2" type="Button" parent="VBoxContainerButtons"]
|
[node name="Button2" type="Button" parent="VBoxContainerButtons"]
|
||||||
|
custom_minimum_size = Vector2(150, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 0
|
||||||
focus_neighbor_top = NodePath("../Button")
|
focus_neighbor_top = NodePath("../Button")
|
||||||
focus_neighbor_bottom = NodePath("../CheckButton")
|
focus_neighbor_bottom = NodePath("../HBoxContainerProgress/ProgressButton")
|
||||||
text = "External script"
|
text = "External script"
|
||||||
script = ExtResource("4_u2f14")
|
script = ExtResource("4_u2f14")
|
||||||
|
|
||||||
[node name="CheckButton" type="CheckButton" parent="VBoxContainerButtons"]
|
[node name="HBoxContainerProgress" type="HBoxContainer" parent="VBoxContainerButtons"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
focus_neighbor_top = NodePath("../Button2")
|
|
||||||
focus_neighbor_bottom = NodePath("../Button")
|
[node name="ProgressButton" type="Button" parent="VBoxContainerButtons/HBoxContainerProgress"]
|
||||||
text = "Hardcore mode"
|
custom_minimum_size = Vector2(150, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
focus_neighbor_top = NodePath("../../Button2")
|
||||||
|
focus_neighbor_bottom = NodePath("../../Button")
|
||||||
|
text = "Start progress"
|
||||||
|
script = ExtResource("5_slq0p")
|
||||||
|
|
||||||
|
[node name="CheckButton" type="CheckButton" parent="VBoxContainerButtons/HBoxContainerProgress"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Make progress red"
|
||||||
|
|
||||||
|
[node name="ProgressBar" type="ProgressBar" parent="VBoxContainerButtons"]
|
||||||
|
custom_minimum_size = Vector2(150, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 0
|
||||||
|
size_flags_vertical = 1
|
||||||
|
size_flags_stretch_ratio = 8.13
|
||||||
|
theme_override_styles/fill = SubResource("StyleBoxFlat_xyjyy")
|
||||||
|
step = 1.0
|
||||||
|
value = 25.0
|
||||||
|
script = ExtResource("6_cx658")
|
||||||
|
|
||||||
|
[connection signal="toggled" from="VBoxContainerButtons/HBoxContainerProgress/CheckButton" to="VBoxContainerButtons/ProgressBar" method="_on_check_button_toggled"]
|
||||||
|
|
15
tools/configurator/progress_file.sh
Normal file
15
tools/configurator/progress_file.sh
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
progress_file="progress"
|
||||||
|
echo "0" > "$progress_file"
|
||||||
|
|
||||||
|
for ((i=1; i<=100; i++)); do
|
||||||
|
echo -ne "$i" > "$progress_file"
|
||||||
|
# echo $i
|
||||||
|
# sleep 0.1
|
||||||
|
sleep $((RANDOM / 30000))
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
rm "$progress_file"
|
Loading…
Reference in a new issue