95 lines
3.1 KiB
GDScript
95 lines
3.1 KiB
GDScript
# Remap UI for LocalizationEditor : MIT License
|
|
# @author Vladimir Petrenko
|
|
@tool
|
|
extends MarginContainer
|
|
|
|
var _key
|
|
var _remap
|
|
var _data: LocalizationData
|
|
|
|
@onready var _remap_ui = $HBox/Remap
|
|
@onready var _audio_ui = $HBox/Audio
|
|
@onready var _video_ui = $HBox/Video
|
|
@onready var _image_ui = $HBox/Image
|
|
|
|
const LocalizationRemapDialogVideo = preload("res://addons/localization_editor/scenes/remaps/LocalizationRemapDialogVideo.tscn")
|
|
const LocalizationRemapDialogImage = preload("res://addons/localization_editor/scenes/remaps/LocalizationRemapDialogImage.tscn")
|
|
|
|
func set_data(key, remap, data: LocalizationData) -> void:
|
|
_key = key
|
|
_remap = remap
|
|
_data = data
|
|
_remap_ui.set_data(key, remap, data)
|
|
_init_connections()
|
|
_draw_view()
|
|
|
|
func _init_connections() -> void:
|
|
if not _data.is_connected("data_remapkey_value_changed", _draw_view):
|
|
assert(_data.data_remapkey_value_changed.connect(_draw_view) == OK)
|
|
if not _audio_ui.is_connected("pressed", _on_audio_pressed):
|
|
assert(_audio_ui.connect("pressed", _on_audio_pressed) == OK)
|
|
if not _video_ui.is_connected("pressed", _on_video_pressed):
|
|
assert(_video_ui.connect("pressed", _on_video_pressed) == OK)
|
|
if not _image_ui.is_connected("pressed", _on_image_pressed):
|
|
assert(_image_ui.connect("pressed", _on_image_pressed) == OK)
|
|
|
|
func _draw_view() -> void:
|
|
_check_buttons()
|
|
|
|
func _check_buttons() -> void:
|
|
_hide_buttons()
|
|
var type = _data.remap_type(_remap)
|
|
match type:
|
|
"audio":
|
|
_audio_ui.show()
|
|
"image":
|
|
_image_ui.show()
|
|
"video":
|
|
_video_ui.show()
|
|
|
|
func _hide_buttons() -> void:
|
|
_audio_ui.hide()
|
|
_video_ui.hide()
|
|
_image_ui.hide()
|
|
|
|
func _on_audio_pressed() -> void:
|
|
var audio_player
|
|
if get_tree().get_root().has_node("AudioPlayer"):
|
|
audio_player = get_tree().get_root().get_node("AudioPlayer") as AudioStreamPlayer
|
|
else:
|
|
audio_player = AudioStreamPlayer.new()
|
|
get_tree().get_root().add_child(audio_player)
|
|
var audio = load(_remap.value)
|
|
audio.set_loop(false)
|
|
audio_player.stream = audio
|
|
audio_player.play()
|
|
|
|
func _on_video_pressed() -> void:
|
|
var video_dialog: Window = LocalizationRemapDialogVideo.instantiate()
|
|
var root = get_tree().get_root()
|
|
root.add_child(video_dialog)
|
|
video_dialog.title = _data.filename(_remap.value)
|
|
var video_player = video_dialog.get_node("VideoPlayer") as VideoStreamPlayer
|
|
video_player.expand = true
|
|
var video: VideoStream = load(_remap.value)
|
|
video_player.stream = video
|
|
video_dialog.close_requested.connect(_video_dialog_close.bind(video_dialog))
|
|
video_dialog.popup_centered(Vector2i(500, 300))
|
|
video_player.play()
|
|
|
|
func _video_dialog_close(video_dialog: Window) -> void:
|
|
video_dialog.hide()
|
|
|
|
func _on_image_pressed() -> void:
|
|
var image_dialog: Window = LocalizationRemapDialogImage.instantiate()
|
|
var root = get_tree().get_root()
|
|
root.add_child(image_dialog)
|
|
image_dialog.title = _data.filename(_remap.value)
|
|
var texture = image_dialog.get_node("Texture") as TextureRect
|
|
var image = load(_remap.value)
|
|
texture.texture = image
|
|
image_dialog.close_requested.connect(_image_dialog_close.bind(image_dialog))
|
|
image_dialog.popup_centered(Vector2i(500, 300))
|
|
|
|
func _image_dialog_close(image_dialog: Window) -> void:
|
|
image_dialog.hide()
|