From 74bf37a9f47d874d270f6d1d4855c3ddc86abe6a Mon Sep 17 00:00:00 2001 From: Rodz Labs Date: Sat, 21 Dec 2024 22:33:37 +0100 Subject: [PATCH] View/export panel updates in the 2D preview panel + updated rendering code for export --- .../material_maker/engine/nodes/gen_base.gd | 26 +- .../engine/nodes/gen_material.gd | 2 +- material_maker/panels/library/library.gd | 2 +- .../panels/preview_2d/export_menu.gd | 24 +- .../panels/preview_2d/preview_2d.gd | 36 +- .../panels/preview_2d/preview_2d_panel.tscn | 195 +- .../panels/preview_2d/simple_button.gd | 6 + .../panels/preview_2d/simple_button.gd.uid | 1 + material_maker/panels/preview_2d/view_menu.gd | 4 - material_maker/theme/classic.tres | 7 +- material_maker/theme/default.tres | 7 +- material_maker/theme/default_theme_icons.svg | 8158 +++++++++-------- 12 files changed, 4248 insertions(+), 4220 deletions(-) create mode 100644 material_maker/panels/preview_2d/simple_button.gd create mode 100644 material_maker/panels/preview_2d/simple_button.gd.uid diff --git a/addons/material_maker/engine/nodes/gen_base.gd b/addons/material_maker/engine/nodes/gen_base.gd index 4ac7665e1..459affbda 100644 --- a/addons/material_maker/engine/nodes/gen_base.gd +++ b/addons/material_maker/engine/nodes/gen_base.gd @@ -517,6 +517,7 @@ func generate_output_shader(output_index : int, preview : bool = false): return { shader=shader, output_type=output_type } func render(object: Object, output_index : int, size : int, preview : bool = false) -> Object: + print("This function is deprecated!") var output_shader : Dictionary = generate_output_shader(output_index, preview) var shader : String = output_shader.shader var output_type : String = output_shader.output_type @@ -524,30 +525,19 @@ func render(object: Object, output_index : int, size : int, preview : bool = fal renderer = await renderer.render_shader(object, shader, size, output_type != "rgba") return renderer -func render_output_to_texture(output_index : int, size : int) -> MMTexture: +func render_output_to_texture(output_index : int, size : Vector2i) -> MMTexture: var context : MMGenContext = MMGenContext.new() var source : ShaderCode = get_shader_code("uv", output_index, context) - var shader_compute : MMShaderCompute = MMShaderCompute.new() - var shader_status : bool = await shader_compute.set_shader_from_shadercode(source, false) + var compute_shader : MMComputeShader = MMComputeShader.new() + var shader_status : bool = await compute_shader.set_shader_from_shadercode(source, false) var texture : MMTexture = MMTexture.new() if shader_status: - var status = await shader_compute.render(texture, size) + var status = await compute_shader.render_ext([texture], size) return texture -func render_output(output_index : int, size : int) -> Image: - var context : MMGenContext = MMGenContext.new() - var source : ShaderCode = get_shader_code("uv", output_index, context) - var shader_compute : MMShaderCompute = MMShaderCompute.new() - var shader_status : bool = await shader_compute.set_shader_from_shadercode(source, false) - var image : Image - if shader_status: - var texture : MMTexture = MMTexture.new() - var status = await shader_compute.render(texture, size) - if status: - image = (await texture.get_texture()).get_image() - else: - image = Image.new() - return image +func render_output(output_index : int, size : Vector2i) -> Image: + var texture : MMTexture = await render_output_to_texture(output_index, size) + return (await texture.get_texture()).get_image() func get_shader_code(uv : String, output_index : int, context : MMGenContext) -> ShaderCode: var rv = _get_shader_code(uv, output_index, context) diff --git a/addons/material_maker/engine/nodes/gen_material.gd b/addons/material_maker/engine/nodes/gen_material.gd index f454f66b8..6c765c40c 100644 --- a/addons/material_maker/engine/nodes/gen_material.gd +++ b/addons/material_maker/engine/nodes/gen_material.gd @@ -691,7 +691,7 @@ func export_material(prefix : String, profile : String, size : int = 0) -> void: saved_files += 1 progress_dialog.set_progress(float(saved_files)/float(total_files)) continue - var result : MMTexture = await render_output_to_texture(output_index, size) + var result : MMTexture = await render_output_to_texture(output_index, Vector2i(size, size)) await result.save_to_file(file_name) saved_files += 1 progress_dialog.set_progress(float(saved_files)/float(total_files)) diff --git a/material_maker/panels/library/library.gd b/material_maker/panels/library/library.gd index b0643aa21..169eed489 100644 --- a/material_maker/panels/library/library.gd +++ b/material_maker/panels/library/library.gd @@ -339,7 +339,7 @@ func _on_PopupMenu_index_pressed(index): var current_node = main_window.get_current_node(main_window.get_current_graph_edit()) if current_node == null: return - var image : Image = await current_node.generator.render_output(0, 64) + var image : Image = await current_node.generator.render_output(0, Vector2i(64, 64)) library_manager.update_item_icon_in_library(library_index, item_path, image) 2: # Delete item library_manager.remove_item_from_library(library_index, item_path) diff --git a/material_maker/panels/preview_2d/export_menu.gd b/material_maker/panels/preview_2d/export_menu.gd index c76663ffe..440eccaae 100644 --- a/material_maker/panels/preview_2d/export_menu.gd +++ b/material_maker/panels/preview_2d/export_menu.gd @@ -69,7 +69,9 @@ func _on_export_folder_button_pressed() -> void: #file_dialog.add_filter("*.exr; EXR image file") if %ExportFolder.text: - file_dialog.current_dir = mm_globals.config.get_value("path", %ExportFolder.text) + var current_dir = mm_globals.config.get_value("path", %ExportFolder.text) + if current_dir is String: + file_dialog.current_dir = current_dir var files = await file_dialog.select_files() @@ -93,14 +95,22 @@ func _on_resolution_item_selected(index: int) -> void: mm_globals.set_config(export_settings.resolution, index) %CustomResolutionSection.visible = index == RESOLUTION_CUSTOM if index != RESOLUTION_CUSTOM: - %CustomResolution.set_value(64 << index) + %CustomResolutionX.set_value(64 << index) + %CustomResolutionY.set_value(64 << index) + + +func get_export_resolution() -> Vector2i: + if %Resolution.selected == RESOLUTION_CUSTOM: + return Vector2i(int(%CustomResolutionX.value), int(%CustomResolutionY.value)) + else: + var export_size : int = 64 << %Resolution.selected + return Vector2i(export_size, export_size) func _on_image_pressed() -> void: var path: String = %ExportFolder.text var file_name: String = %ExportFile.text - if file_name: file_name = interpret_file_name(file_name, path) @@ -125,16 +135,12 @@ func _on_image_pressed() -> void: if files.size() > 0: path = files[0] - if file_name: path = path.path_join(file_name) if path: - if %Resolution.selected == RESOLUTION_CUSTOM: - owner.export_as_image_file(path, %CustomResolution.get_value()) - else: - owner.export_as_image_file(path, 64 << %Resolution.selected) + owner.export_as_image_file(path, get_export_resolution()) export_notification("Exported to " + path) await get_tree().create_timer(0.5).timeout update() @@ -149,7 +155,7 @@ func _on_taa_render_pressed() -> void: func _on_reference_pressed() -> void: - owner.export_to_reference(%Resolution.selected) + owner.export_to_reference(get_export_resolution()) export_notification("Exported to Reference") diff --git a/material_maker/panels/preview_2d/preview_2d.gd b/material_maker/panels/preview_2d/preview_2d.gd index c8f1025a4..4e2c9824b 100644 --- a/material_maker/panels/preview_2d/preview_2d.gd +++ b/material_maker/panels/preview_2d/preview_2d.gd @@ -125,40 +125,24 @@ func export_taa() -> void: window.popup_centered() -func create_image(renderer_function : String, params : Array, image_size : int) -> void: - var source = MMGenBase.get_default_generated_shader() +func create_image(renderer_function : String, params : Array, image_size : Vector2i) -> void: if generator != null: - var gen_output_defs = generator.get_output_defs() - if ! gen_output_defs.is_empty(): - var context : MMGenContext = MMGenContext.new() - source = generator.get_shader_code("uv", output, context) - if source.output_type == "": - source = MMGenBase.get_default_generated_shader() - # Update shader - var tmp_material = ShaderMaterial.new() - var shader : Shader = Shader.new() - shader.code = MMGenBase.generate_preview_shader(source, source.output_type, "uniform vec2 mm_texture_size;\nuniform float mm_chunk_size = 1.0;\nuniform vec2 mm_chunk_offset = vec2(0.0);\nvoid fragment() {COLOR = preview_2d(mm_chunk_offset+mm_chunk_size*UV);}") - tmp_material.shader = shader - for u in source.uniforms: - tmp_material.set_shader_parameter(u.name, u.value) - mm_deps.material_update_params(MMShaderMaterial.new(tmp_material)) - var renderer = await mm_renderer.request(self) - renderer = await renderer.render_material(self, tmp_material, image_size, source.output_type != "rgba") - renderer.callv(renderer_function, params) - renderer.release(self) + var texture : MMTexture = await generator.render_output_to_texture(output, image_size) -func export_as_image_file(file_name : String, image_size : int) -> void: +func export_as_image_file(file_name : String, image_size : Vector2i) -> void: mm_globals.config.set_value("path", "save_preview", file_name.get_base_dir()) - create_image("save_to_file", [ file_name, is_greyscale ], image_size) + if generator != null: + var texture : MMTexture = await generator.render_output_to_texture(output, image_size) + await texture.save_to_file(file_name) last_export_filename = file_name last_export_size = image_size -func export_to_reference(resolution_id : int): - var texture : ImageTexture = ImageTexture.new() - await create_image("copy_to_texture", [ texture ], 64 << resolution_id) - mm_globals.main_window.get_panel("Reference").add_reference(texture) +func export_to_reference(image_size : Vector2i): + if generator != null: + var texture : MMTexture = await generator.render_output_to_texture(output, image_size) + mm_globals.main_window.get_panel("Reference").add_reference(await texture.get_texture()) func _on_Preview2D_visibility_changed(): diff --git a/material_maker/panels/preview_2d/preview_2d_panel.tscn b/material_maker/panels/preview_2d/preview_2d_panel.tscn index 2f63c79ea..bb966480d 100644 --- a/material_maker/panels/preview_2d/preview_2d_panel.tscn +++ b/material_maker/panels/preview_2d/preview_2d_panel.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=3 uid="uid://b7x7yqgsurxhv"] +[gd_scene load_steps=29 format=3 uid="uid://b7x7yqgsurxhv"] [ext_resource type="Texture2D" uid="uid://c0j4px4n72di5" path="res://material_maker/icons/icons.tres" id="1"] [ext_resource type="PackedScene" uid="uid://est6pi7xbptp" path="res://material_maker/panels/preview_2d/control_point.tscn" id="2"] @@ -9,6 +9,7 @@ [ext_resource type="PackedScene" uid="uid://b08bcbwwosrrk" path="res://material_maker/widgets/splines_edit/splines_editor.tscn" id="5_5hlfo"] [ext_resource type="PackedScene" uid="uid://b51634rcdiyr" path="res://material_maker/widgets/pixels_edit/pixels_editor.tscn" id="6_m4663"] [ext_resource type="PackedScene" uid="uid://dicq2cut03ved" path="res://material_maker/widgets/lattice_edit/lattice_editor.tscn" id="7_u2w4r"] +[ext_resource type="Script" uid="uid://bos2fu0tsood3" path="res://material_maker/panels/preview_2d/simple_button.gd" id="10_83edi"] [ext_resource type="PackedScene" uid="uid://dj5q8sxvd3gci" path="res://material_maker/widgets/option_edit/option_edit.tscn" id="12_4017l"] [ext_resource type="Script" uid="uid://c37lcka7r53wk" path="res://material_maker/panels/common/menu_bar_button_with_panel.gd" id="12_nrhap"] [ext_resource type="Script" uid="uid://5r7ncawc0gx7" path="res://material_maker/panels/preview_2d/view_menu.gd" id="13_5w2hy"] @@ -71,13 +72,12 @@ resource_local_to_scene = true render_priority = 0 shader = SubResource("5") -[sub_resource type="InputEventKey" id="InputEventKey_qowqu"] -device = -1 +[sub_resource type="InputEventKey" id="InputEventKey_83edi"] command_or_control_autoremap = true keycode = 82 -[sub_resource type="Shortcut" id="Shortcut_fwcfb"] -events = [SubResource("InputEventKey_qowqu")] +[sub_resource type="Shortcut" id="Shortcut_r76ng"] +events = [SubResource("InputEventKey_83edi")] [sub_resource type="FontVariation" id="FontVariation_wkuuo"] base_font = ExtResource("18_kn37y") @@ -401,7 +401,19 @@ theme_type_variation = &"MM_PanelMenuBar" layout_mode = 2 theme_type_variation = &"MM_PanelMenuBar" -[node name="ViewMenu" type="Button" parent="MenuBar/HBox/MainMenu/HBox" index="0" node_paths=PackedStringArray("shortcut_context")] +[node name="ResetViewButton" type="Button" parent="MenuBar/HBox/MainMenu/HBox" index="0"] +unique_name_in_owner = true +custom_minimum_size = Vector2(25, 25) +layout_mode = 2 +tooltip_text = "Center View (Ctrl+R)" +tooltip_auto_translate_mode = 2 +shortcut = SubResource("Shortcut_r76ng") +shortcut_in_tooltip = false +icon_alignment = 1 +script = ExtResource("10_83edi") +icon_name = "reset_view" + +[node name="ViewMenu" type="Button" parent="MenuBar/HBox/MainMenu/HBox" index="1" node_paths=PackedStringArray("shortcut_context")] custom_minimum_size = Vector2(40, 25) layout_mode = 2 tooltip_text = "View" @@ -422,29 +434,20 @@ offset_bottom = 145.0 theme_type_variation = &"MM_PanelMenuSubPanel" script = ExtResource("13_5w2hy") -[node name="VBoxContainer" type="VBoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" index="0"] -layout_mode = 2 - -[node name="ResetViewButton" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer" index="0"] -unique_name_in_owner = true -layout_mode = 2 -shortcut = SubResource("Shortcut_fwcfb") -text = "Center View" - -[node name="VBox" type="GridContainer" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer" index="1"] +[node name="VBox" type="GridContainer" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" index="0"] layout_mode = 2 columns = 2 -[node name="Control" type="Control" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox" index="0"] +[node name="Control" type="Control" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox" index="0"] visible = false layout_mode = 2 -[node name="ViewModeLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox" index="1"] +[node name="ViewModeLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox" index="1"] layout_mode = 2 theme_type_variation = &"MM_PanelMenuSubPanelLabel" text = "View" -[node name="ViewMode" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox" index="2" instance=ExtResource("12_4017l")] +[node name="ViewMode" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox" index="2" instance=ExtResource("12_4017l")] unique_name_in_owner = true layout_mode = 2 selected = 0 @@ -456,12 +459,12 @@ popup/item_1/id = 1 popup/item_2/text = "Clamp" popup/item_2/id = 2 -[node name="PostProcessingLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox" index="3"] +[node name="PostProcessingLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox" index="3"] layout_mode = 2 theme_type_variation = &"MM_PanelMenuSubPanelLabel" text = "Filter" -[node name="PostProcessing" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox" index="4" instance=ExtResource("12_4017l")] +[node name="PostProcessing" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox" index="4" instance=ExtResource("12_4017l")] unique_name_in_owner = true layout_mode = 2 selected = 0 @@ -479,15 +482,15 @@ popup/item_4/id = 4 popup/item_5/text = "Lowres 512x512" popup/item_5/id = 5 -[node name="GuidesLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox" index="5"] +[node name="GuidesLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox" index="5"] layout_mode = 2 theme_type_variation = &"MM_PanelMenuSubPanelLabel" text = "Guides" -[node name="BoxContainer" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox" index="6"] +[node name="BoxContainer" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox" index="6"] layout_mode = 2 -[node name="Guides" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox/BoxContainer" index="0" instance=ExtResource("12_4017l")] +[node name="Guides" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox/BoxContainer" index="0" instance=ExtResource("12_4017l")] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -502,7 +505,7 @@ popup/item_2/id = 2 popup/item_3/text = "Grid" popup/item_3/id = 3 -[node name="CustomGridSize" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox/BoxContainer" index="1" instance=ExtResource("14_qr76f")] +[node name="CustomGridSize" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox/BoxContainer" index="1" instance=ExtResource("14_qr76f")] unique_name_in_owner = true layout_mode = 2 value = 10.0 @@ -511,12 +514,12 @@ max_value = 32.0 step = 1.0 float_only = true -[node name="GuidesColor" type="ColorPickerButton" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox/BoxContainer" index="2"] +[node name="GuidesColor" type="ColorPickerButton" parent="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox/BoxContainer" index="2"] unique_name_in_owner = true custom_minimum_size = Vector2(32, 0) layout_mode = 2 -[node name="ExportMenu" type="Button" parent="MenuBar/HBox/MainMenu/HBox" index="1" node_paths=PackedStringArray("shortcut_context")] +[node name="ExportMenu" type="Button" parent="MenuBar/HBox/MainMenu/HBox" index="2" node_paths=PackedStringArray("shortcut_context")] unique_name_in_owner = true custom_minimum_size = Vector2(40, 25) layout_mode = 2 @@ -534,46 +537,54 @@ custom_minimum_size = Vector2(320, 0) layout_mode = 0 offset_left = 491.0 offset_top = 189.0 -offset_right = 817.0 -offset_bottom = 594.0 +offset_right = 896.0 +offset_bottom = 380.0 theme_type_variation = &"MM_PanelMenuSubPanel" script = ExtResource("16_0fl4g") -[node name="VBox" type="VBoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" index="0"] +[node name="VBox" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" index="0"] layout_mode = 2 -theme_override_constants/separation = 2 +vertical = true + +[node name="Grid" type="GridContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="0"] +layout_mode = 2 +columns = 2 -[node name="ExportFolderLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="0"] +[node name="ExportFolderLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid" index="0"] layout_mode = 2 theme_type_variation = &"MM_PanelMenuSubPanelLabel" -text = "Export Folder" +text = "Folder" -[node name="ExportFolder" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="1"] +[node name="ExportFolder" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid" index="1"] layout_mode = 2 theme_override_constants/separation = 2 -[node name="ExportFolder" type="LineEdit" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/ExportFolder" index="0"] +[node name="ExportFolder" type="LineEdit" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFolder" index="0"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 theme_override_font_sizes/font_size = 15 -[node name="ExportFolderButton" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/ExportFolder" index="1"] +[node name="ExportFolderButton" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFolder" index="1"] unique_name_in_owner = true custom_minimum_size = Vector2(25, 25) layout_mode = 2 icon_alignment = 1 -[node name="ExportFileLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="2"] +[node name="ExportFileLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid" index="2"] layout_mode = 2 theme_type_variation = &"MM_PanelMenuSubPanelLabel" text = "File Name" -[node name="ExportFile" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="3"] +[node name="ExportFile" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid" index="3"] layout_mode = 2 theme_override_constants/separation = 2 +vertical = true -[node name="ExportFile" type="LineEdit" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/ExportFile" index="0"] +[node name="BoxContainer" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFile" index="0"] +layout_mode = 2 + +[node name="ExportFile" type="LineEdit" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFile/BoxContainer" index="0"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -583,7 +594,7 @@ You can use $project, $node and $idx to make the file-name auto-adjust." theme_override_font_sizes/font_size = 15 text = "$project_$node" -[node name="FileType" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/ExportFile" index="1" instance=ExtResource("12_4017l")] +[node name="FileType" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFile/BoxContainer" index="1" instance=ExtResource("12_4017l")] unique_name_in_owner = true layout_mode = 2 selected = 0 @@ -593,20 +604,25 @@ popup/item_0/id = 0 popup/item_1/text = ".exr" popup/item_1/id = 1 -[node name="ExportFileResultLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="4"] +[node name="ExportFileResultLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFile" index="1"] unique_name_in_owner = true layout_mode = 2 theme_type_variation = &"MM_PanelMenuSubPanelLabel" theme_override_fonts/font = SubResource("FontVariation_wkuuo") -[node name="ResolutionLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="5"] +[node name="ResolutionLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid" index="4"] layout_mode = 2 theme_type_variation = &"MM_PanelMenuSubPanelLabel" text = "Resolution" -[node name="Resolution" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="6" instance=ExtResource("12_4017l")] +[node name="ResolutionSection" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid" index="5"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Resolution" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ResolutionSection" index="0" instance=ExtResource("12_4017l")] unique_name_in_owner = true layout_mode = 2 +size_flags_horizontal = 3 selected = 4 item_count = 9 popup/item_0/text = "64x64" @@ -621,24 +637,34 @@ popup/item_4/text = "1024x1024" popup/item_4/id = 4 popup/item_5/text = "2048x2048" popup/item_5/id = 5 -popup/item_6/text = "4048x2048" +popup/item_6/text = "4096x4096" popup/item_6/id = 6 popup/item_7/text = "8192x8192" popup/item_7/id = 7 -popup/item_8/text = "Custom Resolution" +popup/item_8/text = "Custom" popup/item_8/id = 8 -[node name="CustomResolutionSection" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="7"] +[node name="CustomResolutionSection" type="BoxContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ResolutionSection" index="1"] unique_name_in_owner = true layout_mode = 2 -vertical = true +size_flags_horizontal = 3 -[node name="CustomResolutionLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/CustomResolutionSection" index="0"] +[node name="CustomResolutionX" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ResolutionSection/CustomResolutionSection" index="0" instance=ExtResource("14_qr76f")] +unique_name_in_owner = true layout_mode = 2 -theme_type_variation = &"MM_PanelMenuSubPanelLabel" -text = "Custom Resolution" +size_flags_horizontal = 3 +tooltip_text = "Width" +value = 512.0 +min_value = 16.0 +max_value = 2048.0 +step = 1.0 +float_only = true + +[node name="x" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ResolutionSection/CustomResolutionSection" index="1"] +layout_mode = 2 +text = "x" -[node name="CustomResolution" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/CustomResolutionSection" index="1" instance=ExtResource("14_qr76f")] +[node name="CustomResolutionY" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ResolutionSection/CustomResolutionSection" index="2" instance=ExtResource("14_qr76f")] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -649,37 +675,42 @@ max_value = 2048.0 step = 1.0 float_only = true -[node name="ExportLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="8"] +[node name="ExportLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid" index="6"] layout_mode = 2 theme_type_variation = &"MM_PanelMenuSubPanelLabel" text = "Export" -[node name="Image" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="9"] +[node name="BoxContainer" type="GridContainer" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid" index="7"] +layout_mode = 2 +size_flags_horizontal = 3 +columns = 2 + +[node name="Image" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/BoxContainer" index="0"] unique_name_in_owner = true layout_mode = 2 +size_flags_horizontal = 3 shortcut = SubResource("Shortcut_llf02") -text = "Export as Image" -alignment = 0 +text = "Image" -[node name="Animation" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="10"] +[node name="Reference" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/BoxContainer" index="1"] unique_name_in_owner = true layout_mode = 2 -text = "Export as Animation" -alignment = 0 +size_flags_horizontal = 3 +text = "To Reference" -[node name="TAA_Render" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="11"] +[node name="Animation" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/BoxContainer" index="2"] unique_name_in_owner = true layout_mode = 2 -text = "Export as TAA Render" -alignment = 0 +size_flags_horizontal = 3 +text = "Animation" -[node name="Reference" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="12"] +[node name="TAA_Render" type="Button" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/BoxContainer" index="3"] unique_name_in_owner = true layout_mode = 2 -text = "Export to Reference" -alignment = 0 +size_flags_horizontal = 3 +text = "TAA Render" -[node name="ExportNotificationLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="13"] +[node name="ExportNotificationLabel" type="Label" parent="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox" index="1"] unique_name_in_owner = true visible = false layout_mode = 2 @@ -688,7 +719,7 @@ theme_override_colors/font_color = Color(0.52, 0.52, 0.52, 1) theme_override_fonts/font = SubResource("FontVariation_wkuuo") autowrap_mode = 1 -[node name="PreviewLocked" type="Button" parent="MenuBar/HBox/MainMenu/HBox" index="2"] +[node name="PreviewLocked" type="Button" parent="MenuBar/HBox/MainMenu/HBox" index="3"] unique_name_in_owner = true custom_minimum_size = Vector2(25, 25) layout_mode = 2 @@ -699,7 +730,7 @@ script = ExtResource("17_07kc5") icon_normal_name = "lock_unlocked" icon_pressed_name = "lock_locked" -[node name="ComplexParameters" type="OptionButton" parent="MenuBar/HBox/MainMenu/HBox" index="3"] +[node name="ComplexParameters" type="OptionButton" parent="MenuBar/HBox/MainMenu/HBox" index="4"] unique_name_in_owner = true visible = false layout_mode = 2 @@ -710,20 +741,20 @@ layout_mode = 2 [connection signal="unhandled_event" from="SplinesEditor" to="." method="_on_gui_input"] [connection signal="unhandled_event" from="PixelsEditor" to="." method="_on_gui_input"] [connection signal="unhandled_event" from="LatticeEditor" to="." method="_on_gui_input"] -[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/ResetViewButton" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_reset_view_button_pressed"] -[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox/ViewMode" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_view_mode_item_selected"] -[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox/PostProcessing" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_post_processing_item_selected"] -[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox/BoxContainer/Guides" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_guides_item_selected"] -[connection signal="value_changed" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox/BoxContainer/CustomGridSize" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_custom_grid_size_value_changed"] -[connection signal="color_changed" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBoxContainer/VBox/BoxContainer/GuidesColor" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_guides_color_color_changed"] -[connection signal="text_changed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/ExportFolder/ExportFolder" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_export_folder_text_changed"] -[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/ExportFolder/ExportFolderButton" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_export_folder_button_pressed"] -[connection signal="text_changed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/ExportFile/ExportFile" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_export_file_text_changed"] -[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/ExportFile/FileType" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_file_type_item_selected"] -[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Resolution" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_resolution_item_selected"] -[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Image" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_image_pressed"] -[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Animation" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_animation_pressed"] -[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/TAA_Render" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_taa_render_pressed"] -[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Reference" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_reference_pressed"] +[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ResetViewButton" to="." method="reset_view"] +[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox/ViewMode" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_view_mode_item_selected"] +[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox/PostProcessing" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_post_processing_item_selected"] +[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox/BoxContainer/Guides" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_guides_item_selected"] +[connection signal="value_changed" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox/BoxContainer/CustomGridSize" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_custom_grid_size_value_changed"] +[connection signal="color_changed" from="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel/VBox/BoxContainer/GuidesColor" to="MenuBar/HBox/MainMenu/HBox/ViewMenu/ViewMenuPanel" method="_on_guides_color_color_changed"] +[connection signal="text_changed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFolder/ExportFolder" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_export_folder_text_changed"] +[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFolder/ExportFolderButton" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_export_folder_button_pressed"] +[connection signal="text_changed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFile/BoxContainer/ExportFile" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_export_file_text_changed"] +[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ExportFile/BoxContainer/FileType" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_file_type_item_selected"] +[connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/ResolutionSection/Resolution" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_resolution_item_selected"] +[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/BoxContainer/Image" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_image_pressed"] +[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/BoxContainer/Reference" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_reference_pressed"] +[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/BoxContainer/Animation" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_animation_pressed"] +[connection signal="pressed" from="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel/VBox/Grid/BoxContainer/TAA_Render" to="MenuBar/HBox/MainMenu/HBox/ExportMenu/ExportMenuPanel" method="_on_taa_render_pressed"] [connection signal="toggled" from="MenuBar/HBox/MainMenu/HBox/PreviewLocked" to="." method="_on_preview_locked_toggled"] [connection signal="item_selected" from="MenuBar/HBox/MainMenu/HBox/ComplexParameters" to="." method="_on_complex_parameters_item_selected"] diff --git a/material_maker/panels/preview_2d/simple_button.gd b/material_maker/panels/preview_2d/simple_button.gd new file mode 100644 index 000000000..5223371c4 --- /dev/null +++ b/material_maker/panels/preview_2d/simple_button.gd @@ -0,0 +1,6 @@ +extends Button + +@export var icon_name := "" + +func _ready() -> void: + icon = get_theme_icon(icon_name, "MM_Icons") diff --git a/material_maker/panels/preview_2d/simple_button.gd.uid b/material_maker/panels/preview_2d/simple_button.gd.uid new file mode 100644 index 000000000..7928a53df --- /dev/null +++ b/material_maker/panels/preview_2d/simple_button.gd.uid @@ -0,0 +1 @@ +uid://bos2fu0tsood3 diff --git a/material_maker/panels/preview_2d/view_menu.gd b/material_maker/panels/preview_2d/view_menu.gd index 5d8684527..90482c827 100644 --- a/material_maker/panels/preview_2d/view_menu.gd +++ b/material_maker/panels/preview_2d/view_menu.gd @@ -16,10 +16,6 @@ func _open() -> void: size = Vector2() -func _on_reset_view_button_pressed() -> void: - owner.reset_view() - - func _on_view_mode_item_selected(index: int) -> void: owner.view_mode = index diff --git a/material_maker/theme/classic.tres b/material_maker/theme/classic.tres index 1e8c19abe..45b4a820e 100644 --- a/material_maker/theme/classic.tres +++ b/material_maker/theme/classic.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=115 format=3 uid="uid://42cileyfwaca"] +[gd_resource type="Theme" load_steps=116 format=3 uid="uid://42cileyfwaca"] [ext_resource type="Texture2D" uid="uid://c7mq31csbj1fg" path="res://material_maker/theme/default_theme_icons.svg" id="1_7p32q"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_l05jd"] @@ -356,6 +356,10 @@ region = Rect2(64, 80, 16, 16) atlas = ExtResource("1_7p32q") region = Rect2(48, 80, 16, 16) +[sub_resource type="AtlasTexture" id="AtlasTexture_lsxnf"] +atlas = ExtResource("1_7p32q") +region = Rect2(96, 128, 16, 16) + [sub_resource type="AtlasTexture" id="AtlasTexture_ck0hb"] atlas = ExtResource("1_7p32q") region = Rect2(80, 0, 16, 16) @@ -834,6 +838,7 @@ MM_Icons/icons/lock_unlocked = SubResource("AtlasTexture_asgc8") MM_Icons/icons/model = SubResource("AtlasTexture_dsr33") MM_Icons/icons/pin_pinned = SubResource("AtlasTexture_du4od") MM_Icons/icons/pin_unpinned = SubResource("AtlasTexture_nkmvd") +MM_Icons/icons/reset_view = SubResource("AtlasTexture_lsxnf") MM_Icons/icons/select = SubResource("AtlasTexture_ck0hb") MM_Icons/icons/settings = SubResource("AtlasTexture_33srw") MM_Icons/icons/spline_link = SubResource("AtlasTexture_fs6qc") diff --git a/material_maker/theme/default.tres b/material_maker/theme/default.tres index a19fb8ee0..fc81f0e5f 100644 --- a/material_maker/theme/default.tres +++ b/material_maker/theme/default.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=117 format=3 uid="uid://b628lwfk6ig2c"] +[gd_resource type="Theme" load_steps=118 format=3 uid="uid://b628lwfk6ig2c"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_5tfb1"] [ext_resource type="Texture2D" uid="uid://c7mq31csbj1fg" path="res://material_maker/theme/default_theme_icons.svg" id="1_s43fy"] @@ -375,6 +375,10 @@ region = Rect2(64, 80, 16, 16) atlas = ExtResource("1_s43fy") region = Rect2(48, 80, 16, 16) +[sub_resource type="AtlasTexture" id="AtlasTexture_w0re2"] +atlas = ExtResource("1_s43fy") +region = Rect2(96, 128, 16, 16) + [sub_resource type="AtlasTexture" id="AtlasTexture_ck0hb"] atlas = ExtResource("1_s43fy") region = Rect2(80, 0, 16, 16) @@ -956,6 +960,7 @@ MM_Icons/icons/lock_unlocked = SubResource("AtlasTexture_asgc8") MM_Icons/icons/model = SubResource("AtlasTexture_dsr33") MM_Icons/icons/pin_pinned = SubResource("AtlasTexture_du4od") MM_Icons/icons/pin_unpinned = SubResource("AtlasTexture_nkmvd") +MM_Icons/icons/reset_view = SubResource("AtlasTexture_w0re2") MM_Icons/icons/select = SubResource("AtlasTexture_ck0hb") MM_Icons/icons/settings = SubResource("AtlasTexture_33srw") MM_Icons/icons/spline_link = SubResource("AtlasTexture_fs6qc") diff --git a/material_maker/theme/default_theme_icons.svg b/material_maker/theme/default_theme_icons.svg index 7171625b2..3aa6aa5dc 100644 --- a/material_maker/theme/default_theme_icons.svg +++ b/material_maker/theme/default_theme_icons.svg @@ -2,4082 +2,4086 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + width="128" + height="192" + viewBox="0 0 128 192" + version="1.1" + id="svg1" + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" + sodipodi:docname="default_theme_icons.svg" + inkscape:export-filename="new_theme_icons.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -