diff --git a/assets/fonts/IconButtonFont.tres b/assets/fonts/IconButtonFont.tres new file mode 100644 index 0000000..281a311 --- /dev/null +++ b/assets/fonts/IconButtonFont.tres @@ -0,0 +1,7 @@ +[gd_resource type="FontVariation" load_steps=2 format=3 uid="uid://dg5vsg45k8y7w"] + +[ext_resource type="FontFile" uid="uid://depydd16jq777" path="res://assets/fonts/FontMono.ttf" id="1_67ox0"] + +[resource] +base_font = ExtResource("1_67ox0") +spacing_bottom = -15 diff --git a/src/ui_parts/IconTextButton.gd b/src/ui_parts/IconTextButton.gd new file mode 100644 index 0000000..0fe08ad --- /dev/null +++ b/src/ui_parts/IconTextButton.gd @@ -0,0 +1 @@ +extends BetterButton diff --git a/src/ui_parts/IconTextButton.gd.uid b/src/ui_parts/IconTextButton.gd.uid new file mode 100644 index 0000000..d688d4d --- /dev/null +++ b/src/ui_parts/IconTextButton.gd.uid @@ -0,0 +1 @@ +uid://bs5jf31syjgie diff --git a/src/ui_parts/display.gd b/src/ui_parts/display.gd index 7023102..fa44926 100644 --- a/src/ui_parts/display.gd +++ b/src/ui_parts/display.gd @@ -4,9 +4,9 @@ const NumberEdit = preload("res://src/ui_widgets/number_edit.gd") @onready var viewport: SubViewport = %Viewport @onready var reference_texture: TextureRect = %Viewport/ReferenceTexture -@onready var reference_button: Button = %LeftMenu/Reference -@onready var snapper: NumberEdit = %LeftMenu/Snapping/SnapNumberEdit -@onready var snap_button: BetterButton = %LeftMenu/Snapping/SnapButton +@onready var reference_button: Button = %ViewportOptions/Reference +@onready var snapper: NumberEdit = %ViewportOptions/Snapping/SnapNumberEdit +@onready var snap_button: BetterButton = %ViewportOptions/Snapping/SnapButton @onready var viewport_panel: PanelContainer = $ViewportPanel @onready var debug_container: MarginContainer = $ViewportPanel/DebugMargins @onready var debug_label: Label = %DebugContainer/DebugLabel @@ -38,7 +38,7 @@ func _ready() -> void: func sync_localization() -> void: - %LeftMenu/Snapping/SnapNumberEdit.tooltip_text = Translator.translate("Snap size") + %ViewportOptions/Snapping/SnapNumberEdit.tooltip_text = Translator.translate("Snap size") func sync_theming() -> void: var frame := StyleBoxFlat.new() diff --git a/src/ui_parts/display.tscn b/src/ui_parts/display.tscn index 69163ee..3c5aac5 100644 --- a/src/ui_parts/display.tscn +++ b/src/ui_parts/display.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=18 format=3 uid="uid://bvrncl7e6yn5b"] +[gd_scene load_steps=19 format=3 uid="uid://bvrncl7e6yn5b"] [ext_resource type="Script" uid="uid://bxmb134e3sqpr" path="res://src/ui_parts/display.gd" id="1_oib5g"] [ext_resource type="Texture2D" uid="uid://iglrqrqyg4kn" path="res://assets/icons/Reference.svg" id="4_2hiq7"] @@ -9,6 +9,7 @@ [ext_resource type="PackedScene" uid="uid://oltvrf01xrxl" path="res://src/ui_widgets/zoom_menu.tscn" id="8_xtdmn"] [ext_resource type="Script" uid="uid://b6pmlbnl76wmm" path="res://src/ui_parts/viewport.gd" id="9_4xrk7"] [ext_resource type="Script" uid="uid://cbajqkgudfvh0" path="res://src/ui_parts/viewport_container.gd" id="9_ryr8t"] +[ext_resource type="FontVariation" uid="uid://dg5vsg45k8y7w" path="res://assets/fonts/IconButtonFont.tres" id="10_kq8gf"] [ext_resource type="Texture2D" uid="uid://b7r171i82g3xl" path="res://assets/icons/Translate.svg" id="10_rll1m"] [ext_resource type="Shader" uid="uid://i2y5pyhcgra2" path="res://src/shaders/zoom_shader.gdshader" id="10_x7ybk"] [ext_resource type="Texture2D" uid="uid://c68og6bsqt0lb" path="res://assets/icons/backgrounds/Checkerboard.svg" id="11_1bm1s"] @@ -51,7 +52,7 @@ unique_name_in_owner = true disable_3d = true handle_input_locally = false gui_snap_controls_to_pixels = false -size = Vector2i(480, 819) +size = Vector2i(480, 811) size_2d_override_stretch = true render_target_update_mode = 4 script = ExtResource("9_4xrk7") @@ -92,54 +93,67 @@ script = ExtResource("13_lwhwy") layout_mode = 2 [node name="ViewportOptions" type="HBoxContainer" parent="ViewportPanel/VBoxContainer/Toolbar"] -layout_mode = 2 -alignment = 1 - -[node name="LeftMenu" type="HBoxContainer" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions"] unique_name_in_owner = true -custom_minimum_size = Vector2(132, 0) layout_mode = 2 -theme_override_constants/separation = 5 +alignment = 1 -[node name="show_grid" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu"] +[node name="show_grid" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions"] layout_mode = 2 -theme_type_variation = &"IconButton" +theme_type_variation = &"FlatButton" +theme_override_fonts/font = ExtResource("10_kq8gf") +theme_override_font_sizes/font_size = 12 +text = "Grid" icon = ExtResource("8_rll1m") +icon_alignment = 1 +vertical_icon_alignment = 0 script = ExtResource("6_3v3ve") action = "view_show_grid" metadata/_custom_type_script = "uid://ynx3s1jc6bwq" -[node name="show_handle" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu"] +[node name="show_handle" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions"] layout_mode = 2 -theme_type_variation = &"IconButton" +theme_type_variation = &"FlatButton" +theme_override_fonts/font = ExtResource("10_kq8gf") +theme_override_font_sizes/font_size = 12 +text = "Handle" icon = ExtResource("10_rll1m") +icon_alignment = 1 +vertical_icon_alignment = 0 script = ExtResource("6_3v3ve") action = "view_show_handles" metadata/_custom_type_script = "uid://ynx3s1jc6bwq" -[node name="rasterized svg" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu"] +[node name="rasterize_svg" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions"] visible = false layout_mode = 2 -theme_type_variation = &"IconButton" +theme_type_variation = &"FlatButton" +theme_override_fonts/font = ExtResource("10_kq8gf") +theme_override_font_sizes/font_size = 12 +text = "Handle" icon = ExtResource("15_kq8gf") +icon_alignment = 1 +vertical_icon_alignment = 0 script = ExtResource("6_3v3ve") action = "view_rasterized_svg" metadata/_custom_type_script = "uid://ynx3s1jc6bwq" -[node name="Reference" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu"] +[node name="Reference" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions"] layout_mode = 2 -size_flags_horizontal = 2 focus_mode = 0 mouse_default_cursor_shape = 2 -theme_type_variation = &"IconButton" +theme_type_variation = &"FlatButton" +theme_override_fonts/font = ExtResource("10_kq8gf") +theme_override_font_sizes/font_size = 12 +text = "Reference" icon = ExtResource("4_2hiq7") icon_alignment = 1 +vertical_icon_alignment = 0 -[node name="Snapping" type="HBoxContainer" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu"] +[node name="Snapping" type="HBoxContainer" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions"] layout_mode = 2 theme_override_constants/separation = 0 -[node name="SnapButton" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu/Snapping"] +[node name="SnapButton" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/Snapping"] layout_mode = 2 focus_mode = 0 mouse_default_cursor_shape = 2 @@ -149,8 +163,7 @@ icon = ExtResource("5_1k2cq") script = ExtResource("6_3v3ve") action = "toggle_snap" -[node name="SnapNumberEdit" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu/Snapping" instance=ExtResource("7_wrrfr")] -custom_minimum_size = Vector2(48, 22) +[node name="SnapNumberEdit" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/Snapping" instance=ExtResource("7_wrrfr")] layout_mode = 2 theme_type_variation = &"LeftConnectedLineEdit" max_length = 20 @@ -161,24 +174,32 @@ allow_lower = false layout_mode = 2 size_flags_horizontal = 3 -[node name="TabsPanel" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions"] -layout_mode = 2 -focus_mode = 0 -mouse_default_cursor_shape = 2 -theme_type_variation = &"IconButton" -icon = ExtResource("14_ryr8t") -icon_alignment = 1 - -[node name="spacer2" type="Control" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions"] -layout_mode = 2 -size_flags_horizontal = 3 - [node name="ZoomMenu" parent="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions" instance=ExtResource("8_xtdmn")] unique_name_in_owner = true custom_minimum_size = Vector2(132, 0) layout_mode = 2 +size_flags_vertical = 4 alignment = 2 +[node name="Control" type="Control" parent="ViewportPanel/VBoxContainer/Toolbar"] +layout_mode = 2 +mouse_filter = 2 + +[node name="TabsPanel" type="Button" parent="ViewportPanel/VBoxContainer/Toolbar/Control"] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -12.0 +offset_top = -55.0 +offset_right = 12.0 +offset_bottom = -16.0 +grow_horizontal = 2 +focus_mode = 0 +mouse_default_cursor_shape = 2 +icon = ExtResource("14_ryr8t") +icon_alignment = 1 + [node name="DebugMargins" type="MarginContainer" parent="ViewportPanel"] visible = false layout_mode = 2 @@ -213,9 +234,9 @@ theme_override_font_sizes/font_size = 14 horizontal_alignment = 2 [connection signal="size_changed" from="ViewportPanel/VBoxContainer/ViewportContainer/Viewport" to="ViewportPanel/VBoxContainer/ViewportContainer/Viewport" method="_on_size_changed"] -[connection signal="pressed" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu/Reference" to="." method="_on_reference_pressed"] -[connection signal="toggled" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu/Snapping/SnapButton" to="." method="_on_snap_button_toggled"] -[connection signal="value_changed" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/LeftMenu/Snapping/SnapNumberEdit" to="." method="_on_snap_number_edit_value_changed"] -[connection signal="pressed" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/TabsPanel" to="." method="show_tabs_panel"] +[connection signal="pressed" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/Reference" to="." method="_on_reference_pressed"] +[connection signal="toggled" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/Snapping/SnapButton" to="." method="_on_snap_button_toggled"] +[connection signal="value_changed" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/Snapping/SnapNumberEdit" to="." method="_on_snap_number_edit_value_changed"] [connection signal="zoom_changed" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/ZoomMenu" to="ViewportPanel/VBoxContainer/ViewportContainer/Viewport" method="_on_zoom_changed"] [connection signal="zoom_reset_pressed" from="ViewportPanel/VBoxContainer/Toolbar/ViewportOptions/ZoomMenu" to="ViewportPanel/VBoxContainer/ViewportContainer/Viewport" method="center_frame"] +[connection signal="pressed" from="ViewportPanel/VBoxContainer/Toolbar/Control/TabsPanel" to="." method="show_tabs_panel"] diff --git a/src/ui_widgets/BetterButton.gd b/src/ui_widgets/BetterButton.gd index 53878e6..64819d8 100644 --- a/src/ui_widgets/BetterButton.gd +++ b/src/ui_widgets/BetterButton.gd @@ -43,3 +43,4 @@ func end_highlight() -> void: remove_theme_stylebox_override("normal") remove_theme_stylebox_override("hover") timer = null + diff --git a/src/utils/ThemeUtils.gd b/src/utils/ThemeUtils.gd index db16fe7..8435c78 100644 --- a/src/utils/ThemeUtils.gd +++ b/src/utils/ThemeUtils.gd @@ -460,7 +460,6 @@ static func _setup_button(theme: Theme) -> void: theme.set_stylebox("pressed", "OutlinedButton", pressed_outlined) theme.set_stylebox("disabled", "OutlinedButton", outlined_style) - theme.add_type("IconButton") theme.set_type_variation("IconButton", "Button") @@ -658,13 +657,22 @@ static func _setup_button(theme: Theme) -> void: theme.set_color("icon_pressed_color", "FlatButton", icon_pressed_color) theme.set_color("icon_hover_pressed_color", "FlatButton", icon_pressed_color) - theme.set_stylebox("normal", "FlatButton", icon_button_stylebox) + var flat_button_stylebox := normal_button_stylebox.duplicate() + flat_button_stylebox.draw_center = false + flat_button_stylebox.set_content_margin_all(4) + + theme.set_stylebox("normal", "FlatButton", flat_button_stylebox) + + theme.set_stylebox("hover", "FlatButton", flat_button_stylebox) - theme.set_stylebox("hover", "FlatButton", icon_button_stylebox) + var pressed_flat_button_stylebox := pressed_button_stylebox.duplicate() + pressed_flat_button_stylebox.set_corner_radius_all(8) + pressed_flat_button_stylebox.set_content_margin_all(4) + theme.set_stylebox("pressed", "FlatButton", pressed_flat_button_stylebox) - theme.set_stylebox("pressed", "FlatButton", pressed_button_stylebox) + theme.set_stylebox("hover_pressed", "FlatButton", pressed_flat_button_stylebox) - var disabled_flat_button_stylebox := icon_button_stylebox.duplicate() + var disabled_flat_button_stylebox := flat_button_stylebox.duplicate() disabled_flat_button_stylebox.bg_color = flat_button_color_disabled disabled_flat_button_stylebox.draw_center = true theme.set_stylebox("disabled", "FlatButton", disabled_flat_button_stylebox)