2019-12-18 16:12:44 +00:00
|
|
|
extends AcceptDialog
|
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
# Array of Preference(s)
|
|
|
|
var preferences := [
|
|
|
|
Preference.new("open_last_project", "Startup/StartupContainer/OpenLastProject", "pressed"),
|
|
|
|
Preference.new("quit_confirmation", "Startup/StartupContainer/QuitConfirmation", "pressed"),
|
|
|
|
Preference.new("shrink", "Interface/ShrinkContainer/ShrinkHSlider", "value"),
|
|
|
|
Preference.new("dim_on_popup", "Interface/DimPopup/CheckBox", "pressed"),
|
|
|
|
Preference.new("icon_color_from", "Interface/IconColorFrom/IconColorOptionButton", "selected"),
|
|
|
|
Preference.new("custom_icon_color", "Interface/IconColorFrom/IconColorButton", "color"),
|
|
|
|
Preference.new(
|
|
|
|
"tool_button_size", "Interface/ToolButtonSize/ToolButtonSizeOptionButton", "selected"
|
|
|
|
),
|
|
|
|
Preference.new(
|
2021-11-25 12:48:30 +00:00
|
|
|
"pressure_sensitivity_mode",
|
|
|
|
"Startup/PressureSentivity/PressureSensitivityOptionButton",
|
2022-02-17 23:03:08 +00:00
|
|
|
"selected"
|
|
|
|
),
|
|
|
|
Preference.new(
|
|
|
|
"show_left_tool_icon", "Cursors/CursorsContainer/LeftToolIconCheckbox", "pressed"
|
|
|
|
),
|
|
|
|
Preference.new(
|
|
|
|
"show_right_tool_icon", "Cursors/CursorsContainer/RightToolIconCheckbox", "pressed"
|
|
|
|
),
|
|
|
|
Preference.new(
|
|
|
|
"left_square_indicator_visible", "Cursors/CursorsContainer/LeftIndicatorCheckbox", "pressed"
|
|
|
|
),
|
|
|
|
Preference.new(
|
2021-11-25 12:48:30 +00:00
|
|
|
"right_square_indicator_visible",
|
2022-02-10 20:32:55 +00:00
|
|
|
"Cursors/CursorsContainer/RightIndicatorCheckbox",
|
2022-02-17 23:03:08 +00:00
|
|
|
"pressed"
|
|
|
|
),
|
|
|
|
Preference.new("native_cursors", "Cursors/CursorsContainer/NativeCursorsCheckbox", "pressed"),
|
|
|
|
Preference.new("cross_cursor", "Cursors/CursorsContainer/CrossCursorCheckbox", "pressed"),
|
|
|
|
Preference.new("autosave_interval", "Backup/AutosaveContainer/AutosaveInterval", "value"),
|
|
|
|
Preference.new("enable_autosave", "Backup/AutosaveContainer/EnableAutosave", "pressed"),
|
|
|
|
Preference.new("default_width", "Image/ImageOptions/ImageDefaultWidth", "value"),
|
|
|
|
Preference.new("default_height", "Image/ImageOptions/ImageDefaultHeight", "value"),
|
|
|
|
Preference.new("default_fill_color", "Image/ImageOptions/DefaultFillColor", "color"),
|
|
|
|
Preference.new("smooth_zoom", "Canvas/ZoomOptions/SmoothZoom", "pressed"),
|
|
|
|
Preference.new("grid_type", "Canvas/GridOptions/GridType", "selected"),
|
|
|
|
Preference.new("grid_width", "Canvas/GridOptions/GridWidthValue", "value"),
|
|
|
|
Preference.new("grid_height", "Canvas/GridOptions/GridHeightValue", "value"),
|
|
|
|
Preference.new(
|
2021-11-25 12:48:30 +00:00
|
|
|
"grid_isometric_cell_bounds_width",
|
|
|
|
"Canvas/GridOptions/IsometricCellBoundsWidthValue",
|
2022-02-17 23:03:08 +00:00
|
|
|
"value"
|
|
|
|
),
|
|
|
|
Preference.new(
|
2021-11-25 12:48:30 +00:00
|
|
|
"grid_isometric_cell_bounds_height",
|
|
|
|
"Canvas/GridOptions/IsometricCellBoundsHeightValue",
|
2022-02-17 23:03:08 +00:00
|
|
|
"value"
|
|
|
|
),
|
|
|
|
Preference.new("grid_offset_x", "Canvas/GridOptions/GridOffsetXValue", "value"),
|
|
|
|
Preference.new("grid_offset_y", "Canvas/GridOptions/GridOffsetYValue", "value"),
|
|
|
|
Preference.new(
|
|
|
|
"grid_draw_over_tile_mode", "Canvas/GridOptions/GridDrawOverTileMode", "pressed"
|
|
|
|
),
|
|
|
|
Preference.new("grid_color", "Canvas/GridOptions/GridColor", "color"),
|
|
|
|
Preference.new("pixel_grid_show_at_zoom", "Canvas/PixelGridOptions/ShowAtZoom", "value"),
|
|
|
|
Preference.new("pixel_grid_color", "Canvas/PixelGridOptions/GridColor", "color"),
|
|
|
|
Preference.new("guide_color", "Canvas/GuideOptions/GuideColor", "color"),
|
|
|
|
Preference.new("checker_size", "Canvas/CheckerOptions/CheckerSizeValue", "value"),
|
|
|
|
Preference.new("checker_color_1", "Canvas/CheckerOptions/CheckerColor1", "color"),
|
|
|
|
Preference.new("checker_color_2", "Canvas/CheckerOptions/CheckerColor2", "color"),
|
|
|
|
Preference.new(
|
|
|
|
"checker_follow_movement", "Canvas/CheckerOptions/CheckerFollowMovement", "pressed"
|
|
|
|
),
|
|
|
|
Preference.new("checker_follow_scale", "Canvas/CheckerOptions/CheckerFollowScale", "pressed"),
|
|
|
|
Preference.new("tilemode_opacity", "Canvas/CheckerOptions/TileModeOpacity", "value"),
|
|
|
|
Preference.new("selection_animated_borders", "Selection/SelectionOptions/Animate", "pressed"),
|
|
|
|
Preference.new("selection_border_color_1", "Selection/SelectionOptions/BorderColor1", "color"),
|
|
|
|
Preference.new("selection_border_color_2", "Selection/SelectionOptions/BorderColor2", "color"),
|
|
|
|
Preference.new("fps_limit", "Performance/PerformanceContainer/SetFPSLimit", "value"),
|
|
|
|
Preference.new(
|
|
|
|
"pause_when_unfocused", "Performance/PerformanceContainer/PauseAppFocus", "pressed"
|
|
|
|
),
|
2020-05-31 20:04:59 +00:00
|
|
|
]
|
2020-05-01 17:47:10 +00:00
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
var content_list := []
|
2020-06-25 19:27:08 +00:00
|
|
|
var selected_item := 0
|
2021-11-25 12:48:30 +00:00
|
|
|
var restore_default_button_tcsn = preload("res://src/Preferences/RestoreDefaultButton.tscn")
|
2020-06-25 19:27:08 +00:00
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
onready var list: ItemList = $HSplitContainer/List
|
|
|
|
onready var right_side: VBoxContainer = $HSplitContainer/ScrollContainer/VBoxContainer
|
2022-02-17 23:03:08 +00:00
|
|
|
onready var autosave_container: Container = right_side.get_node("Backup/AutosaveContainer")
|
|
|
|
onready var autosave_interval: SpinBox = autosave_container.get_node("AutosaveInterval")
|
2021-11-25 12:48:30 +00:00
|
|
|
onready var shrink_label: Label = right_side.get_node("Interface/ShrinkContainer/ShrinkLabel")
|
|
|
|
onready var themes: BoxContainer = right_side.get_node("Interface/Themes")
|
Implement a basic extension system
Importing .pck or .zip Godot resource pack files into Pixelorama is now possible. This needs to be documented properly, but here's the basic idea, for now at least. This is super early work and I haven't tested it with a proper extension yet, so all of this could be a subject of change. I tested it with a custom theme extension though and it seems to be working perfectly.
Importing resource pack files, either by dragging and dropping them into the app window or by going to Edit>Preferences>Extensions>Add Extension, copies the files into user://extensions/. Extensions can be enabled/disabled and uninstalled. Uninstalling them deletes the resource pack files from user://extensions/.
The extension project source files need to be in a folder inside src/Extensions/ with the same name as the .pck or .zip file. **This is required for now, otherwise it will not work.** Inside that folder there also needs to be an extension.json file, with a structure similar to this:
{
"name": "ExtensionName",
"display_name": "Extension Name",
"description": "A Pixelorama extension",
"author": "Orama Interactive",
"version": "0.1",
"license": "MIT",
"nodes": [
"ExtensionExample.tscn"
]
}
The `nodes` array leads to the packed scene files with the nodes that are to be instantiated. **The root nodes of these scenes need to have the same name as the .tscn files they belong to.** The scripts of these nodes should have _enter_tree() and _exit_tree() methods to handle the extension enabling/disabling (or even uninstalling) logic. Note that .json files need to be included in the export options while exporting the extension from Godot.
Enabling an extension means that the scenes found in the extension.json's "nodes" array get instantiated, and disabling gets rid of these nodes from Pixelorama's SceneTree.
2022-02-19 01:21:08 +00:00
|
|
|
onready var extensions: BoxContainer = right_side.get_node("Extensions")
|
2020-05-31 21:44:53 +00:00
|
|
|
|
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
class Preference:
|
|
|
|
var prop_name: String
|
|
|
|
var node_path: String
|
|
|
|
var value_type: String
|
|
|
|
var default_value
|
|
|
|
|
|
|
|
func _init(_prop_name: String, _node_path: String, _value_type: String) -> void:
|
|
|
|
prop_name = _prop_name
|
|
|
|
node_path = _node_path
|
|
|
|
value_type = _value_type
|
|
|
|
default_value = Global.get(prop_name)
|
|
|
|
|
|
|
|
|
2019-12-20 14:36:23 +00:00
|
|
|
func _ready() -> void:
|
2021-11-25 12:48:30 +00:00
|
|
|
# Replace OK since preference changes are being applied immediately, not after OK confirmation
|
2020-04-30 17:33:24 +00:00
|
|
|
get_ok().text = tr("Close")
|
2022-02-17 23:03:08 +00:00
|
|
|
for child in right_side.get_children():
|
|
|
|
content_list.append(child.name)
|
2020-05-31 20:43:24 +00:00
|
|
|
|
2020-06-25 20:25:46 +00:00
|
|
|
if OS.get_name() == "HTML5":
|
2022-02-17 23:03:08 +00:00
|
|
|
content_list.erase("Startup")
|
2020-07-28 22:54:15 +00:00
|
|
|
right_side.get_node("Startup").queue_free()
|
2022-02-17 23:03:08 +00:00
|
|
|
right_side.get_node("Language").visible = true
|
2020-06-25 20:25:46 +00:00
|
|
|
Global.open_last_project = false
|
|
|
|
|
2020-05-31 20:04:59 +00:00
|
|
|
for pref in preferences:
|
2022-02-17 23:03:08 +00:00
|
|
|
var node: Node = right_side.get_node(pref.node_path)
|
|
|
|
var node_position := node.get_index()
|
2020-07-29 00:16:02 +00:00
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
var restore_default_button: BaseButton = restore_default_button_tcsn.instance()
|
2022-02-17 23:03:08 +00:00
|
|
|
restore_default_button.setting_name = pref.prop_name
|
|
|
|
restore_default_button.value_type = pref.value_type
|
|
|
|
restore_default_button.default_value = pref.default_value
|
2020-07-29 00:16:02 +00:00
|
|
|
restore_default_button.node = node
|
|
|
|
node.get_parent().add_child(restore_default_button)
|
|
|
|
node.get_parent().move_child(restore_default_button, node_position)
|
2020-05-31 20:43:24 +00:00
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
match pref.value_type:
|
2020-05-31 20:04:59 +00:00
|
|
|
"pressed":
|
2021-11-25 12:48:30 +00:00
|
|
|
node.connect(
|
|
|
|
"toggled",
|
|
|
|
self,
|
|
|
|
"_on_Preference_toggled",
|
2022-02-17 23:03:08 +00:00
|
|
|
[pref.prop_name, pref.default_value, restore_default_button]
|
2021-11-25 12:48:30 +00:00
|
|
|
)
|
2020-05-31 20:04:59 +00:00
|
|
|
"value":
|
2021-11-25 12:48:30 +00:00
|
|
|
node.connect(
|
|
|
|
"value_changed",
|
|
|
|
self,
|
|
|
|
"_on_Preference_value_changed",
|
2022-02-17 23:03:08 +00:00
|
|
|
[pref.prop_name, pref.default_value, restore_default_button]
|
2021-11-25 12:48:30 +00:00
|
|
|
)
|
2020-05-31 20:04:59 +00:00
|
|
|
"color":
|
|
|
|
node.get_picker().presets_visible = false
|
2021-11-25 12:48:30 +00:00
|
|
|
node.connect(
|
|
|
|
"color_changed",
|
|
|
|
self,
|
|
|
|
"_on_Preference_color_changed",
|
2022-02-17 23:03:08 +00:00
|
|
|
[pref.prop_name, pref.default_value, restore_default_button]
|
2021-11-25 12:48:30 +00:00
|
|
|
)
|
2020-05-31 20:04:59 +00:00
|
|
|
"selected":
|
2021-11-25 12:48:30 +00:00
|
|
|
node.connect(
|
|
|
|
"item_selected",
|
|
|
|
self,
|
|
|
|
"_on_Preference_item_selected",
|
2022-02-17 23:03:08 +00:00
|
|
|
[pref.prop_name, pref.default_value, restore_default_button]
|
2021-11-25 12:48:30 +00:00
|
|
|
)
|
2020-05-31 20:04:59 +00:00
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
if Global.config_cache.has_section_key("preferences", pref.prop_name):
|
|
|
|
var value = Global.config_cache.get_value("preferences", pref.prop_name)
|
|
|
|
Global.set(pref.prop_name, value)
|
|
|
|
node.set(pref.value_type, value)
|
2020-04-11 02:36:51 +00:00
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
var global_value = Global.get(pref.prop_name)
|
2020-07-29 00:16:02 +00:00
|
|
|
# This is needed because color_changed doesn't fire if the color changes in code
|
2022-02-17 23:03:08 +00:00
|
|
|
if pref.value_type == "color":
|
|
|
|
preference_update(pref.prop_name)
|
2021-11-25 12:48:30 +00:00
|
|
|
disable_restore_default_button(
|
2022-02-17 23:03:08 +00:00
|
|
|
restore_default_button, global_value.is_equal_approx(pref.default_value)
|
2021-11-25 12:48:30 +00:00
|
|
|
)
|
2022-02-17 23:03:08 +00:00
|
|
|
elif pref.value_type == "selected":
|
|
|
|
preference_update(pref.prop_name)
|
2021-11-25 12:48:30 +00:00
|
|
|
disable_restore_default_button(
|
2022-02-17 23:03:08 +00:00
|
|
|
restore_default_button, global_value == pref.default_value
|
2021-11-25 12:48:30 +00:00
|
|
|
)
|
2020-07-29 00:16:02 +00:00
|
|
|
|
2020-02-11 17:45:36 +00:00
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_Preference_toggled(
|
|
|
|
button_pressed: bool, prop: String, default_value, restore_default_button: BaseButton
|
|
|
|
) -> void:
|
2020-05-31 20:04:59 +00:00
|
|
|
Global.set(prop, button_pressed)
|
|
|
|
Global.config_cache.set_value("preferences", prop, button_pressed)
|
|
|
|
preference_update(prop)
|
2020-07-29 00:16:02 +00:00
|
|
|
disable_restore_default_button(restore_default_button, Global.get(prop) == default_value)
|
2020-04-30 17:33:24 +00:00
|
|
|
|
2020-01-09 22:12:36 +00:00
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_Preference_value_changed(
|
|
|
|
value: float, prop: String, default_value, restore_default_button: BaseButton
|
|
|
|
) -> void:
|
2020-05-31 20:04:59 +00:00
|
|
|
Global.set(prop, value)
|
|
|
|
Global.config_cache.set_value("preferences", prop, value)
|
|
|
|
preference_update(prop)
|
2020-07-29 00:16:02 +00:00
|
|
|
disable_restore_default_button(restore_default_button, Global.get(prop) == default_value)
|
2020-01-09 22:12:36 +00:00
|
|
|
|
2020-04-18 07:03:18 +00:00
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_Preference_color_changed(
|
|
|
|
color: Color, prop: String, default_value, restore_default_button: BaseButton
|
|
|
|
) -> void:
|
2020-05-31 20:04:59 +00:00
|
|
|
Global.set(prop, color)
|
|
|
|
Global.config_cache.set_value("preferences", prop, color)
|
|
|
|
preference_update(prop)
|
2021-11-25 12:48:30 +00:00
|
|
|
disable_restore_default_button(
|
|
|
|
restore_default_button, Global.get(prop).is_equal_approx(default_value)
|
|
|
|
)
|
2020-04-18 07:03:18 +00:00
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_Preference_item_selected(
|
|
|
|
id: int, prop: String, default_value, restore_default_button: BaseButton
|
|
|
|
) -> void:
|
2020-05-31 20:04:59 +00:00
|
|
|
Global.set(prop, id)
|
|
|
|
Global.config_cache.set_value("preferences", prop, id)
|
|
|
|
preference_update(prop)
|
2020-07-29 00:16:02 +00:00
|
|
|
disable_restore_default_button(restore_default_button, Global.get(prop) == default_value)
|
2020-04-20 16:12:22 +00:00
|
|
|
|
2020-05-31 20:04:59 +00:00
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func preference_update(prop: String) -> void:
|
2020-05-31 20:04:59 +00:00
|
|
|
if prop in ["autosave_interval", "enable_autosave"]:
|
|
|
|
OpenSave.update_autosave()
|
2020-07-28 22:54:15 +00:00
|
|
|
autosave_interval.editable = Global.enable_autosave
|
|
|
|
if autosave_interval.editable:
|
|
|
|
autosave_interval.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
|
|
|
|
else:
|
|
|
|
autosave_interval.mouse_default_cursor_shape = Control.CURSOR_FORBIDDEN
|
2020-05-31 20:43:24 +00:00
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
if "grid" in prop:
|
2020-08-17 19:54:33 +00:00
|
|
|
Global.canvas.grid.update()
|
2020-05-31 20:43:24 +00:00
|
|
|
|
2021-01-16 18:24:46 +00:00
|
|
|
if prop in ["pixel_grid_show_at_zoom", "pixel_grid_color"]:
|
|
|
|
Global.canvas.pixel_grid.update()
|
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
if "checker" in prop:
|
2021-11-25 12:48:30 +00:00
|
|
|
Global.transparent_checker.update_rect()
|
2020-05-31 20:43:24 +00:00
|
|
|
|
2020-05-31 20:04:59 +00:00
|
|
|
if prop in ["guide_color"]:
|
2020-06-02 23:14:24 +00:00
|
|
|
for guide in Global.canvas.get_children():
|
2021-11-16 23:48:21 +00:00
|
|
|
if guide is SymmetryGuide:
|
|
|
|
# Add a subtle difference to the normal guide color by mixing in some blue
|
2022-02-17 23:03:08 +00:00
|
|
|
guide.default_color = Global.guide_color.linear_interpolate(Color(.2, .2, .65), .6)
|
2021-11-16 23:48:21 +00:00
|
|
|
elif guide is Guide:
|
2020-06-02 23:14:24 +00:00
|
|
|
guide.default_color = Global.guide_color
|
2020-05-31 20:43:24 +00:00
|
|
|
|
2021-01-05 18:01:50 +00:00
|
|
|
if prop in ["fps_limit"]:
|
|
|
|
Engine.set_target_fps(Global.fps_limit)
|
2021-10-02 12:08:58 +00:00
|
|
|
|
2022-02-17 23:03:08 +00:00
|
|
|
if "selection" in prop:
|
|
|
|
var marching_ants: Sprite = Global.canvas.selection.marching_ants_outline
|
|
|
|
marching_ants.material.set_shader_param("animated", Global.selection_animated_borders)
|
|
|
|
marching_ants.material.set_shader_param("first_color", Global.selection_border_color_1)
|
|
|
|
marching_ants.material.set_shader_param("second_color", Global.selection_border_color_2)
|
2021-05-28 00:46:16 +00:00
|
|
|
Global.canvas.selection.update()
|
|
|
|
|
2021-06-04 18:44:05 +00:00
|
|
|
if prop in ["icon_color_from", "custom_icon_color"]:
|
|
|
|
if Global.icon_color_from == Global.IconColorFrom.THEME:
|
2022-02-17 18:36:10 +00:00
|
|
|
var current_theme: Theme = themes.themes[themes.theme_index]
|
|
|
|
Global.modulate_icon_color = current_theme.get_color("modulate_color", "Icons")
|
2021-06-04 18:44:05 +00:00
|
|
|
else:
|
|
|
|
Global.modulate_icon_color = Global.custom_icon_color
|
|
|
|
themes.change_icon_colors()
|
|
|
|
|
2021-06-13 23:14:31 +00:00
|
|
|
if prop == "tool_button_size":
|
|
|
|
Tools.set_button_size(Global.tool_button_size)
|
|
|
|
|
2022-02-10 20:32:55 +00:00
|
|
|
if prop == "native_cursors":
|
|
|
|
var image
|
|
|
|
if Global.native_cursors:
|
|
|
|
image = null
|
|
|
|
else:
|
|
|
|
image = Global.control.cursor_image
|
|
|
|
Input.set_custom_mouse_cursor(image, Input.CURSOR_CROSS, Vector2(15, 15))
|
|
|
|
|
|
|
|
if prop == "cross_cursor":
|
|
|
|
if Global.cross_cursor:
|
|
|
|
Global.main_viewport.mouse_default_cursor_shape = Control.CURSOR_CROSS
|
|
|
|
else:
|
|
|
|
Global.main_viewport.mouse_default_cursor_shape = Control.CURSOR_ARROW
|
|
|
|
|
2020-05-31 20:04:59 +00:00
|
|
|
Global.config_cache.save("user://cache.ini")
|
2020-02-15 05:34:42 +00:00
|
|
|
|
2020-04-07 22:56:05 +00:00
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func disable_restore_default_button(button: BaseButton, disable: bool) -> void:
|
2020-07-29 00:16:02 +00:00
|
|
|
button.disabled = disable
|
|
|
|
if disable:
|
|
|
|
button.mouse_default_cursor_shape = Control.CURSOR_ARROW
|
|
|
|
button.hint_tooltip = ""
|
|
|
|
else:
|
|
|
|
button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
|
|
|
|
button.hint_tooltip = "Restore default value"
|
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_PreferencesDialog_about_to_show() -> void:
|
|
|
|
add_tabs(false)
|
|
|
|
|
|
|
|
|
|
|
|
func add_tabs(changed_language := false) -> void:
|
2022-02-17 23:03:08 +00:00
|
|
|
for item in content_list:
|
|
|
|
list.add_item(" " + tr(item))
|
|
|
|
|
|
|
|
var language_index := content_list.find("Language")
|
|
|
|
list.select(language_index if changed_language else selected_item)
|
2020-07-28 22:54:15 +00:00
|
|
|
autosave_interval.suffix = tr("minute(s)")
|
2020-05-05 13:03:32 +00:00
|
|
|
|
2019-12-27 00:12:26 +00:00
|
|
|
|
2019-12-31 23:27:34 +00:00
|
|
|
func _on_PreferencesDialog_popup_hide() -> void:
|
2020-05-31 20:04:59 +00:00
|
|
|
list.clear()
|
2019-12-20 14:36:23 +00:00
|
|
|
|
2020-04-07 22:56:05 +00:00
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_List_item_selected(index: int) -> void:
|
2020-06-25 19:27:08 +00:00
|
|
|
selected_item = index
|
2019-12-26 23:02:36 +00:00
|
|
|
for child in right_side.get_children():
|
2020-07-28 22:54:15 +00:00
|
|
|
child.visible = child.name == content_list[index]
|
2020-11-07 01:57:35 +00:00
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_ShrinkHSlider_value_changed(value: float) -> void:
|
2020-11-07 01:57:35 +00:00
|
|
|
shrink_label.text = str(value)
|
|
|
|
|
|
|
|
|
2020-11-09 23:32:27 +00:00
|
|
|
func _on_ShrinkApplyButton_pressed() -> void:
|
2021-11-25 12:48:30 +00:00
|
|
|
get_tree().set_screen_stretch(
|
|
|
|
SceneTree.STRETCH_MODE_DISABLED,
|
|
|
|
SceneTree.STRETCH_ASPECT_IGNORE,
|
|
|
|
Vector2(1024, 576),
|
|
|
|
Global.shrink
|
|
|
|
)
|
2020-11-09 23:32:27 +00:00
|
|
|
hide()
|
|
|
|
popup_centered(Vector2(400, 280))
|
|
|
|
Global.dialog_open(true)
|
|
|
|
yield(Global.get_tree().create_timer(0.01), "timeout")
|
|
|
|
Global.camera.fit_to_frame(Global.current_project.size)
|