mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-01-29 19:45:38 +00:00
Full BIOS check functionality, temp file management
Added BIOS check (both basic and expert) Blocking godot until bios files are checked (to check if ok) Calling function wrapper Added conditions to check for runtime dir env var Changed fallback dir
This commit is contained in:
parent
258cdcc869
commit
671623dd4f
|
@ -50,8 +50,12 @@ incompatible_presets_reference_list="$emuconfigs/defaults/retrodeck/reference_li
|
|||
pretty_system_names_reference_list="$emuconfigs/defaults/retrodeck/reference_lists/pretty_system_names.cfg" # An internal translation list for turning internal names (eg. gbc) to "pretty" names (Nintendo GameBoy Color)
|
||||
|
||||
# Godot data transfer temp files
|
||||
|
||||
godot_bios_files_checked="/var/config/retrodeck/godot/godot_bios_files_checked.tmp"
|
||||
# Check if XDG_RUNTIME_DIR is set
|
||||
if [ -n "$XDG_RUNTIME_DIR" ]; then
|
||||
godot_bios_files_checked="$XDG_RUNTIME_DIR/godot_temp/godot_bios_files_checked.tmp"
|
||||
else
|
||||
godot_bios_files_checked="/var/config/retrodeck/godot_temp/godot_bios_files_checked.tmp"
|
||||
fi
|
||||
|
||||
# Config files for emulators with single config files
|
||||
|
||||
|
|
|
@ -25,6 +25,13 @@ prepare_component() {
|
|||
create_dir "$rdhome/$(basename $current_setting_value)"
|
||||
fi
|
||||
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
if [ -n "$XDG_RUNTIME_DIR" ]; then
|
||||
create_dir "$XDG_RUNTIME_DIR/godot_temp"
|
||||
else
|
||||
create_dir "/var/config/retrodeck/godot_temp"
|
||||
fi
|
||||
|
||||
|
||||
create_dir "/var/config/retrodeck/godot"
|
||||
dir_prep "$rd_logs_folder" "$logs_folder"
|
||||
fi
|
||||
|
|
44
tools/configurator/components/bios_check/bios_check.gd
Normal file
44
tools/configurator/components/bios_check/bios_check.gd
Normal file
|
@ -0,0 +1,44 @@
|
|||
extends Control
|
||||
|
||||
var file := FileAccess
|
||||
var bios_tempfile : String
|
||||
var BIOS_COLUMNS_BASIC := ["BIOS File Name", "System", "Found", "Hash Match", "Description"]
|
||||
var BIOS_COLUMNS_EXPERT := ["BIOS File Name", "System", "Found", "Hash Match", "Description", "Subdirectory", "Hash"]
|
||||
@onready var bios_type:int = get_tree().current_scene.bios_type
|
||||
|
||||
func _ready():
|
||||
#Check if XDG_RUNTIME_DIR is set and choose temp file location
|
||||
if OS.has_environment("XDG_RUNTIME_DIR"):
|
||||
bios_tempfile = OS.get_environment("XDG_RUNTIME_DIR") + "/godot_temp/godot_bios_files_checked.tmp"
|
||||
else:
|
||||
bios_tempfile = "/var/config/retrodeck/godot_temp/godot_bios_files_checked.tmp"
|
||||
|
||||
var table := $Table
|
||||
|
||||
if bios_type == 0: #Basic BIOS button pressed
|
||||
table.columns = BIOS_COLUMNS_BASIC.size()
|
||||
for i in BIOS_COLUMNS_BASIC.size():
|
||||
table.set_column_title(i, BIOS_COLUMNS_BASIC[i])
|
||||
else: #Assume advanced BIOS button pressed
|
||||
table.columns = BIOS_COLUMNS_EXPERT.size()
|
||||
for i in BIOS_COLUMNS_EXPERT.size():
|
||||
table.set_column_title(i, BIOS_COLUMNS_EXPERT[i])
|
||||
|
||||
var root = table.create_item()
|
||||
table.hide_root = true
|
||||
|
||||
if bios_type == 0: #Basic BIOS button pressed
|
||||
OS.execute("/app/tools/retrodeck_function_wrapper.sh",["check_bios_files", "basic"])
|
||||
else: #Assume advanced BIOS button pressed
|
||||
OS.execute("/app/tools/retrodeck_function_wrapper.sh",["check_bios_files"])
|
||||
|
||||
if file.file_exists(bios_tempfile): #File to be removed after script is done
|
||||
var bios_list := file.open(bios_tempfile, FileAccess.READ)
|
||||
var bios_line := []
|
||||
while ! bios_list.eof_reached():
|
||||
bios_line = bios_list.get_csv_line("^")
|
||||
var table_line: TreeItem = table.create_item(root)
|
||||
for i in bios_line.size():
|
||||
table_line.set_text(i, bios_line[i])
|
||||
if table_line.get_index() % 2 == 1:
|
||||
table_line.set_custom_bg_color(i,Color(1, 1, 1, 0.1),false)
|
|
@ -0,0 +1,38 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://bihon3xtx45y7"]
|
||||
|
||||
[ext_resource type="Script" path="res://components/bios_check/bios_check.gd" id="1_qrkee"]
|
||||
|
||||
[node name="PopupContent" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_qrkee")
|
||||
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "This is a list of problematic BIOS?
|
||||
Very multiline text
|
||||
Why do we use it?
|
||||
|
||||
PS3 BIOS IS VERY BAD
|
||||
I'm not sure what else?"
|
||||
|
||||
[node name="Table" type="Tree" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
columns = 5
|
||||
column_titles_visible = true
|
||||
select_mode = 1
|
|
@ -2,18 +2,15 @@ extends Control
|
|||
|
||||
var content = null
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
if (content != null):
|
||||
$Panel/VBoxContainer/ContentContainer.add_child(content)
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
pass
|
||||
$Panel/MarginContainer/VBoxContainer/ContentContainer/MarginContainer.add_child(content)
|
||||
|
||||
func set_content(new_content):
|
||||
content = load(new_content).instantiate()
|
||||
|
||||
func set_title(new_title):
|
||||
$Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/Label.text = new_title
|
||||
|
||||
func _on_back_pressed():
|
||||
queue_free()
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://ixg127wfv7wo"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://ixg127wfv7wo"]
|
||||
|
||||
[ext_resource type="Script" path="res://components/popup.gd" id="1_ck1vn"]
|
||||
[ext_resource type="Theme" uid="uid://bq8dsxeo34sl" path="res://res/pixel_ui_theme/RetroDECKTheme.tres" id="1_oqd8s"]
|
||||
|
||||
[node name="Popup" type="Control"]
|
||||
layout_mode = 3
|
||||
|
@ -9,6 +10,7 @@ anchor_right = 1.0
|
|||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("1_oqd8s")
|
||||
script = ExtResource("1_ck1vn")
|
||||
|
||||
[node name="Panel" type="Panel" parent="."]
|
||||
|
@ -19,7 +21,7 @@ anchor_bottom = 1.0
|
|||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Panel"]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
|
@ -27,13 +29,43 @@ anchor_bottom = 1.0
|
|||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Button" type="Button" parent="Panel/VBoxContainer"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Panel/MarginContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 0
|
||||
theme_override_constants/margin_right = 0
|
||||
theme_override_constants/margin_bottom = 0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_font_sizes/font_size = 23
|
||||
text = "This is the label"
|
||||
|
||||
[node name="BackButton" type="Button" parent="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 10
|
||||
text = "Back"
|
||||
|
||||
[node name="ContentContainer" type="Panel" parent="Panel/VBoxContainer"]
|
||||
[node name="ContentContainer" type="Panel" parent="Panel/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[connection signal="pressed" from="Panel/VBoxContainer/Button" to="." method="_on_back_pressed"]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/ContentContainer"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 6
|
||||
theme_override_constants/margin_right = 10
|
||||
theme_override_constants/margin_bottom = 6
|
||||
|
||||
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/BackButton" to="." method="_on_back_pressed"]
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
[gd_scene format=3 uid="uid://c5uvguthjpfjq"]
|
||||
|
||||
[node name="PopupContentTest" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Button" type="Button" parent="."]
|
||||
layout_mode = 1
|
||||
offset_right = 12.0
|
||||
offset_bottom = 8.0
|
||||
text = "Test"
|
0
tools/configurator/icon.svg.import
Executable file → Normal file
0
tools/configurator/icon.svg.import
Executable file → Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,7 @@
|
|||
extends Control
|
||||
|
||||
var bios_type:int
|
||||
|
||||
func _ready():
|
||||
var children = findElements(self, "Control")
|
||||
for n: Control in children: #iterate the children
|
||||
|
@ -8,8 +10,7 @@ func _ready():
|
|||
if (n.is_class("BaseButton") and n.disabled == true): #if button-like control and disabled
|
||||
n.self_modulate.a = 0.5 #make it half transparent
|
||||
combine_tkeys()
|
||||
|
||||
|
||||
|
||||
func _input(event):
|
||||
if event.is_action_pressed("quit"):
|
||||
_exit()
|
||||
|
@ -24,11 +25,23 @@ func findElements(node: Node, className: String, result: Array = []) -> Array:
|
|||
func _on_control_mouse_entered(control: Node):
|
||||
control.grab_focus()
|
||||
|
||||
func load_popup(title:String, content_path:String):
|
||||
var popup = load("res://components/popup.tscn").instantiate() as Control
|
||||
popup.set_title(title)
|
||||
popup.set_content(content_path)
|
||||
$Background.add_child(popup)
|
||||
|
||||
func _on_quickresume_advanced_pressed():
|
||||
var popup = load("res://components/popup.tscn").instantiate() as Control
|
||||
popup.set_content("res://popup_content_test.tscn")
|
||||
$Background.add_child(popup)
|
||||
load_popup("Quick Resume Advanced", "res://components/popups_content/popup_content_test.tscn")
|
||||
|
||||
func _on_bios_button_pressed():
|
||||
bios_type = 0
|
||||
load_popup("BIOS File Check", "res://components/bios_check/bios_popup_content.tscn")
|
||||
|
||||
|
||||
func _on_bios_button_expert_pressed():
|
||||
bios_type = 1
|
||||
load_popup("BIOS File Check", "res://components/bios_check/bios_popup_content.tscn")
|
||||
|
||||
|
||||
func _on_exit_button_pressed():
|
||||
|
|
|
@ -91,6 +91,7 @@ anchor_bottom = 1.0
|
|||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_obpq7")
|
||||
metadata/bios_type = 0
|
||||
|
||||
[node name="Background" type="Panel" parent="."]
|
||||
layout_mode = 1
|
||||
|
@ -117,9 +118,11 @@ grow_vertical = 2
|
|||
[node name="TabContainer" type="TabContainer" parent="Background/MarginContainer"]
|
||||
layout_mode = 2
|
||||
tab_alignment = 1
|
||||
current_tab = 3
|
||||
script = ExtResource("3_id6l4")
|
||||
|
||||
[node name="TK_SYSTEM" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
|
@ -346,7 +349,6 @@ button_pressed = true
|
|||
text = "TK_HOTKEYSOUND"
|
||||
|
||||
[node name="TK_TOOLS" type="MarginContainer" parent="Background/MarginContainer/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_right = 240
|
||||
|
||||
|
@ -392,6 +394,10 @@ text = "TK_3DSDECRYPT"
|
|||
layout_mode = 2
|
||||
text = "TK_BIOS"
|
||||
|
||||
[node name="bios_button_expert" type="Button" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container"]
|
||||
layout_mode = 2
|
||||
text = "TK_BIOS_EXPERT"
|
||||
|
||||
[node name="tools_container" type="VBoxContainer" parent="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
|
@ -959,5 +965,7 @@ animation = &"speech"
|
|||
frame_progress = 0.664627
|
||||
|
||||
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/game_control_container/GridContainer/quick_resume_adv_button" to="." method="_on_quickresume_advanced_pressed"]
|
||||
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container/bios_button" to="." method="_on_bios_button_pressed"]
|
||||
[connection signal="pressed" from="Background/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container/bios_button_expert" to="." method="_on_bios_button_expert_pressed"]
|
||||
[connection signal="pressed" from="Background/exit_button" to="." method="_on_exit_button_pressed"]
|
||||
[connection signal="item_selected" from="Background/locale_option" to="." method="_on_locale_selected"]
|
||||
|
|
0
tools/configurator/res/Rekku/base.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/base.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/blink1.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/blink1.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/blink2.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/blink2.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/eyes-open.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/eyes-open.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/mouth-A.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/mouth-A.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/mouth-O.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/mouth-O.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/mouth-base.png.import
Executable file → Normal file
0
tools/configurator/res/Rekku/mouth-base.png.import
Executable file → Normal file
0
tools/configurator/res/configurator.mp3.import
Executable file → Normal file
0
tools/configurator/res/configurator.mp3.import
Executable file → Normal file
0
tools/configurator/res/pixel_ui_theme/8x8_ui_elements.png.import
Executable file → Normal file
0
tools/configurator/res/pixel_ui_theme/8x8_ui_elements.png.import
Executable file → Normal file
0
tools/configurator/res/pixel_ui_theme/8x8_ui_icons.png.import
Executable file → Normal file
0
tools/configurator/res/pixel_ui_theme/8x8_ui_icons.png.import
Executable file → Normal file
File diff suppressed because one or more lines are too long
0
tools/configurator/res/pixel_ui_theme/m5x7.ttf.import
Executable file → Normal file
0
tools/configurator/res/pixel_ui_theme/m5x7.ttf.import
Executable file → Normal file
Loading…
Reference in a new issue