RetroDECK/tools/configurator/scripts/class_functions.gd
MonkeyX d1ccc36067
Feat/godot ()
* On branch cooker
 Changes to be committed:
	modified:   ../config/retrodeck/reference_lists/features.json
	modified:   configurator.sh
	modified:   configurator/TabContainer.gd
	modified:   configurator/assets/themes/accesible_theme.tres
	modified:   configurator/assets/themes/modern_theme.tres
	modified:   configurator/assets/themes/retro_theme.tres
	modified:   configurator/main.tscn
	modified:   configurator/res/pixel_ui_theme/RetroDECKTheme.tres

* Signal test

* s

* Oops Data Recovery

 On branch cooker
 Changes to be committed:
	modified:   tools/configurator/main.gd
	modified:   tools/configurator/main.tscn
	modified:   tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres

* Sliding Rekku

 On branch cooker
 Changes to be committed:
	modified:   tools/configurator/Rekku.gd
	modified:   tools/configurator/main.gd
	modified:   tools/configurator/main.tscn

* Using less tabs?

 On branch cooker
 Changes to be committed:
	modified:   tools/configurator/main.gd
	modified:   tools/configurator/main.tscn
	modified:   tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres

* Generic Save experiment
 On branch cooker
 Changes to be committed:
	modified:   tools/configurator/main.gd
	modified:   tools/configurator/main.tscn
	modified:   tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres

* Let it flow

 On branch feat/godot
 Changes to be committed:
	new file:   .github/workflows/build-godot.yml
	modified:   tools/configurator/main.tscn
	modified:   tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres

* On branch feat/godot
 Changes to be committed:
	modified:   .github/workflows/build-godot.yml

* FLow 2.0

* Flow 2.1

* Flow 2.2

* Flow 2.3

* Flow 2.4

* Flow 2.5

* Flow 2.6

* Flow 2.7

* Flow 2.8

* Flow 2.9

* Flow 2.9

* Flow 2.91

* Flow 2.92

* Emualtor==System

* FFS revert!

* Progress on Cores at last!

* Progress on Cores at lastgit add .!

* Functions

* Bios change

* Removed need for BIOS tmp file for Godot

* Rotten the core!

* Push TEst

* fixed duplicate

* fixed duplicate

* Tidied Bios reading

* Rekku assistant

* Icons and System Tab work

* Generic buttons please

* Generic buttons pleases

* Generic buttons please2

* Rekku gets the saw

* Dialogues

* Fixed link to json file

* Feat/godot ()

* Tidied parameter code

* Tricky bios dialogue!

* Mini change

* Tidying icons

* And then there were 5!

* Time to Cook

* INITOOL: added

* SET_SETTING_VALUE: edited to use initool

* Revert "SET_SETTING_VALUE: edited to use initool"

This reverts commit b56916c2b0.

* Revert "INITOOL: added"

This reverts commit 127bcdb6cd.

* POST_UPDATE: update_rd_conf to include steam_sync

* INJECT_FRAMEWORK: added force args [skip ci]

* Progress buttons

* Reset!

---------

Co-authored-by: Rekku <rekku@retrodeck.net>
Co-authored-by: XargonWan <XargonWan@gmail.com>

---------

Co-authored-by: Rekku <rekku@retrodeck.net>
Co-authored-by: XargonWan <XargonWan@gmail.com>
2024-09-05 16:04:36 +01:00

107 lines
3 KiB
GDScript

class_name ClassFunctions
extends Control
var log_text = "gdc_"
var log_parameters: Array = ["log", "i", log_text]
var wrapper_command: String = "../../tools/retrodeck_function_wrapper.sh"
func array_to_string(arr: Array) -> String:
var text: String
for line in arr:
#text += line + "\n"
text = line.strip_edges() + "\n"
return text
# TODO This should be looked at again when GoDot 4.3 ships as has new OS.execute_with_pipe
func execute_command(command: String, parameters: Array, console: bool) -> Dictionary:
var result = {}
var output = []
var exit_code = OS.execute(command, parameters, output, console) ## add if exit == 0 etc
result["output"] = array_to_string(output)
result["exit_code"] = exit_code
#print (array_to_string(output))
#print (result["exit_code"])
return result
func run_command_in_thread(command: String, paramaters: Array, _console: bool) -> Dictionary:
var thread = Thread.new()
thread.start(execute_command.bind(command,paramaters,false))
while thread.is_alive():
await get_tree().process_frame
var result = thread.wait_to_finish()
thread = null
return result
func _threaded_command_execution(command: String, parameters: Array, console: bool) -> Dictionary:
var result = execute_command(command, parameters, console)
return result
func process_url_image(body) -> Texture:
var image = Image.new()
image.load_png_from_buffer(body)
var texture = ImageTexture.create_from_image(image)
return texture
func launch_help(url: String) -> void:
OS.shell_open(url)
func import_csv_data(file_path: String) -> Dictionary:
# check if file exists
var data_dict: Dictionary
var file = FileAccess.open(file_path,FileAccess.READ)
if file:
var csv_lines: PackedStringArray = file.get_as_text().strip_edges().split("\n")
for i in range(1, csv_lines.size()): # Start from 1 to skip the header
var line = csv_lines[i]
var columns = line.split(",")
if columns.size() >= 3:
var id = columns[0]
var url = columns[1]
var description = columns[2]
data_dict[id] = {"URL": url, "Description": description}
file.close()
else:
print ("Could not open file: %s", file_path)
return data_dict
func _import_data_lists(file_path: String) -> void:
var tk_about: Dictionary = import_csv_data(file_path)
for key in tk_about.keys():
var entry = tk_about[key]
print("ID: " + key)
print("URL: " + entry["URL"])
print("Description: " + entry["Description"])
print("---")
func import_text_file(file_path: String) -> String:
var content: String = ""
var file = FileAccess.open(file_path, FileAccess.READ)
if file == null:
print("Failed to open file")
return content
while not file.eof_reached():
content += file.get_line() + "\n"
file.close
return content
func map_locale_id(current_locale: String) -> int:
var int_locale: int
match current_locale:
"en":
int_locale = 0
"it":
int_locale = 1
"de":
int_locale = 2
"se":
int_locale = 3
"uk":
int_locale = 4
"jp":
int_locale = 5
"cn":
int_locale = 6
return int_locale