mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-18 17:19:50 +00:00
Choose which layout to copy from when adding a new layout
This commit is contained in:
parent
534a7fd356
commit
5824d2a0eb
|
@ -289,7 +289,13 @@ msgstr ""
|
|||
msgid "Add Layout"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit Layout"
|
||||
msgid "Copy from"
|
||||
msgstr ""
|
||||
|
||||
msgid "Rename"
|
||||
msgstr ""
|
||||
|
||||
msgid "Rename Layout"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure you want to delete this layout?"
|
||||
|
|
|
@ -3,13 +3,20 @@ extends AcceptDialog
|
|||
var layout_selected := -1
|
||||
var is_editing := false
|
||||
|
||||
@onready var layout_list: ItemList = find_child("SavedLayouts")
|
||||
@onready var edit_layout: Button = find_child("EditLayout")
|
||||
@onready var delete_layout: Button = find_child("DeleteLayout")
|
||||
@onready var layout_settings: ConfirmationDialog = $LayoutSettings
|
||||
@onready var layout_name: LineEdit = $LayoutSettings/LayoutName
|
||||
@onready var delete_confirmation: ConfirmationDialog = $DeleteConfirmation
|
||||
@onready var mimic_ui = find_child("LayoutPreview")
|
||||
@onready var layout_list := %SavedLayouts as ItemList
|
||||
@onready var rename_layout := %RenameLayout as Button
|
||||
@onready var delete_layout := %DeleteLayout as Button
|
||||
@onready var layout_settings := $LayoutSettings as ConfirmationDialog
|
||||
@onready var layout_name := %LayoutName as LineEdit
|
||||
@onready var layout_from := %LayoutFrom as OptionButton
|
||||
@onready var delete_confirmation := $DeleteConfirmation as ConfirmationDialog
|
||||
@onready var mimic_ui := %LayoutPreview as DockableContainer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
# Fill the copy layout from option button with the default layouts
|
||||
for layout in Global.default_layouts:
|
||||
layout_from.add_item(layout.resource_path.get_basename().get_file())
|
||||
|
||||
|
||||
func _on_ManageLayouts_about_to_show() -> void:
|
||||
|
@ -33,13 +40,13 @@ func _on_SavedLayouts_item_activated(index: int) -> void:
|
|||
|
||||
func _on_SavedLayouts_item_selected(index: int) -> void:
|
||||
layout_selected = index
|
||||
edit_layout.disabled = false
|
||||
rename_layout.disabled = false
|
||||
delete_layout.disabled = false
|
||||
refresh_preview()
|
||||
|
||||
|
||||
func _on_SavedLayouts_empty_clicked(_position: Vector2, _button_index: int) -> void:
|
||||
edit_layout.disabled = true
|
||||
rename_layout.disabled = true
|
||||
delete_layout.disabled = true
|
||||
|
||||
|
||||
|
@ -47,13 +54,15 @@ func _on_AddLayout_pressed() -> void:
|
|||
is_editing = false
|
||||
layout_name.text = "New Layout"
|
||||
layout_settings.title = "Add Layout"
|
||||
layout_from.get_parent().visible = true
|
||||
layout_settings.popup_centered()
|
||||
|
||||
|
||||
func _on_EditLayout_pressed() -> void:
|
||||
func _on_rename_layout_pressed() -> void:
|
||||
is_editing = true
|
||||
layout_name.text = layout_list.get_item_text(layout_selected)
|
||||
layout_settings.title = "Edit Layout"
|
||||
layout_settings.title = "Rename Layout"
|
||||
layout_from.get_parent().visible = false
|
||||
layout_settings.popup_centered()
|
||||
|
||||
|
||||
|
@ -64,31 +73,35 @@ func _on_DeleteLayout_pressed() -> void:
|
|||
func _on_LayoutSettings_confirmed() -> void:
|
||||
var file_name := layout_name.text + ".tres"
|
||||
var path := Global.LAYOUT_DIR.path_join(file_name)
|
||||
var layout: DockableLayout = Global.control.main_ui.layout.clone()
|
||||
var layout: DockableLayout
|
||||
if layout_from.selected == 0:
|
||||
layout = Global.control.main_ui.layout.clone()
|
||||
else:
|
||||
layout = Global.default_layouts[layout_from.selected - 1].clone()
|
||||
layout.resource_name = layout_name.text
|
||||
layout.resource_path = path
|
||||
var err := ResourceSaver.save(layout, path)
|
||||
if err != OK:
|
||||
print(err)
|
||||
return
|
||||
if is_editing:
|
||||
var old_file_name: String = layout_list.get_item_text(layout_selected) + ".tres"
|
||||
if old_file_name != file_name:
|
||||
delete_layout_file(old_file_name)
|
||||
Global.layouts[layout_selected] = layout
|
||||
layout_list.set_item_text(layout_selected, layout_name.text)
|
||||
Global.top_menu_container.layouts_submenu.set_item_text(
|
||||
layout_selected + 1, layout_name.text
|
||||
)
|
||||
else:
|
||||
if is_editing:
|
||||
var old_file_name: String = layout_list.get_item_text(layout_selected) + ".tres"
|
||||
if old_file_name != file_name:
|
||||
delete_layout_file(old_file_name)
|
||||
Global.layouts[layout_selected] = layout
|
||||
layout_list.set_item_text(layout_selected, layout_name.text)
|
||||
Global.top_menu_container.layouts_submenu.set_item_text(
|
||||
layout_selected + 1, layout_name.text
|
||||
)
|
||||
else:
|
||||
Global.layouts.append(layout)
|
||||
# Save the layout every time it changes
|
||||
layout.save_on_change = true
|
||||
Global.control.main_ui.layout = layout
|
||||
layout_list.add_item(layout_name.text)
|
||||
Global.top_menu_container.populate_layouts_submenu()
|
||||
var n: int = Global.top_menu_container.layouts_submenu.get_item_count()
|
||||
Global.top_menu_container.layouts_submenu.set_item_checked(n - 1, true)
|
||||
Global.layouts.append(layout)
|
||||
# Save the layout every time it changes
|
||||
layout.save_on_change = true
|
||||
Global.control.main_ui.layout = layout
|
||||
layout_list.add_item(layout_name.text)
|
||||
Global.top_menu_container.populate_layouts_submenu()
|
||||
var n: int = Global.top_menu_container.layouts_submenu.get_item_count()
|
||||
Global.top_menu_container.layouts_submenu.set_item_checked(n - 1, true)
|
||||
|
||||
|
||||
func delete_layout_file(file_name: String) -> void:
|
||||
|
@ -104,12 +117,12 @@ func _on_DeleteConfirmation_confirmed() -> void:
|
|||
layout_list.remove_item(layout_selected)
|
||||
Global.top_menu_container.populate_layouts_submenu()
|
||||
layout_selected = -1
|
||||
edit_layout.disabled = true
|
||||
rename_layout.disabled = true
|
||||
delete_layout.disabled = true
|
||||
refresh_preview()
|
||||
|
||||
|
||||
func refresh_preview():
|
||||
func refresh_preview() -> void:
|
||||
for tab in mimic_ui.get_tabs():
|
||||
mimic_ui.remove_child(tab)
|
||||
for item in Global.control.main_ui.get_tabs():
|
||||
|
|
|
@ -20,6 +20,7 @@ save_on_change = false
|
|||
|
||||
[node name="ManageLayouts" type="AcceptDialog"]
|
||||
title = "Manage Layouts"
|
||||
size = Vector2i(500, 500)
|
||||
exclusive = false
|
||||
popup_window = true
|
||||
script = ExtResource("1")
|
||||
|
@ -31,7 +32,7 @@ anchor_bottom = 1.0
|
|||
offset_left = 8.0
|
||||
offset_top = 8.0
|
||||
offset_right = -8.0
|
||||
offset_bottom = -36.0
|
||||
offset_bottom = -49.0
|
||||
|
||||
[node name="PreviewHeader" type="HBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
@ -55,6 +56,7 @@ layout_mode = 2
|
|||
size_flags_vertical = 3
|
||||
|
||||
[node name="LayoutPreview" type="Container" parent="VBoxContainer/PreviewContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
@ -80,6 +82,7 @@ layout_mode = 2
|
|||
text = "Double click to set as new startup layout"
|
||||
|
||||
[node name="SavedLayouts" type="ItemList" parent="VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 100)
|
||||
layout_mode = 2
|
||||
|
||||
|
@ -88,38 +91,53 @@ layout_mode = 2
|
|||
|
||||
[node name="AddLayout" type="Button" parent="VBoxContainer/ButtonsContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
text = "Add"
|
||||
|
||||
[node name="EditLayout" type="Button" parent="VBoxContainer/ButtonsContainer"]
|
||||
[node name="RenameLayout" type="Button" parent="VBoxContainer/ButtonsContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
disabled = true
|
||||
text = "Edit"
|
||||
text = "Rename"
|
||||
|
||||
[node name="DeleteLayout" type="Button" parent="VBoxContainer/ButtonsContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
disabled = true
|
||||
text = "Delete"
|
||||
|
||||
[node name="LayoutSettings" type="ConfirmationDialog" parent="."]
|
||||
|
||||
[node name="LayoutName" type="LineEdit" parent="LayoutSettings"]
|
||||
anchors_preset = 14
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = 8.0
|
||||
offset_top = -26.0
|
||||
offset_right = -8.0
|
||||
offset_bottom = -2.0
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="LayoutSettings"]
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="LayoutName" type="LineEdit" parent="LayoutSettings/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "Insert name"
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="LayoutSettings/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="LayoutFromLabel" type="Label" parent="LayoutSettings/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Copy from"
|
||||
|
||||
[node name="LayoutFrom" type="OptionButton" parent="LayoutSettings/VBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
item_count = 1
|
||||
selected = 0
|
||||
popup/item_0/text = "Current layout"
|
||||
popup/item_0/id = 0
|
||||
|
||||
[node name="DeleteConfirmation" type="ConfirmationDialog" parent="."]
|
||||
dialog_text = "Are you sure you want to delete this layout?"
|
||||
|
||||
|
@ -129,7 +147,7 @@ dialog_text = "Are you sure you want to delete this layout?"
|
|||
[connection signal="item_activated" from="VBoxContainer/SavedLayouts" to="." method="_on_SavedLayouts_item_activated"]
|
||||
[connection signal="item_selected" from="VBoxContainer/SavedLayouts" to="." method="_on_SavedLayouts_item_selected"]
|
||||
[connection signal="pressed" from="VBoxContainer/ButtonsContainer/AddLayout" to="." method="_on_AddLayout_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/ButtonsContainer/EditLayout" to="." method="_on_EditLayout_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/ButtonsContainer/RenameLayout" to="." method="_on_rename_layout_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/ButtonsContainer/DeleteLayout" to="." method="_on_DeleteLayout_pressed"]
|
||||
[connection signal="confirmed" from="LayoutSettings" to="." method="_on_LayoutSettings_confirmed"]
|
||||
[connection signal="confirmed" from="DeleteConfirmation" to="." method="_on_DeleteConfirmation_confirmed"]
|
||||
|
|
Loading…
Reference in a new issue