save groups meta
This commit is contained in:
parent
14b56cf5ed
commit
97b1aad886
@ -6,3 +6,5 @@ class_name GroupMetadata
|
|||||||
@export var description: String
|
@export var description: String
|
||||||
@export var installs: Array[InstallMetadata]
|
@export var installs: Array[InstallMetadata]
|
||||||
@export var settings_overrides: Dictionary
|
@export var settings_overrides: Dictionary
|
||||||
|
|
||||||
|
signal save_request
|
||||||
|
31
Classes/GroupsInstallsManager.gd
Normal file
31
Classes/GroupsInstallsManager.gd
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
extends Node
|
||||||
|
|
||||||
|
const GROUPS_BASE_FOLDER := "user://groups"
|
||||||
|
const METADATA_FILENAME := "meta.tres"
|
||||||
|
|
||||||
|
# key: GroupMetadata
|
||||||
|
# values: String = UUID
|
||||||
|
var groups: Dictionary = {}
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
DirAccess.make_dir_absolute(GROUPS_BASE_FOLDER)
|
||||||
|
|
||||||
|
|
||||||
|
func create_group_folder(gm: GroupMetadata) -> void:
|
||||||
|
if gm in groups.values():
|
||||||
|
return
|
||||||
|
|
||||||
|
var folder_name := UUID.v4()
|
||||||
|
var d := DirAccess.open(GROUPS_BASE_FOLDER)
|
||||||
|
d.make_dir(folder_name)
|
||||||
|
|
||||||
|
groups[gm] = folder_name
|
||||||
|
gm.save_request.connect(group_metadata_should_save.bind(gm))
|
||||||
|
|
||||||
|
|
||||||
|
func group_metadata_should_save(gm: GroupMetadata) -> void:
|
||||||
|
var path := GROUPS_BASE_FOLDER.path_join(groups[gm]).path_join(METADATA_FILENAME)
|
||||||
|
var save_err := ResourceSaver.save(gm, path)
|
||||||
|
if save_err != OK:
|
||||||
|
print("couldn't save resource, error ", save_err)
|
@ -22,9 +22,11 @@
|
|||||||
|
|
||||||
# Note: The code might not be as pretty it could be, since it's written
|
# Note: The code might not be as pretty it could be, since it's written
|
||||||
# in a way that maximizes performance. Methods are inlined and loops are avoided.
|
# in a way that maximizes performance. Methods are inlined and loops are avoided.
|
||||||
|
class_name UUID
|
||||||
const BYTE_MASK: int = 0b11111111
|
const BYTE_MASK: int = 0b11111111
|
||||||
|
|
||||||
static func uuidbin():
|
|
||||||
|
static func uuidbin() -> Array:
|
||||||
randomize()
|
randomize()
|
||||||
# 16 random bytes with the bytes on index 6 and 8 modified
|
# 16 random bytes with the bytes on index 6 and 8 modified
|
||||||
return [
|
return [
|
||||||
@ -34,7 +36,7 @@ static func uuidbin():
|
|||||||
randi() & BYTE_MASK, randi() & BYTE_MASK, randi() & BYTE_MASK, randi() & BYTE_MASK,
|
randi() & BYTE_MASK, randi() & BYTE_MASK, randi() & BYTE_MASK, randi() & BYTE_MASK,
|
||||||
]
|
]
|
||||||
|
|
||||||
static func uuidbinrng(rng: RandomNumberGenerator):
|
static func uuidbinrng(rng: RandomNumberGenerator) -> Array:
|
||||||
rng.randomize()
|
rng.randomize()
|
||||||
return [
|
return [
|
||||||
rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK,
|
rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK,
|
||||||
@ -43,7 +45,7 @@ static func uuidbinrng(rng: RandomNumberGenerator):
|
|||||||
rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK,
|
rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK, rng.randi() & BYTE_MASK,
|
||||||
]
|
]
|
||||||
|
|
||||||
static func v4():
|
static func v4() -> String:
|
||||||
# 16 random bytes with the bytes on index 6 and 8 modified
|
# 16 random bytes with the bytes on index 6 and 8 modified
|
||||||
var b = uuidbin()
|
var b = uuidbin()
|
||||||
|
|
||||||
@ -64,7 +66,7 @@ static func v4():
|
|||||||
b[10], b[11], b[12], b[13], b[14], b[15]
|
b[10], b[11], b[12], b[13], b[14], b[15]
|
||||||
]
|
]
|
||||||
|
|
||||||
static func v4_rng(rng: RandomNumberGenerator):
|
static func v4_rng(rng: RandomNumberGenerator) -> String:
|
||||||
# 16 random bytes with the bytes on index 6 and 8 modified
|
# 16 random bytes with the bytes on index 6 and 8 modified
|
||||||
var b = uuidbinrng(rng)
|
var b = uuidbinrng(rng)
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@ func add_new_install() -> void:
|
|||||||
install_item.setup_from_metadata(im)
|
install_item.setup_from_metadata(im)
|
||||||
install_item.edit_item_button_pressed.connect(edit_install.bind(install_item))
|
install_item.edit_item_button_pressed.connect(edit_install.bind(install_item))
|
||||||
group_metadata.installs.append(im)
|
group_metadata.installs.append(im)
|
||||||
|
group_metadata.save_request.emit()
|
||||||
, CONNECT_ONE_SHOT)
|
, CONNECT_ONE_SHOT)
|
||||||
|
|
||||||
install_edit_dialog.show()
|
install_edit_dialog.show()
|
||||||
@ -144,6 +145,7 @@ func setup_rename() -> void:
|
|||||||
func(new_text: String):
|
func(new_text: String):
|
||||||
header_text_label.text = new_text
|
header_text_label.text = new_text
|
||||||
group_metadata.name = new_text
|
group_metadata.name = new_text
|
||||||
|
group_metadata.save_request.emit()
|
||||||
|
|
||||||
reenable.call()
|
reenable.call()
|
||||||
)
|
)
|
||||||
|
@ -23,6 +23,8 @@ func get_group_metadata() -> GroupMetadata:
|
|||||||
group_metadata.settings_overrides = override_editor_settings_menu.get_overrides()
|
group_metadata.settings_overrides = override_editor_settings_menu.get_overrides()
|
||||||
group_metadata.name = name_line_edit.text
|
group_metadata.name = name_line_edit.text
|
||||||
|
|
||||||
|
group_metadata.save_request.emit()
|
||||||
|
|
||||||
return group_metadata
|
return group_metadata
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,6 +30,8 @@ func add_new_group() -> void:
|
|||||||
group_menu.setup_from_metadata(gm)
|
group_menu.setup_from_metadata(gm)
|
||||||
|
|
||||||
group_menu.edit_group_button_pressed.connect(edit_group.bind(group_menu))
|
group_menu.edit_group_button_pressed.connect(edit_group.bind(group_menu))
|
||||||
|
GroupsInstallsManager.create_group_folder(gm)
|
||||||
|
GroupsInstallsManager.group_metadata_should_save(gm)
|
||||||
|
|
||||||
, CONNECT_ONE_SHOT)
|
, CONNECT_ONE_SHOT)
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ config/icon="res://icon.svg"
|
|||||||
|
|
||||||
DotEnv="*res://Classes/DotEnv.gd"
|
DotEnv="*res://Classes/DotEnv.gd"
|
||||||
ReleasesManager="*res://Classes/ReleasesManager.gd"
|
ReleasesManager="*res://Classes/ReleasesManager.gd"
|
||||||
|
GroupsInstallsManager="*res://Classes/GroupsInstallsManager.gd"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user