From 16a50d3992a15de782cfafc6d45d1c9c5b37001e Mon Sep 17 00:00:00 2001 From: LMW Date: Sun, 26 Apr 2026 12:36:18 +0800 Subject: [PATCH] Added label sizes for comment line node --- .../engine/nodes/gen_comment_line.gd | 8 +-- .../nodes/comment_line/comment_line.gd | 59 ++++++++++++++----- .../nodes/comment_line/comment_line.tscn | 14 ++--- 3 files changed, 54 insertions(+), 27 deletions(-) diff --git a/addons/material_maker/engine/nodes/gen_comment_line.gd b/addons/material_maker/engine/nodes/gen_comment_line.gd index a14b3c0a5..ec70e11a7 100644 --- a/addons/material_maker/engine/nodes/gen_comment_line.gd +++ b/addons/material_maker/engine/nodes/gen_comment_line.gd @@ -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: @@ -18,7 +16,7 @@ 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 [] @@ -26,7 +24,7 @@ func get_input_defs() -> Array: 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 diff --git a/material_maker/nodes/comment_line/comment_line.gd b/material_maker/nodes/comment_line/comment_line.gd index f0fa9d36f..131ea2078 100644 --- a/material_maker/nodes/comment_line/comment_line.gd +++ b/material_maker/nodes/comment_line/comment_line.gd @@ -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 @@ -13,7 +15,8 @@ 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 @@ -21,19 +24,16 @@ func do_set_position(o : Vector2) -> void: 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) @@ -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: @@ -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() diff --git a/material_maker/nodes/comment_line/comment_line.tscn b/material_maker/nodes/comment_line/comment_line.tscn index 67f70943c..a2224fef5 100644 --- a/material_maker/nodes/comment_line/comment_line.tscn +++ b/material_maker/nodes/comment_line/comment_line.tscn @@ -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"] @@ -14,15 +14,16 @@ 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 @@ -30,14 +31,14 @@ 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 @@ -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"]