diff --git a/src/Autoload/Global.gd b/src/Autoload/Global.gd index 282be1dc0..343ef34f8 100644 --- a/src/Autoload/Global.gd +++ b/src/Autoload/Global.gd @@ -36,7 +36,7 @@ var cursor_image = preload("res://assets/graphics/cursor.png") var left_cursor_tool_texture := StreamTexture.new() var right_cursor_tool_texture := StreamTexture.new() -var image_clipboard : Image +var image_clipboard := Image.new() var play_only_tags := true var show_x_symmetry_axis := false var show_y_symmetry_axis := false @@ -143,8 +143,6 @@ onready var right_panel : Panel = control.find_node("RightPanel") onready var tabs_container : PanelContainer = control.find_node("TabsContainer") onready var recent_projects_submenu : PopupMenu = PopupMenu.new() -onready var tile_mode_submenu : PopupMenu = PopupMenu.new() -onready var panel_layout_submenu : PopupMenu = PopupMenu.new() onready var new_image_dialog : ConfirmationDialog = control.find_node("CreateNewImage") onready var open_sprites_dialog : FileDialog = control.find_node("OpenSprite") @@ -207,29 +205,10 @@ func _ready() -> void: recent_projects = config_cache.get_value("data", "recent_projects", []) panel_layout = config_cache.get_value("window", "panel_layout", PanelLayout.AUTO) - # The fact that root_dir is set earlier than this is important - # XDGDataDirs depends on it nyaa + # root_directory must be set earlier than this is because XDGDataDirs depends on it directory_module = XDGDataPaths.new() - image_clipboard = Image.new() Input.set_custom_mouse_cursor(cursor_image, Input.CURSOR_CROSS, Vector2(15, 15)) - recent_projects_submenu.set_name("recent_projects_submenu") - - tile_mode_submenu.set_name("tile_mode_submenu") - tile_mode_submenu.add_radio_check_item("None", TileMode.NONE) - tile_mode_submenu.set_item_checked(TileMode.NONE, true) - tile_mode_submenu.add_radio_check_item("Tiled In Both Axis", TileMode.BOTH) - tile_mode_submenu.add_radio_check_item("Tiled In X Axis", TileMode.X_AXIS) - tile_mode_submenu.add_radio_check_item("Tiled In Y Axis", TileMode.Y_AXIS) - tile_mode_submenu.hide_on_checkable_item_selection = false - - panel_layout_submenu.set_name("panel_layout_submenu") - panel_layout_submenu.add_radio_check_item("Auto", PanelLayout.AUTO) - panel_layout_submenu.add_radio_check_item("Widescreen", PanelLayout.WIDESCREEN) - panel_layout_submenu.add_radio_check_item("Tallscreen", PanelLayout.TALLSCREEN) - panel_layout_submenu.hide_on_checkable_item_selection = false - panel_layout_submenu.set_item_checked(panel_layout, true) - projects.append(Project.new()) projects[0].layers.append(Layer.new()) current_project = projects[0] diff --git a/src/Classes/Project.gd b/src/Classes/Project.gd index 8c40773d8..1b175f882 100644 --- a/src/Classes/Project.gd +++ b/src/Classes/Project.gd @@ -220,7 +220,7 @@ func change_project() -> void: Global.top_menu_container.file_menu.set_item_text(6, tr("Export") + " %s" % (file_name + Export.file_format_string(file_format))) for j in Global.TileMode.values(): - Global.tile_mode_submenu.set_item_checked(j, j == tile_mode) + Global.top_menu_container.tile_mode_submenu.set_item_checked(j, j == tile_mode) # Change selection effect & bounding rectangle Global.canvas.selection.marching_ants_outline.offset = selection_offset diff --git a/src/UI/TopMenuContainer.gd b/src/UI/TopMenuContainer.gd index 613c9c92d..e3c28b0f2 100644 --- a/src/UI/TopMenuContainer.gd +++ b/src/UI/TopMenuContainer.gd @@ -15,6 +15,8 @@ onready var image_menu_button : MenuButton = find_node("ImageMenu") onready var select_menu_button : MenuButton = find_node("SelectMenu") onready var help_menu_button : MenuButton = find_node("HelpMenu") onready var window_opacity_dialog : AcceptDialog = Global.control.find_node("WindowOpacityDialog") +onready var tile_mode_submenu : PopupMenu = PopupMenu.new() +onready var panel_layout_submenu : PopupMenu = PopupMenu.new() var file_menu : PopupMenu var view_menu : PopupMenu @@ -126,15 +128,30 @@ func setup_view_menu() -> void: func setup_tile_mode_submenu(item : String): - Global.tile_mode_submenu.connect("id_pressed", self, "tile_mode_submenu_id_pressed") - view_menu.add_child(Global.tile_mode_submenu) - view_menu.add_submenu_item(item, Global.tile_mode_submenu.get_name()) + tile_mode_submenu.set_name("tile_mode_submenu") + tile_mode_submenu.add_radio_check_item("None", Global.TileMode.NONE) + tile_mode_submenu.set_item_checked(Global.TileMode.NONE, true) + tile_mode_submenu.add_radio_check_item("Tiled In Both Axis", Global.TileMode.BOTH) + tile_mode_submenu.add_radio_check_item("Tiled In X Axis", Global.TileMode.X_AXIS) + tile_mode_submenu.add_radio_check_item("Tiled In Y Axis", Global.TileMode.Y_AXIS) + tile_mode_submenu.hide_on_checkable_item_selection = false + + tile_mode_submenu.connect("id_pressed", self, "tile_mode_submenu_id_pressed") + view_menu.add_child(tile_mode_submenu) + view_menu.add_submenu_item(item, tile_mode_submenu.get_name()) func setup_panel_layout_submenu(item : String): - Global.panel_layout_submenu.connect("id_pressed", self, "panel_layout_submenu_id_pressed") - view_menu.add_child(Global.panel_layout_submenu) - view_menu.add_submenu_item(item, Global.panel_layout_submenu.get_name()) + panel_layout_submenu.set_name("panel_layout_submenu") + panel_layout_submenu.add_radio_check_item("Auto", Global.PanelLayout.AUTO) + panel_layout_submenu.add_radio_check_item("Widescreen", Global.PanelLayout.WIDESCREEN) + panel_layout_submenu.add_radio_check_item("Tallscreen", Global.PanelLayout.TALLSCREEN) + panel_layout_submenu.hide_on_checkable_item_selection = false + panel_layout_submenu.set_item_checked(Global.panel_layout, true) + + panel_layout_submenu.connect("id_pressed", self, "panel_layout_submenu_id_pressed") + view_menu.add_child(panel_layout_submenu) + view_menu.add_submenu_item(item, panel_layout_submenu.get_name()) func setup_image_menu() -> void: @@ -331,7 +348,7 @@ func tile_mode_submenu_id_pressed(id : int) -> void: Global.current_project.tile_mode = id Global.transparent_checker.fit_rect(Global.current_project.get_tile_mode_rect()) for i in Global.TileMode.values(): - Global.tile_mode_submenu.set_item_checked(i, i == id) + tile_mode_submenu.set_item_checked(i, i == id) Global.canvas.tile_mode.update() Global.canvas.pixel_grid.update() Global.canvas.grid.update() @@ -340,7 +357,7 @@ func tile_mode_submenu_id_pressed(id : int) -> void: func panel_layout_submenu_id_pressed(id : int) -> void: Global.panel_layout = id for i in Global.PanelLayout.values(): - Global.panel_layout_submenu.set_item_checked(i, i == id) + panel_layout_submenu.set_item_checked(i, i == id) get_tree().get_root().get_node("Control").handle_resize()