Bubble-Blower/addons/code_time/plugin.gd
Marvin Dalheimer 0ab65e1df6
Init
2025-01-25 21:40:19 +01:00

53 lines
1.7 KiB
GDScript

@tool
extends EditorPlugin
const TimerPanel = preload("res://addons/code_time/timer_panel.gd")
const TIMER_PANEL = preload("res://addons/code_time/timer_panel.tscn")
var timer_panel: TimerPanel
var menu_bar: Control
var item_list: ItemList
var base_editor: CodeEdit:
set(value):
if is_instance_valid(base_editor):
if base_editor.is_connected("text_changed", _on_base_editor_text_changed):
base_editor.disconnect("text_changed", _on_base_editor_text_changed)
base_editor = value
if is_instance_valid(base_editor):
base_editor.connect("text_changed", _on_base_editor_text_changed)
func _enter_tree() -> void:
main_screen_changed.connect(_on_main_screen_changed)
func _ready() -> void:
timer_panel = TIMER_PANEL.instantiate()
menu_bar = EditorInterface.get_script_editor().get_children()[0].get_children()[0]
menu_bar.add_child(timer_panel)
menu_bar.move_child(timer_panel, 7)
item_list = EditorInterface.get_script_editor().get_children()[0].get_children()[1].get_children()[0].get_children()[0].get_children()[1]
item_list.connect("item_selected", _on_item_list_selected)
func _exit_tree() -> void:
menu_bar.remove_child(timer_panel)
timer_panel = null
menu_bar = null
item_list = null
base_editor = null
func get_base_editor() -> CodeEdit:
return EditorInterface.get_script_editor().get_current_editor().get_base_editor()
func _on_main_screen_changed(screen_name: String) -> void:
if screen_name == "Script":
base_editor = get_base_editor()
func _on_base_editor_text_changed() -> void:
if timer_panel.timer.is_stopped():
timer_panel.timer.start()
if timer_panel.timer.paused:
timer_panel.timer.paused = false
func _on_item_list_selected(index: int) -> void:
base_editor = get_base_editor()