add and edit installs

This commit is contained in:
2023-05-26 01:41:48 +03:00
parent db5700b62d
commit 040a9ad1af
8 changed files with 183 additions and 9 deletions

View File

@ -1,6 +1,8 @@
extends VBoxContainer
class_name GroupMenu
const ITEM_SCENE := preload("res://UI/Components/InstallItem.tscn")
@onready var collapse_button: Button = %CollapseButton
@onready var header_icon: TextureRect = %HeaderIcon
@onready var header_text_label: Label = %HeaderTextLabel
@ -16,6 +18,8 @@ class_name GroupMenu
@onready var header_container: HBoxContainer = %HeaderContainer
@onready var install_edit_dialog: InstallEditDialog = %InstallEditDialog
var group_metadata: GroupMetadata
signal add_install_button_pressed
@ -32,8 +36,8 @@ func _ready() -> void:
set_children_visible(b.button_pressed)
)
add_install_button.pressed.connect(func(): add_install_button_pressed.emit())
add_install_button.pressed.connect(add_new_install)
install_edit_dialog.canceled.connect(install_edit_dialog.clear_ok_button_connections)
# edit_group_button.pressed.connect(setup_rename)
edit_group_button.pressed.connect(func(): edit_group_button_pressed.emit())
delete_group_button.pressed.connect(func(): delete_button_pressed.emit())
@ -41,9 +45,33 @@ func _ready() -> void:
header_text_label.gui_input.connect(_on_header_text_label_gui_input)
func add(item: InstallItem) -> int:
child_container.add_child(item)
return child_container.get_child_count()
func add_new_install() -> void:
install_edit_dialog.clear()
install_edit_dialog.ok_button_text = "Create"
install_edit_dialog.confirmed.connect(
func():
var im := install_edit_dialog.get_install_metadata()
var install_item: InstallItem = ITEM_SCENE.instantiate()
child_container.add_child(install_item)
install_item.setup_from_metadata(install_edit_dialog.get_install_metadata())
install_item.edit_item_button_pressed.connect(edit_install.bind(install_item))
, CONNECT_ONE_SHOT)
install_edit_dialog.show()
func edit_install(install_item: InstallItem) -> void:
install_edit_dialog.clear()
install_edit_dialog.ok_button_text = "OK"
install_edit_dialog.install_metadata = install_item.install_metadata
install_edit_dialog.fill_from_install_metadata()
install_edit_dialog.confirmed.connect(
func():
install_item.setup_from_metadata(install_edit_dialog.get_install_metadata())
, CONNECT_ONE_SHOT)
install_edit_dialog.show()
func free_item(at_idx: int) -> void:

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=3 format=3 uid="uid://bh1nf1xrowlpv"]
[gd_scene load_steps=4 format=3 uid="uid://bh1nf1xrowlpv"]
[ext_resource type="Script" path="res://UI/Components/GroupMenu.gd" id="1_h3o1w"]
[ext_resource type="Texture2D" uid="uid://de57eeeobflp4" path="res://icon.svg" id="2_crg6a"]
[ext_resource type="PackedScene" uid="uid://u0de32p0bb61" path="res://UI/Dialogs/InstallEditDialog.tscn" id="3_bapn7"]
[node name="GroupMenu" type="VBoxContainer"]
offset_right = 299.0
@ -78,3 +79,6 @@ text = "New Install"
[node name="HSeparator3" type="HSeparator" parent="."]
layout_mode = 2
theme_override_constants/separation = 16
[node name="InstallEditDialog" parent="." instance=ExtResource("3_bapn7")]
unique_name_in_owner = true

View File

@ -27,6 +27,10 @@ func set_icon(icon: Texture2D) -> void:
item_icon.texture = icon
func set_text(n: String) -> void:
name_label.text = n
func set_icon_visible(p_visible: bool) -> void:
item_icon.visible = p_visible
@ -60,3 +64,9 @@ func _on_name_label_gui_input(event: InputEvent) -> void:
(event as InputEventMouseButton).button_index == MOUSE_BUTTON_LEFT:
get_viewport().set_input_as_handled()
setup_rename()
func setup_from_metadata(p_metadata: InstallMetadata) -> void:
install_metadata = p_metadata
set_text(install_metadata.name)
# TODO: add icon

View File

@ -41,6 +41,7 @@ text = "X"
[node name="LaunchItemButton" type="Button" parent="."]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "Launch"
text = ">"
[node name="Indent2" type="MarginContainer" parent="."]

View File

@ -14,6 +14,7 @@ text = "Editor Settings overrides"
[node name="OverrideItemContainer" type="VBoxContainer" parent="."]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
[node name="CenterContainer" type="CenterContainer" parent="."]
layout_mode = 2