extends Panel signal deck_saved(deck: Deck) signal editor_closed() var current_deck: Deck @onready var deck_name_edit = $MarginContainer/VBoxContainer/DeckInfoSection/DeckNameEdit @onready var deck_desc_edit = $MarginContainer/VBoxContainer/DeckInfoSection/DeckDescEdit @onready var color_picker = $MarginContainer/VBoxContainer/DeckInfoSection/ColorPicker @onready var cards_list = $MarginContainer/VBoxContainer/CardsSection/ScrollContainer/CardsList @onready var save_btn = $MarginContainer/VBoxContainer/ButtonsSection/SaveButton @onready var cancel_btn = $MarginContainer/VBoxContainer/ButtonsSection/CancelButton @onready var add_card_btn = $MarginContainer/VBoxContainer/CardsSection/AddCardButton func _ready() -> void: save_btn.pressed.connect(_on_save_pressed) cancel_btn.pressed.connect(_on_cancel_pressed) add_card_btn.pressed.connect(_on_add_card_pressed) hide() func edit_deck(deck: Deck) -> void: current_deck = deck deck_name_edit.text = deck.name deck_desc_edit.text = deck.description color_picker.color = deck.color_theme _refresh_cards_list() show() func _refresh_cards_list() -> void: for child in cards_list.get_children(): child.queue_free() for i in range(current_deck.cards.size()): var card = current_deck.cards[i] _add_card_ui_entry(card, i) func _add_card_ui_entry(card: Flashcard, index: int) -> void: var card_panel = PanelContainer.new() var margin = MarginContainer.new() margin.add_theme_constant_override("margin_left", 10) margin.add_theme_constant_override("margin_top", 10) margin.add_theme_constant_override("margin_right", 10) margin.add_theme_constant_override("margin_bottom", 10) card_panel.add_child(margin) var vbox = VBoxContainer.new() margin.add_child(vbox) var q_hbox = HBoxContainer.new() vbox.add_child(q_hbox) var q_label = Label.new() q_label.text = "Q: " q_hbox.add_child(q_label) var q_edit = LineEdit.new() q_edit.text = card.question_text q_edit.size_flags_horizontal = Control.SIZE_EXPAND_FILL q_edit.text_changed.connect(func(new_text): card.question_text = new_text) q_hbox.add_child(q_edit) var a_hbox = HBoxContainer.new() vbox.add_child(a_hbox) var a_label = Label.new() a_label.text = "A: " a_hbox.add_child(a_label) var a_edit = LineEdit.new() a_edit.text = card.answer_text a_edit.size_flags_horizontal = Control.SIZE_EXPAND_FILL a_edit.text_changed.connect(func(new_text): card.answer_text = new_text) a_hbox.add_child(a_edit) var delete_btn = Button.new() delete_btn.text = "Delete" delete_btn.pressed.connect(func(): _on_delete_card_pressed(index)) vbox.add_child(delete_btn) cards_list.add_child(card_panel) func _on_add_card_pressed() -> void: var new_card = Flashcard.new() new_card.question_text = "New Question" new_card.answer_text = "New Answer" current_deck.add_card(new_card) _refresh_cards_list() func _on_delete_card_pressed(index: int) -> void: if index >= 0 and index < current_deck.cards.size(): current_deck.cards.remove_at(index) _refresh_cards_list() func _on_save_pressed() -> void: current_deck.name = deck_name_edit.text current_deck.description = deck_desc_edit.text current_deck.color_theme = color_picker.color DataManager.save_deck(current_deck) deck_saved.emit(current_deck) hide() func _on_cancel_pressed() -> void: editor_closed.emit() hide()