init
This commit is contained in:
commit
029c00736b
59 changed files with 3819 additions and 0 deletions
85
addons/script-ide/tabbar/custom_tab.gd
Normal file
85
addons/script-ide/tabbar/custom_tab.gd
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
@tool
|
||||
extends Button
|
||||
|
||||
signal close_pressed
|
||||
signal right_clicked
|
||||
signal dragged_over
|
||||
signal dropped(source_index: int, target_index: int)
|
||||
|
||||
var close_button: Button
|
||||
|
||||
func _ready() -> void:
|
||||
icon_alignment = HORIZONTAL_ALIGNMENT_LEFT
|
||||
alignment = HORIZONTAL_ALIGNMENT_LEFT
|
||||
action_mode = ACTION_MODE_BUTTON_PRESS
|
||||
auto_translate_mode = Node.AUTO_TRANSLATE_MODE_DISABLED
|
||||
toggle_mode = true
|
||||
|
||||
func show_close_button():
|
||||
if (close_button == null):
|
||||
close_button = create_close_button()
|
||||
|
||||
add_child(close_button)
|
||||
close_button.set_anchors_and_offsets_preset(Control.PRESET_CENTER_RIGHT)
|
||||
|
||||
func hide_close_button():
|
||||
if (close_button != null):
|
||||
remove_child(close_button)
|
||||
|
||||
func create_close_button() -> Button:
|
||||
close_button = Button.new()
|
||||
close_button.icon = EditorInterface.get_editor_theme().get_icon(&"Close", &"EditorIcons")
|
||||
close_button.flat = true
|
||||
close_button.focus_mode = Control.FOCUS_NONE
|
||||
close_button.pressed.connect(on_close_pressed)
|
||||
|
||||
return close_button
|
||||
|
||||
func _gui_input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseButton && event.pressed:
|
||||
if event.button_index == MOUSE_BUTTON_MIDDLE:
|
||||
on_close_pressed()
|
||||
elif (event.button_index == MOUSE_BUTTON_RIGHT):
|
||||
button_pressed = true
|
||||
on_right_click()
|
||||
|
||||
func on_right_click():
|
||||
right_clicked.emit()
|
||||
|
||||
func on_close_pressed() -> void:
|
||||
close_pressed.emit()
|
||||
|
||||
func _get_drag_data(at_position: Vector2) -> Variant:
|
||||
var preview: Button = Button.new()
|
||||
preview.text = text
|
||||
preview.icon = icon
|
||||
preview.icon_alignment = HORIZONTAL_ALIGNMENT_LEFT
|
||||
preview.alignment = HORIZONTAL_ALIGNMENT_LEFT
|
||||
preview.auto_translate_mode = Node.AUTO_TRANSLATE_MODE_DISABLED
|
||||
preview.add_theme_stylebox_override(&"normal", get_theme_stylebox(&"normal"))
|
||||
|
||||
set_drag_preview(preview)
|
||||
|
||||
var drag_data: Dictionary[String, Variant]
|
||||
drag_data["type"] = "script_list_element"
|
||||
drag_data["script_list_element"] = EditorInterface.get_script_editor().get_current_editor()
|
||||
drag_data["index"] = get_index()
|
||||
|
||||
return drag_data
|
||||
|
||||
func _can_drop_data(at_position: Vector2, data: Variant) -> bool:
|
||||
if !(data is Dictionary):
|
||||
return false
|
||||
|
||||
var can_drop: bool = data.has("index")
|
||||
|
||||
if (can_drop):
|
||||
dragged_over.emit()
|
||||
|
||||
return can_drop
|
||||
|
||||
func _drop_data(at_position: Vector2, data: Variant) -> void:
|
||||
if (!_can_drop_data(at_position, data)):
|
||||
return
|
||||
|
||||
dropped.emit(data["index"], get_index())
|
||||
Loading…
Add table
Add a link
Reference in a new issue