forked from GDQuest/learn-gdscript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOutputConsoleErrorMessage.gd
122 lines (89 loc) · 3.85 KB
/
OutputConsoleErrorMessage.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
extends PanelContainer
signal show_code_requested(file_name, line, character)
signal explain_error_requested(error_code, error_message)
signal external_explain_requested
var message_severity := -1 setget set_message_severity
var message_text := "" setget set_message_text
var message_code := -1
var external_error := false setget set_external_error
var origin_file := "" setget set_origin_file
var origin_line := -1 setget set_origin_line
var origin_char := -1 setget set_origin_char
onready var _severity_label := $Layout/Content/MessageRow/MessageSeverity as Label
onready var _message_label := $Layout/Content/MessageRow/MessageValue as Label
onready var _location_row := $Layout/Content/LocationRow as Control
onready var _file_name_label := $Layout/Content/LocationRow/FileName as Label
onready var _location_label := $Layout/Content/LocationRow/CodeLocation as Label
onready var _external_label := $Layout/Content/ExternalError as Label
onready var _message_explain_button := $Layout/ExplainButton as Button
onready var _tweener := $Tween as Tween
func _ready() -> void:
_update_visuals()
_message_explain_button.connect("pressed", self, "_on_explain_pressed")
_location_row.connect("gui_input", self, "_location_row_gui_input")
_external_label.connect("gui_input", self, "_external_label_gui_input")
_tweener.stop_all()
_tweener.interpolate_property(self, "self_modulate:a", 1.0, 0.25, 1.5)
_tweener.start()
func _update_visuals() -> void:
if not is_inside_tree():
return
_message_label.text = message_text
if external_error:
_location_row.hide()
_external_label.show()
else:
_external_label.hide()
_file_name_label.text = origin_file
_location_label.text = "line %d, column %d" % [origin_line + 1, origin_char]
_location_row.show()
match message_severity:
MessageBus.MESSAGE_TYPE.ASSERT:
_severity_label.text = "ASSERT"
_message_label.add_color_override("font_color", Color(1, 0.094118, 0.321569))
_severity_label.add_color_override("font_color", Color(1, 0.094118, 0.321569))
MessageBus.MESSAGE_TYPE.ERROR:
_severity_label.text = "ERROR"
_message_label.add_color_override("font_color", Color(1, 0.094118, 0.321569))
_severity_label.add_color_override("font_color", Color(1, 0.094118, 0.321569))
MessageBus.MESSAGE_TYPE.WARNING:
_severity_label.text = "WARNING"
_message_label.add_color_override("font_color", Color(1, 0.960784, 0.25098))
_severity_label.add_color_override("font_color", Color(1, 0.960784, 0.25098))
_:
_severity_label.text = "INFO"
_message_label.add_color_override("font_color", Color(0.572549, 0.560784, 0.721569))
_severity_label.add_color_override("font_color", Color(0.572549, 0.560784, 0.721569))
_external_label.hide()
_message_explain_button.hide()
if message_code == -1:
_external_label.hide()
_message_explain_button.hide()
func _location_row_gui_input(event: InputEvent) -> void:
var mb := event as InputEventMouseButton
if mb and mb.button_index == BUTTON_LEFT and not mb.pressed:
emit_signal("show_code_requested", origin_file, origin_line, origin_char)
func _external_label_gui_input(event: InputEvent) -> void:
var mb := event as InputEventMouseButton
if mb and mb.button_index == BUTTON_LEFT and not mb.pressed:
emit_signal("external_explain_requested")
func set_message_severity(value: int) -> void:
message_severity = value
_update_visuals()
func set_message_text(value: String) -> void:
message_text = value
_update_visuals()
func set_external_error(value: bool) -> void:
external_error = value
_update_visuals()
func set_origin_file(value: String) -> void:
origin_file = value
_update_visuals()
func set_origin_line(value: int) -> void:
origin_line = value
_update_visuals()
func set_origin_char(value: int) -> void:
origin_char = value
_update_visuals()
func _on_explain_pressed() -> void:
emit_signal("explain_error_requested", message_code, message_text)