prog
This commit is contained in:
157
addons/madtalk/components/MainEditor_DialogExport.gd
Normal file
157
addons/madtalk/components/MainEditor_DialogExport.gd
Normal file
@@ -0,0 +1,157 @@
|
||||
@tool
|
||||
extends Window
|
||||
|
||||
|
||||
var mt_ie := MadTalkImportExport.new()
|
||||
var dialog_data: DialogData
|
||||
var current_sheet_id: String = ""
|
||||
|
||||
var template_ExportSheetListItem := preload("res://addons/madtalk/components/Export_SheetListItem.tscn")
|
||||
|
||||
@onready var panel_options := $PanelOptions
|
||||
@onready var panel_sheets := $PanelSheets
|
||||
@onready var panel_output := $PanelOutput
|
||||
|
||||
@onready var btn_exporter := $PanelOptions/BtnExporter
|
||||
@onready var exporter_desc := $PanelOptions/ExporterDesc
|
||||
@onready var panel_locales := $PanelOptions/LocalesPanel
|
||||
@onready var locales_edit := $PanelOptions/LocalesPanel/LocalesEdit
|
||||
@onready var output_edit := $PanelOutput/OutputEdit
|
||||
@onready var label_sheets := $PanelOptions/LabelSheets
|
||||
@onready var sheet_list := $PanelSheets/SheetScroll/VBox
|
||||
|
||||
var export_sheets := []
|
||||
|
||||
func setup(data: DialogData, sheet_id: String):
|
||||
dialog_data = data
|
||||
current_sheet_id = sheet_id
|
||||
export_sheets = [sheet_id]
|
||||
update_exported_sheets()
|
||||
|
||||
mt_ie.refresh_list_importers()
|
||||
|
||||
# mt_ie.exporters_list = { "absolute path to .gd": "Friendly Name", }
|
||||
|
||||
btn_exporter.clear()
|
||||
for path in mt_ie.exporters_list:
|
||||
btn_exporter.add_item(mt_ie.exporters_list[path])
|
||||
btn_exporter.select(-1)
|
||||
|
||||
panel_options.show()
|
||||
panel_sheets.hide()
|
||||
panel_output.hide()
|
||||
|
||||
func set_current_sheet(sheet: String, reset_export_sheet: bool = false):
|
||||
current_sheet_id = sheet
|
||||
if reset_export_sheet:
|
||||
export_sheets = [current_sheet_id]
|
||||
update_exported_sheets()
|
||||
|
||||
func _on_btn_close_pressed() -> void:
|
||||
hide()
|
||||
|
||||
# ------------------------------------------
|
||||
|
||||
func extract_locales() -> Array:
|
||||
var a := Array(locales_edit.text.split("\n"))
|
||||
var result := []
|
||||
for i in range(a.size()):
|
||||
var locale: String = a[i].strip_edges()
|
||||
if locale.length() > 0:
|
||||
result.append(locale)
|
||||
return result
|
||||
|
||||
|
||||
func export():
|
||||
if (not dialog_data) or (btn_exporter.selected < 0) or (btn_exporter.selected >= mt_ie.exporters_list.size()):
|
||||
print("MadTalk exporter error")
|
||||
return
|
||||
|
||||
var exporter_script = mt_ie.exporters_list.keys()[ btn_exporter.selected ]
|
||||
var exporter = load(exporter_script).new()
|
||||
var locales: Array = extract_locales() if panel_locales.visible else []
|
||||
|
||||
var result := ""
|
||||
for sheet_id: String in export_sheets:
|
||||
if (not sheet_id in dialog_data.sheets):
|
||||
continue
|
||||
|
||||
if result.length() > 0:
|
||||
result += "\n\n"
|
||||
|
||||
result += exporter.export(dialog_data.sheets[sheet_id], locales)
|
||||
|
||||
|
||||
output_edit.text = result
|
||||
|
||||
panel_options.hide()
|
||||
panel_sheets.hide()
|
||||
panel_output.show()
|
||||
|
||||
output_edit.select_all()
|
||||
output_edit.grab_focus()
|
||||
|
||||
|
||||
func refresh_export_sheet_list():
|
||||
for child in sheet_list.get_children():
|
||||
child.queue_free()
|
||||
|
||||
for sheet_id in dialog_data.sheets:
|
||||
var sheet_data: DialogSheetData = dialog_data.sheets[sheet_id]
|
||||
|
||||
var new_item := template_ExportSheetListItem.instantiate()
|
||||
sheet_list.add_child(new_item)
|
||||
new_item.get_node("SheetIDLabel").text = sheet_id
|
||||
new_item.get_node("DescLabel").text = sheet_data.sheet_description
|
||||
new_item.get_node("BtnSelect").button_pressed = (sheet_id in export_sheets)
|
||||
|
||||
|
||||
func update_exported_sheets(load_from_list: bool = false):
|
||||
if load_from_list:
|
||||
export_sheets.clear()
|
||||
for item in sheet_list.get_children():
|
||||
if item.get_node("BtnSelect").button_pressed:
|
||||
export_sheets.append(item.get_node("SheetIDLabel").text)
|
||||
|
||||
var s := ""
|
||||
for sheet_id in export_sheets:
|
||||
s += "[color=#ffcc55][b]%s[/b][/color]\n" % sheet_id
|
||||
label_sheets.text = s
|
||||
|
||||
|
||||
func _on_btn_exporter_item_selected(index: int) -> void:
|
||||
if (btn_exporter.selected < 0) or (btn_exporter.selected >= mt_ie.exporters_list.size()):
|
||||
print("MadTalk exporter error")
|
||||
return
|
||||
|
||||
var exporter_script = mt_ie.exporters_list.keys()[ btn_exporter.selected ]
|
||||
var exporter = load(exporter_script).new()
|
||||
exporter_desc.text = exporter.description
|
||||
|
||||
|
||||
func _on_btn_force_locales_toggled(toggled_on: bool) -> void:
|
||||
panel_locales.visible = toggled_on
|
||||
|
||||
|
||||
func _on_btn_back_pressed() -> void:
|
||||
panel_output.hide()
|
||||
panel_sheets.hide()
|
||||
panel_options.show()
|
||||
|
||||
|
||||
func _on_btn_export_pressed() -> void:
|
||||
export()
|
||||
|
||||
|
||||
func _on_btn_manage_sheets_pressed() -> void:
|
||||
refresh_export_sheet_list()
|
||||
panel_options.hide()
|
||||
panel_sheets.show()
|
||||
panel_output.hide()
|
||||
|
||||
|
||||
func _on_sheets_to_export_btn_ok_pressed() -> void:
|
||||
update_exported_sheets(true)
|
||||
panel_options.show()
|
||||
panel_sheets.hide()
|
||||
panel_output.hide()
|
Reference in New Issue
Block a user