mirror of
https://github.com/Relintai/broken_seals.git
synced 2024-11-13 20:47:19 +01:00
Implemented the third party attibutions tab.
This commit is contained in:
parent
5688f44ea2
commit
741c1542bd
@ -96,48 +96,49 @@ SOFTWARE."
|
|||||||
visible = false
|
visible = false
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
margin_left = 8.0
|
margin_left = 4.0
|
||||||
margin_top = 62.0
|
margin_top = 31.0
|
||||||
margin_bottom = 27.0
|
margin_right = -4.0
|
||||||
|
margin_bottom = -4.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
script = ExtResource( 7 )
|
script = ExtResource( 7 )
|
||||||
tree_path = NodePath("HBoxContainer/Tree")
|
tree_path = NodePath("HBoxContainer/Tree")
|
||||||
rtl_path = NodePath("HBoxContainer/PanelContainer/RichTextLabel")
|
rtl_path = NodePath("HBoxContainer/PanelContainer/RichTextLabel")
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses"]
|
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses"]
|
||||||
margin_right = 712.0
|
margin_right = 720.0
|
||||||
margin_bottom = 51.0
|
margin_bottom = 51.0
|
||||||
text = "This project relies on a number of third-party free and open source assets/components, all compatible with the terms of its MIT license. The following is an exhaustive list of all such third-party components with their respective copyright statements and license terms."
|
text = "This project relies on a number of third-party free and open source assets/components, all compatible with the terms of its MIT license. The following is an exhaustive list of all such third-party components with their respective copyright statements and license terms."
|
||||||
autowrap = true
|
autowrap = true
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HSplitContainer" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses"]
|
[node name="HBoxContainer" type="HSplitContainer" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses"]
|
||||||
margin_top = 59.0
|
margin_top = 59.0
|
||||||
margin_right = 712.0
|
margin_right = 720.0
|
||||||
margin_bottom = 361.0
|
margin_bottom = 396.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
split_offset = -88
|
split_offset = -88
|
||||||
|
|
||||||
[node name="Tree" type="Tree" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer"]
|
[node name="Tree" type="Tree" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer"]
|
||||||
margin_right = 262.0
|
margin_right = 266.0
|
||||||
margin_bottom = 302.0
|
margin_bottom = 337.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
hide_folding = true
|
hide_folding = true
|
||||||
hide_root = true
|
hide_root = true
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer"]
|
[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer"]
|
||||||
margin_left = 274.0
|
margin_left = 278.0
|
||||||
margin_right = 712.0
|
margin_right = 720.0
|
||||||
margin_bottom = 302.0
|
margin_bottom = 337.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="RichTextLabel" type="RichTextLabel" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer/PanelContainer"]
|
[node name="RichTextLabel" type="RichTextLabel" parent="PanelContainer/VBoxContainer/TabContainer/Third-Party Licenses/HBoxContainer/PanelContainer"]
|
||||||
margin_left = 4.0
|
margin_left = 4.0
|
||||||
margin_top = 4.0
|
margin_top = 4.0
|
||||||
margin_right = 434.0
|
margin_right = 438.0
|
||||||
margin_bottom = 298.0
|
margin_bottom = 333.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
@ -8,6 +8,15 @@ var rtl : RichTextLabel
|
|||||||
|
|
||||||
var populated : bool = false
|
var populated : bool = false
|
||||||
|
|
||||||
|
var _data : Array = Array()
|
||||||
|
|
||||||
|
enum AttibutionIndex {
|
||||||
|
ATTRIBUTION_INDEX_NAME = 0,
|
||||||
|
ATTRIBUTION_INDEX_URL = 1,
|
||||||
|
ATTRIBUTION_INDEX_DESCRIPTION = 2,
|
||||||
|
ATTRIBUTION_INDEX_LICENSES = 3,
|
||||||
|
}
|
||||||
|
|
||||||
func _enter_tree():
|
func _enter_tree():
|
||||||
tree = get_node(tree_path) as Tree
|
tree = get_node(tree_path) as Tree
|
||||||
rtl = get_node(rtl_path) as RichTextLabel
|
rtl = get_node(rtl_path) as RichTextLabel
|
||||||
@ -28,6 +37,25 @@ func populate():
|
|||||||
|
|
||||||
populated = true
|
populated = true
|
||||||
|
|
||||||
|
#root
|
||||||
|
tree.create_item()
|
||||||
|
|
||||||
|
_data.clear()
|
||||||
|
load_all_xmls("res://")
|
||||||
|
|
||||||
|
for entry in _data:
|
||||||
|
var main : TreeItem = tree.create_item()
|
||||||
|
|
||||||
|
main.set_text(0, entry[0][0])
|
||||||
|
main.set_metadata(0, data_arr_to_string(entry[0]))
|
||||||
|
|
||||||
|
for i in range(1, entry.size()):
|
||||||
|
var curr : TreeItem = tree.create_item(main)
|
||||||
|
|
||||||
|
curr.set_text(0, entry[i][0])
|
||||||
|
curr.set_metadata(0, data_arr_to_string(entry[i]))
|
||||||
|
|
||||||
|
|
||||||
# tree.create_item()
|
# tree.create_item()
|
||||||
#
|
#
|
||||||
# for info in Engine.get_copyright_info():
|
# for info in Engine.get_copyright_info():
|
||||||
@ -49,3 +77,86 @@ func populate():
|
|||||||
#
|
#
|
||||||
# ti.set_metadata(0, st)
|
# ti.set_metadata(0, st)
|
||||||
# ti.set_text(0, info["name"])
|
# ti.set_text(0, info["name"])
|
||||||
|
|
||||||
|
func load_all_xmls(path : String) -> void:
|
||||||
|
var dir = Directory.new()
|
||||||
|
if dir.open(path) == OK:
|
||||||
|
dir.list_dir_begin()
|
||||||
|
var file_name = dir.get_next()
|
||||||
|
while file_name != "":
|
||||||
|
if file_name == "." or file_name == "..":
|
||||||
|
file_name = dir.get_next()
|
||||||
|
continue
|
||||||
|
|
||||||
|
if dir.current_is_dir():
|
||||||
|
if path == "res://":
|
||||||
|
load_all_xmls(path + file_name)
|
||||||
|
else:
|
||||||
|
load_all_xmls(path + "/" + file_name)
|
||||||
|
else:
|
||||||
|
if file_name == "Attributions.xml":
|
||||||
|
if path == "res://":
|
||||||
|
load_xml(path + file_name)
|
||||||
|
else:
|
||||||
|
load_xml(path + "/" + file_name)
|
||||||
|
|
||||||
|
file_name = dir.get_next()
|
||||||
|
else:
|
||||||
|
print("An error occurred when trying to access the path: " + path)
|
||||||
|
|
||||||
|
func load_xml(path : String) -> void:
|
||||||
|
var parser : XMLParser = XMLParser.new()
|
||||||
|
var err = parser.open(path)
|
||||||
|
|
||||||
|
if err != OK:
|
||||||
|
print("Couldn't open file: " + path + " Err: " + err)
|
||||||
|
return
|
||||||
|
|
||||||
|
var attributions : Array = Array()
|
||||||
|
attributions.resize(1)
|
||||||
|
var attrib : PoolStringArray = PoolStringArray()
|
||||||
|
attrib.resize(4)
|
||||||
|
var curr_element : String = ""
|
||||||
|
while parser.read() == OK:
|
||||||
|
if parser.get_node_type() == XMLParser.NODE_ELEMENT:
|
||||||
|
curr_element = parser.get_node_name()
|
||||||
|
|
||||||
|
elif parser.get_node_type() == XMLParser.NODE_TEXT:
|
||||||
|
if curr_element == "Name":
|
||||||
|
attrib[AttibutionIndex.ATTRIBUTION_INDEX_NAME] = parser.get_node_data()
|
||||||
|
elif curr_element == "Description":
|
||||||
|
attrib[AttibutionIndex.ATTRIBUTION_INDEX_DESCRIPTION] = parser.get_node_data()
|
||||||
|
elif curr_element == "Licenses":
|
||||||
|
attrib[AttibutionIndex.ATTRIBUTION_INDEX_LICENSES] = parser.get_node_data()
|
||||||
|
elif curr_element == "URL":
|
||||||
|
attrib[AttibutionIndex.ATTRIBUTION_INDEX_URL] = parser.get_node_data()
|
||||||
|
|
||||||
|
elif parser.get_node_type() == XMLParser.NODE_ELEMENT_END:
|
||||||
|
if parser.get_node_name() == "Attribution":
|
||||||
|
attributions.push_back(attrib)
|
||||||
|
attrib = PoolStringArray()
|
||||||
|
attrib.resize(4)
|
||||||
|
elif parser.get_node_name() == "Module":
|
||||||
|
attributions[0] = attrib
|
||||||
|
attrib = PoolStringArray()
|
||||||
|
attrib.resize(4)
|
||||||
|
|
||||||
|
if attributions[0] == null:
|
||||||
|
print("Attributions file does not have a Module tag! Path: " + path)
|
||||||
|
|
||||||
|
_data.push_back(attributions)
|
||||||
|
|
||||||
|
func data_arr_to_string(arr : Array) -> String:
|
||||||
|
var s : String = ""
|
||||||
|
|
||||||
|
s += arr[AttibutionIndex.ATTRIBUTION_INDEX_NAME] + "\n\n"
|
||||||
|
|
||||||
|
if arr[AttibutionIndex.ATTRIBUTION_INDEX_URL] != "":
|
||||||
|
s += "url: " + arr[AttibutionIndex.ATTRIBUTION_INDEX_URL] + "\n\n"
|
||||||
|
|
||||||
|
s += arr[AttibutionIndex.ATTRIBUTION_INDEX_DESCRIPTION] + "\n\n"
|
||||||
|
|
||||||
|
s += "License(s):\n\n"
|
||||||
|
s += arr[AttibutionIndex.ATTRIBUTION_INDEX_LICENSES]
|
||||||
|
|
||||||
|
return s
|
||||||
|
Loading…
Reference in New Issue
Block a user