initial commit

This commit is contained in:
mr0xb 2025-12-27 00:20:33 -05:00
commit 94847a50a2
42 changed files with 2063 additions and 0 deletions

View file

@ -0,0 +1,106 @@
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()