Files
Ban-Data-Tool/scenes/windwos/edit_window.gd
T
2026-03-06 23:35:19 +01:00

87 lines
2.9 KiB
GDScript

class_name EditWindow extends Window
@onready var days_edit: SpinBox = $margin/VBoxContainer/ScrollContainer/Container/Ends/DaysEdit
@onready var years_edit: SpinBox = $margin/VBoxContainer/ScrollContainer/Container/Ends/YearsEdit
@onready var reason_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/Reason/Reason Edit"
@onready var uid_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/UID/UID Edit"
@onready var name_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/Name/Name Edit"
@onready var donebutton: Button = $margin/VBoxContainer/Done
@onready var delete_check: CheckBox = $margin/VBoxContainer/ScrollContainer/Container/DeleteCheck
@onready var delete_button: Button = $margin/VBoxContainer/ScrollContainer/Container/DeleteButton
@onready var type_button: OptionButton = $margin/VBoxContainer/ScrollContainer/Container/Type/TypeButton
@export var opened_from:PunishShowcase
@export var punishment:Punishment
const id_to_name:Dictionary = {Punishment.punishment_types.BAN:"BAN",
Punishment.punishment_types.MUTE:"MUTE"}
signal changed
func _ready() -> void:
close_requested.connect(close)
donebutton.pressed.connect(done)
delete_button.pressed.connect(delete_this)
for type in Punishment.punishment_types:
type_button.add_item(type)
func delete_this():
if opened_from:
opened_from.queue_free()
punishment = null
hide()
delete_check.button_pressed = false
changed.emit()
func _process(delta: float) -> void:
delete_button.disabled = !delete_check.button_pressed
func update(set_time:bool = false):
if !punishment:
printerr("!punishment is true")
return
name_edit.text = punishment.username
uid_edit.text = punishment.uid
reason_edit.text = punishment.punish_reason
var from_time:int = punishment.punish_end
var from_unix:Dictionary = Time.get_date_dict_from_unix_time(from_time)
@warning_ignore("integer_division")
var years:int = from_unix["year"]
@warning_ignore("integer_division")
var days:int = from_unix["day"]
years_edit.value = years
days_edit.value = days
type_button.select(punishment.what_punishment)
changed.emit()
func close():
punishment = null
opened_from = null
delete_check.button_pressed = false
hide()
changed.emit()
func done():
if opened_from:
opened_from.punishment = get_punish()
opened_from.update()
hide()
else:
hide()
delete_check.button_pressed = false
changed.emit()
func get_punish() -> Punishment:
var new_punishment:Punishment = Punishment.new()
new_punishment.username = name_edit.text
new_punishment.uid = uid_edit.text
new_punishment.punish_reason = reason_edit.text
var time:int = 0
time += years_edit.value * 31536000
time += days_edit.value *86400
var unixtime:float = Time.get_unix_time_from_datetime_dict({"year":years_edit.value,
"day":days_edit.value,})
new_punishment.punish_end = unixtime
new_punishment.what_punishment = type_button.selected
changed.emit()
return new_punishment