Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions addons/material_maker/engine/nodes/gen_comment_line.gd
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
@tool
extends MMGenTexture
class_name MMGenCommentLine

extends MMGenBase

# Comments to put in the graph


var text : String = "Enter something.."

func _ready() -> void:
Expand All @@ -18,15 +16,15 @@ func get_type_name() -> String:
return "Comment Line"

func get_parameter_defs() -> Array:
return []
return [{ name="label", type="enum", values=["small", "large", "huge"], default=0 }]

func get_input_defs() -> Array:
return []

func get_output_defs(_show_hidden : bool = false) -> Array:
return []

func _serialize(data: Dictionary) -> Dictionary:
func _serialize(data : Dictionary) -> Dictionary:
data.type = "comment_line"
data.text = text
return data
Expand Down
59 changes: 45 additions & 14 deletions material_maker/nodes/comment_line/comment_line.gd
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
extends GraphElement
class_name MMGraphCommentLine
extends GraphElement

# Single-lined comments to put in the graph

@onready var editor = %TextEditor
@onready var label = %TextLabel
@onready var editor : LineEdit = %TextEditor
@onready var label : Label = %TextLabel

const LABEL_SIZES : Array[int] = [16, 48, 96]

var disable_undoredo_for_offset : bool = false

Expand All @@ -13,27 +15,25 @@ var generator : MMGenCommentLine:
generator = g
label.text = generator.text.replace("\\n", "\n")
position_offset = generator.position

generator.parameter_changed.connect(on_parameter_changed)
set_label_size(generator.get_parameter("label"))

func do_set_position(o : Vector2) -> void:
disable_undoredo_for_offset = true
position_offset = o
generator.position = o
disable_undoredo_for_offset = false


func _on_node_selected() -> void:
var tween = get_tree().create_tween()
var tween : Tween = get_tree().create_tween()
tween.tween_property($PanelContainer, "self_modulate",
Color(1.0, 1.0, 1.0, 0.2), 0.4).set_trans(Tween.TRANS_CUBIC)


func _on_node_deselected() -> void:
var tween = get_tree().create_tween()
var tween : Tween = get_tree().create_tween()
tween.tween_property($PanelContainer, "self_modulate",
Color(1.0, 1.0, 1.0, 0.0), 0.4).set_trans(Tween.TRANS_CUBIC)


func _on_text_focus_exited() -> void:
if editor.text == "" or editor.text.strip_edges() == "":
get_parent().remove_node(self)
Expand All @@ -43,16 +43,49 @@ func _on_text_focus_exited() -> void:
label.visible = true
generator.text = editor.text


func _on_dragged(_from, to) -> void:
generator.position = to


func _on_position_offset_changed() -> void:
if ! disable_undoredo_for_offset:
get_parent().undoredo_move_node(generator.name, generator.position, position_offset)
generator.set_position(position_offset)

func _input(event : InputEvent) -> void:
if Rect2(Vector2(), size).has_point(get_local_mouse_position()):
mm_globals.set_tip_text("#LMB#LMB: Edit label, #RMB: Set label size", 1.0, 2)
if (event is InputEventMouseButton and event.pressed
and event.button_index == MOUSE_BUTTON_RIGHT
and label.visible and is_visible_in_tree()):
accept_event()
var menu : PopupMenu = PopupMenu.new()
menu.add_check_item("Small label")
menu.add_check_item("Large label")
menu.add_check_item("Huge label")
menu.set_item_checked(generator.get_parameter("label"), true)
add_child(menu)
menu.position = get_screen_transform() * get_local_mouse_position()
menu.id_pressed.connect(on_label_context_menu)
menu.popup_hide.connect(menu.queue_free)
menu.popup()

func on_label_context_menu(id : int) -> void:
var old_value = generator.get_parameter("label")
if old_value != id and get_parent().get("undoredo") != null:
var node_hier_name = generator.get_hier_name()
var undo_command = { type="setparams", node=node_hier_name, params={ "label"=old_value } }
var redo_command = { type="setparams", node=node_hier_name, params={ "label"=id } }
get_parent().undoredo.add("Set parameter value", [ undo_command ], [ redo_command ])
generator.set_parameter("label", id)

func on_parameter_changed(n : String, v : Variant) -> void:
if n == "label":
set_label_size(v)

func set_label_size(id : int) -> void:
var new_size : int = LABEL_SIZES[id]
label.add_theme_font_size_override("font_size", new_size)
editor.add_theme_font_size_override("font_size", new_size)

func _on_text_label_gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton and event.double_click and event.button_index == MOUSE_BUTTON_LEFT:
Expand All @@ -63,10 +96,8 @@ func _on_text_label_gui_input(event: InputEvent) -> void:
editor.grab_focus()
accept_event()


func _on_text_text_submitted(_new_text: String) -> void:
func _on_text_text_submitted(_new_text : String) -> void:
_on_text_focus_exited()


func _on_minimum_size_changed() -> void:
size = get_combined_minimum_size()
14 changes: 6 additions & 8 deletions material_maker/nodes/comment_line/comment_line.tscn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[gd_scene load_steps=3 format=3 uid="uid://b04o8fwyfuaqx"]
[gd_scene format=3 uid="uid://b04o8fwyfuaqx"]

[ext_resource type="Script" uid="uid://b8htj1aou1m04" path="res://material_maker/nodes/comment_line/comment_line.gd" id="1_4xc6p"]

Expand All @@ -14,30 +14,31 @@ corner_radius_bottom_right = 4
corner_radius_bottom_left = 4
shadow_color = Color(0, 0, 0, 0)

[node name="CommentLineNode" type="GraphElement"]
[node name="CommentLineNode" type="GraphElement" unique_id=1804843593]
offset_right = 127.0
offset_bottom = 23.0
size_flags_horizontal = 2
size_flags_vertical = 3
mouse_filter = 0
scaling_menus = true
script = ExtResource("1_4xc6p")

[node name="PanelContainer" type="PanelContainer" parent="."]
[node name="PanelContainer" type="PanelContainer" parent="." unique_id=179944357]
self_modulate = Color(1, 1, 1, 0)
layout_mode = 2
size_flags_horizontal = 2
size_flags_vertical = 0
mouse_filter = 1
theme_override_styles/panel = SubResource("StyleBoxFlat_4xc6p")

[node name="TextLabel" type="Label" parent="PanelContainer"]
[node name="TextLabel" type="Label" parent="PanelContainer" unique_id=1861200683]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 1
text = "Enter something..."
structured_text_bidi_override = 4

[node name="TextEditor" type="LineEdit" parent="PanelContainer"]
[node name="TextEditor" type="LineEdit" parent="PanelContainer" unique_id=752725343]
unique_name_in_owner = true
visible = false
layout_mode = 2
Expand All @@ -51,9 +52,6 @@ flat = true
[connection signal="node_deselected" from="." to="." method="_on_node_deselected"]
[connection signal="node_selected" from="." to="." method="_on_node_selected"]
[connection signal="position_offset_changed" from="." to="." method="_on_position_offset_changed"]
[connection signal="raise_request" from="." to="." method="_on_raise_request"]
[connection signal="resize_request" from="." to="." method="_on_resize_request"]
[connection signal="focus_exited" from="PanelContainer/TextLabel" to="." method="_on_text_label_focus_exited"]
[connection signal="gui_input" from="PanelContainer/TextLabel" to="." method="_on_text_label_gui_input"]
[connection signal="focus_exited" from="PanelContainer/TextEditor" to="." method="_on_text_focus_exited"]
[connection signal="text_submitted" from="PanelContainer/TextEditor" to="." method="_on_text_text_submitted"]