first Prototype
This commit is contained in:
parent
e11825c698
commit
35ce267482
481 changed files with 17315 additions and 1 deletions
|
|
@ -0,0 +1,136 @@
|
|||
# Remap UI LineEdit for LocalizationEditor : MIT License
|
||||
# @author Vladimir Petrenko
|
||||
# Drag and drop not work just now, see Workaround -> LocalizationRemapPut
|
||||
# https://github.com/godotengine/godot/issues/30480
|
||||
@tool
|
||||
extends LineEdit
|
||||
|
||||
var _key
|
||||
var _remap
|
||||
var _data: LocalizationData
|
||||
|
||||
var _remap_ui_style_empty: StyleBoxFlat
|
||||
var _remap_ui_style_resource: StyleBoxFlat
|
||||
var _remap_ui_style_resource_diff: StyleBoxFlat
|
||||
var _remap_ui_style_resource_double: StyleBoxFlat
|
||||
|
||||
const LocalizationRemapDialogFile = preload("res://addons/localization_editor/scenes/remaps/LocalizationRemapDialogFile.tscn")
|
||||
|
||||
func set_data(key, remap, data: LocalizationData) -> void:
|
||||
_key = key
|
||||
_remap = remap
|
||||
_data = data
|
||||
_init_styles()
|
||||
_init_connections()
|
||||
_draw_view()
|
||||
|
||||
func _init_styles() -> void:
|
||||
var style_box = get_theme_stylebox("normal", "LineEdit")
|
||||
_remap_ui_style_empty = style_box.duplicate()
|
||||
_remap_ui_style_empty.set_bg_color(Color("#661c1c"))
|
||||
_remap_ui_style_resource = style_box.duplicate()
|
||||
_remap_ui_style_resource.set_bg_color(Color("#192e59"))
|
||||
_remap_ui_style_resource_diff = style_box.duplicate()
|
||||
_remap_ui_style_resource_diff.set_bg_color(Color("#514200"))
|
||||
_remap_ui_style_resource_double = style_box.duplicate()
|
||||
_remap_ui_style_resource_double.set_bg_color(Color("#174044"))
|
||||
|
||||
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 is_connected("focus_entered", _on_focus_entered):
|
||||
assert(focus_entered.connect(_on_focus_entered) == OK)
|
||||
if not is_connected("focus_exited", _on_focus_exited):
|
||||
assert(focus_exited.connect(_on_focus_exited) == OK)
|
||||
if not is_connected("text_changed", _remap_value_changed):
|
||||
assert(text_changed.connect(_remap_value_changed) == OK)
|
||||
if not is_connected("gui_input", _on_gui_input):
|
||||
assert(gui_input.connect(_on_gui_input) == OK)
|
||||
|
||||
func _draw_view() -> void:
|
||||
if has_focus():
|
||||
text = _remap.value
|
||||
else:
|
||||
text = _data.filename(_remap.value)
|
||||
_check_remap_ui()
|
||||
|
||||
func _input(event) -> void:
|
||||
if (event is InputEventMouseButton) and event.pressed:
|
||||
if not get_global_rect().has_point(event.position):
|
||||
release_focus()
|
||||
|
||||
func _on_focus_entered() -> void:
|
||||
text = _remap.value
|
||||
|
||||
func _on_focus_exited() -> void:
|
||||
text = _data.filename(_remap.value)
|
||||
|
||||
func _remap_value_changed(remap_value) -> void:
|
||||
_data.remapkey_value_change(_remap, remap_value)
|
||||
|
||||
func _on_gui_input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseButton:
|
||||
if event.button_index == MOUSE_BUTTON_MIDDLE:
|
||||
if event.pressed:
|
||||
grab_focus()
|
||||
var file_dialog = LocalizationRemapDialogFile.instantiate()
|
||||
if _resource_exists():
|
||||
file_dialog.current_dir = _data.file_path(_remap.value)
|
||||
file_dialog.current_file = _data.filename(_remap.value)
|
||||
for extension in _data.supported_file_extensions():
|
||||
file_dialog.add_filter("*." + extension)
|
||||
var root = get_tree().get_root()
|
||||
root.add_child(file_dialog)
|
||||
file_dialog.connect("file_selected", _remap_value_changed)
|
||||
file_dialog.popup_centered()
|
||||
|
||||
func _can_drop_data(position, data) -> bool:
|
||||
var remap_value = data["files"][0]
|
||||
var remap_extension = _data.file_extension(remap_value)
|
||||
for extension in _data.supported_file_extensions():
|
||||
if remap_extension == extension:
|
||||
return true
|
||||
return false
|
||||
|
||||
func _drop_data(position, data) -> void:
|
||||
var remap_value = data["files"][0]
|
||||
_remap_value_changed(remap_value)
|
||||
|
||||
func _check_remap_ui() -> void:
|
||||
if text.length() <= 0:
|
||||
set("custom_styles/normal", _remap_ui_style_empty)
|
||||
tooltip_text = "Please set remap resource"
|
||||
elif not _resource_exists():
|
||||
set("custom_styles/normal", _remap_ui_style_resource)
|
||||
tooltip_text = "Your resource path: \"" + _remap.value + "\" does not exists"
|
||||
elif _resource_different_type():
|
||||
set("custom_styles/normal", _remap_ui_style_resource_diff)
|
||||
tooltip_text = "Your remaps have different types"
|
||||
elif _resource_double():
|
||||
set("custom_styles/normal", _remap_ui_style_resource_double)
|
||||
tooltip_text = "Your have double resources in your remaps"
|
||||
else:
|
||||
set("custom_styles/normal", null)
|
||||
tooltip_text = ""
|
||||
|
||||
func _resource_exists() -> bool:
|
||||
if _data.remap_type(_remap) == "undefined":
|
||||
return false
|
||||
return FileAccess.file_exists(_remap.value)
|
||||
|
||||
func _resource_different_type() -> bool:
|
||||
var type = _data.remap_type(_remap)
|
||||
for remap in _key.remaps:
|
||||
if remap.value.length() > 0 and type != _data.remap_type(remap):
|
||||
return true
|
||||
return false
|
||||
|
||||
func _resource_double() -> bool:
|
||||
var first
|
||||
for remap in _key.remaps:
|
||||
if first == null:
|
||||
first = remap
|
||||
continue
|
||||
if remap.value.length() > 0 and first.value == remap.value:
|
||||
return true
|
||||
return false
|
||||
Loading…
Add table
Add a link
Reference in a new issue