mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-19 01:29:49 +00:00
086679f1f0
* Created feature that will alllow user to open last edited project on Pixelorama startup or open last edited project at will. Co-authored-by: Manolis Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
520 lines
22 KiB
GDScript
520 lines
22 KiB
GDScript
extends AcceptDialog
|
|
|
|
onready var tree : Tree = $HSplitContainer/Tree
|
|
onready var right_side : VBoxContainer = $HSplitContainer/ScrollContainer/VBoxContainer
|
|
onready var general = $HSplitContainer/ScrollContainer/VBoxContainer/General
|
|
onready var languages = $HSplitContainer/ScrollContainer/VBoxContainer/Languages
|
|
onready var themes = $HSplitContainer/ScrollContainer/VBoxContainer/Themes
|
|
onready var canvas = $HSplitContainer/ScrollContainer/VBoxContainer/Canvas
|
|
onready var image = $HSplitContainer/ScrollContainer/VBoxContainer/Image
|
|
onready var shortcuts = $HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts
|
|
|
|
onready var open_last_project_button = $HSplitContainer/ScrollContainer/VBoxContainer/General/OpenLastProject
|
|
onready var smooth_zoom_button = $HSplitContainer/ScrollContainer/VBoxContainer/General/SmoothZoom
|
|
onready var sensitivity_option = $HSplitContainer/ScrollContainer/VBoxContainer/General/PressureSentivity/PressureSensitivityOptionButton
|
|
onready var left_tool_icon = $HSplitContainer/ScrollContainer/VBoxContainer/General/GridContainer/LeftToolIconCheckbox
|
|
onready var right_tool_icon = $HSplitContainer/ScrollContainer/VBoxContainer/General/GridContainer/RightToolIconCheckbox
|
|
|
|
onready var default_width_value = $HSplitContainer/ScrollContainer/VBoxContainer/Image/ImageOptions/ImageDefaultWidth
|
|
onready var default_height_value = $HSplitContainer/ScrollContainer/VBoxContainer/Image/ImageOptions/ImageDefaultHeight
|
|
onready var default_fill_color = $HSplitContainer/ScrollContainer/VBoxContainer/Image/ImageOptions/DefaultFillColor
|
|
|
|
onready var grid_width_value = $HSplitContainer/ScrollContainer/VBoxContainer/Canvas/GridOptions/GridWidthValue
|
|
onready var grid_height_value = $HSplitContainer/ScrollContainer/VBoxContainer/Canvas/GridOptions/GridHeightValue
|
|
onready var grid_color = $HSplitContainer/ScrollContainer/VBoxContainer/Canvas/GridOptions/GridColor
|
|
onready var guide_color = $HSplitContainer/ScrollContainer/VBoxContainer/Canvas/GuideOptions/GuideColor
|
|
|
|
onready var checker_size_value = $HSplitContainer/ScrollContainer/VBoxContainer/Canvas/CheckerOptions/CheckerSizeValue
|
|
onready var checker_color_1 = $HSplitContainer/ScrollContainer/VBoxContainer/Canvas/CheckerOptions/CheckerColor1
|
|
onready var checker_color_2 = $HSplitContainer/ScrollContainer/VBoxContainer/Canvas/CheckerOptions/CheckerColor2
|
|
|
|
# Shortcuts
|
|
onready var theme_font_color : Color = $Popups/ShortcutSelector/EnteredShortcut.get_color("font_color")
|
|
var default_shortcuts_preset := {}
|
|
var custom_shortcuts_preset := {}
|
|
var action_being_edited := ""
|
|
var shortcut_already_assigned = false
|
|
var old_input_event : InputEventKey
|
|
var new_input_event : InputEventKey
|
|
|
|
func _ready() -> void:
|
|
# Disable input until the shortcut selector is displayed
|
|
set_process_input(false)
|
|
|
|
for child in languages.get_children():
|
|
if child is Button:
|
|
child.connect("pressed", self, "_on_Language_pressed", [child])
|
|
child.hint_tooltip = child.name
|
|
|
|
for child in themes.get_children():
|
|
if child is Button:
|
|
child.connect("pressed", self, "_on_Theme_pressed", [child])
|
|
|
|
if Global.config_cache.has_section_key("preferences", "theme"):
|
|
var theme_id = Global.config_cache.get_value("preferences", "theme")
|
|
change_theme(theme_id)
|
|
themes.get_child(theme_id).pressed = true
|
|
else:
|
|
change_theme(0)
|
|
themes.get_child(0).pressed = true
|
|
|
|
# Set default values for General options
|
|
if Global.config_cache.has_section_key("preferences", "open_last_project"):
|
|
Global.open_last_project = Global.config_cache.get_value("preferences", "open_last_project")
|
|
open_last_project_button.pressed = Global.open_last_project
|
|
if Global.config_cache.has_section_key("preferences", "smooth_zoom"):
|
|
Global.smooth_zoom = Global.config_cache.get_value("preferences", "smooth_zoom")
|
|
smooth_zoom_button.pressed = Global.smooth_zoom
|
|
if Global.config_cache.has_section_key("preferences", "pressure_sensitivity"):
|
|
Global.pressure_sensitivity_mode = Global.config_cache.get_value("preferences", "pressure_sensitivity")
|
|
sensitivity_option.selected = Global.pressure_sensitivity_mode
|
|
|
|
if Global.config_cache.has_section_key("preferences", "show_left_tool_icon"):
|
|
Global.show_left_tool_icon = Global.config_cache.get_value("preferences", "show_left_tool_icon")
|
|
left_tool_icon.pressed = Global.show_left_tool_icon
|
|
if Global.config_cache.has_section_key("preferences", "show_right_tool_icon"):
|
|
Global.show_right_tool_icon = Global.config_cache.get_value("preferences", "show_right_tool_icon")
|
|
right_tool_icon.pressed = Global.show_right_tool_icon
|
|
|
|
# Set default values for Canvas options
|
|
if Global.config_cache.has_section_key("preferences", "grid_size"):
|
|
var grid_size = Global.config_cache.get_value("preferences", "grid_size")
|
|
Global.grid_width = int(grid_size.x)
|
|
Global.grid_height = int(grid_size.y)
|
|
grid_width_value.value = grid_size.x
|
|
grid_height_value.value = grid_size.y
|
|
|
|
if Global.config_cache.has_section_key("preferences", "grid_color"):
|
|
Global.grid_color = Global.config_cache.get_value("preferences", "grid_color")
|
|
grid_color.color = Global.grid_color
|
|
|
|
if Global.config_cache.has_section_key("preferences", "checker_size"):
|
|
var checker_size = Global.config_cache.get_value("preferences", "checker_size")
|
|
Global.checker_size = int(checker_size)
|
|
checker_size_value.value = checker_size
|
|
|
|
if Global.config_cache.has_section_key("preferences", "checker_color_1"):
|
|
Global.checker_color_1 = Global.config_cache.get_value("preferences", "checker_color_1")
|
|
checker_color_1.color = Global.checker_color_1
|
|
|
|
if Global.config_cache.has_section_key("preferences", "checker_color_2"):
|
|
Global.checker_color_2 = Global.config_cache.get_value("preferences", "checker_color_2")
|
|
checker_color_2.color = Global.checker_color_2
|
|
|
|
Global.transparent_checker._ready()
|
|
|
|
if Global.config_cache.has_section_key("preferences", "guide_color"):
|
|
Global.guide_color = Global.config_cache.get_value("preferences", "guide_color")
|
|
for canvas in Global.canvases:
|
|
for guide in canvas.get_children():
|
|
if guide is Guide:
|
|
guide.default_color = Global.guide_color
|
|
guide_color.color = Global.guide_color
|
|
|
|
# Set default values for Image
|
|
if Global.config_cache.has_section_key("preferences", "default_width"):
|
|
var default_width = Global.config_cache.get_value("preferences", "default_width")
|
|
Global.default_image_width = int(default_width)
|
|
default_width_value.value = Global.default_image_width
|
|
|
|
if Global.config_cache.has_section_key("preferences", "default_height"):
|
|
var default_height = Global.config_cache.get_value("preferences", "default_height")
|
|
Global.default_image_height = int(default_height)
|
|
default_height_value.value = Global.default_image_height
|
|
|
|
if Global.config_cache.has_section_key("preferences", "default_fill_color"):
|
|
var fill_color = Global.config_cache.get_value("preferences", "default_fill_color")
|
|
Global.default_fill_color = fill_color
|
|
default_fill_color.color = Global.default_fill_color
|
|
|
|
guide_color.get_picker().presets_visible = false
|
|
grid_color.get_picker().presets_visible = false
|
|
checker_color_1.get_picker().presets_visible = false
|
|
checker_color_2.get_picker().presets_visible = false
|
|
default_fill_color.get_picker().presets_visible = false
|
|
|
|
# Get default preset for shortcuts from project input map
|
|
# Buttons in shortcuts selector should be called the same as actions
|
|
for shortcut_grid_item in shortcuts.get_node("Shortcuts").get_children():
|
|
if shortcut_grid_item is Button:
|
|
var input_events = InputMap.get_action_list(shortcut_grid_item.name)
|
|
if input_events.size() > 1:
|
|
printerr("Every shortcut action should have just one input event assigned in input map")
|
|
shortcut_grid_item.text = (input_events[0] as InputEventKey).as_text()
|
|
shortcut_grid_item.connect("pressed", self, "_on_Shortcut_button_pressed", [shortcut_grid_item])
|
|
default_shortcuts_preset[shortcut_grid_item.name] = input_events[0]
|
|
|
|
# Load custom shortcuts from the config file
|
|
custom_shortcuts_preset = default_shortcuts_preset.duplicate()
|
|
for action in default_shortcuts_preset:
|
|
var saved_input_event = Global.config_cache.get_value("shortcuts", action, 0)
|
|
if saved_input_event is InputEventKey:
|
|
custom_shortcuts_preset[action] = saved_input_event
|
|
|
|
var shortcuts_preset = Global.config_cache.get_value("shortcuts", "shortcuts_preset", 0)
|
|
shortcuts.get_node("HBoxContainer/PresetOptionButton").select(shortcuts_preset)
|
|
_on_PresetOptionButton_item_selected(shortcuts_preset)
|
|
|
|
|
|
func _input(event : InputEvent) -> void:
|
|
if event is InputEventKey:
|
|
if event.pressed:
|
|
if event.scancode == KEY_ESCAPE:
|
|
$Popups/ShortcutSelector.hide()
|
|
else:
|
|
# Check if shortcut was already used
|
|
for action in InputMap.get_actions():
|
|
for input_event in InputMap.get_action_list(action):
|
|
if input_event is InputEventKey:
|
|
if OS.get_scancode_string(input_event.get_scancode_with_modifiers()) == OS.get_scancode_string(event.get_scancode_with_modifiers()):
|
|
$Popups/ShortcutSelector/EnteredShortcut.text = tr("Already assigned")
|
|
$Popups/ShortcutSelector/EnteredShortcut.add_color_override("font_color", Color.crimson)
|
|
get_tree().set_input_as_handled()
|
|
shortcut_already_assigned = true
|
|
return
|
|
|
|
# Store new shortcut
|
|
shortcut_already_assigned = false
|
|
old_input_event = InputMap.get_action_list(action_being_edited)[0]
|
|
new_input_event = event
|
|
$Popups/ShortcutSelector/EnteredShortcut.text = OS.get_scancode_string(event.get_scancode_with_modifiers())
|
|
$Popups/ShortcutSelector/EnteredShortcut.add_color_override("font_color", theme_font_color)
|
|
get_tree().set_input_as_handled()
|
|
|
|
|
|
func _on_PreferencesDialog_about_to_show(changed_language := false) -> void:
|
|
var root := tree.create_item()
|
|
var general_button := tree.create_item(root)
|
|
var language_button := tree.create_item(root)
|
|
var theme_button := tree.create_item(root)
|
|
var canvas_button := tree.create_item(root)
|
|
var image_button := tree.create_item(root)
|
|
var shortcuts_button := tree.create_item(root)
|
|
|
|
general_button.set_text(0, " " + tr("General"))
|
|
# We use metadata to avoid being affected by translations
|
|
general_button.set_metadata(0, "General")
|
|
language_button.set_text(0, " " + tr("Language"))
|
|
language_button.set_metadata(0, "Language")
|
|
theme_button.set_text(0, " " + tr("Themes"))
|
|
theme_button.set_metadata(0, "Themes")
|
|
canvas_button.set_text(0, " " + tr("Canvas"))
|
|
canvas_button.set_metadata(0, "Canvas")
|
|
image_button.set_text(0, " " + tr("Image"))
|
|
image_button.set_metadata(0, "Image")
|
|
shortcuts_button.set_text(0, " " + tr("Shortcuts"))
|
|
shortcuts_button.set_metadata(0, "Shortcuts")
|
|
|
|
if changed_language:
|
|
language_button.select(0)
|
|
else:
|
|
general_button.select(0)
|
|
|
|
|
|
func _on_PreferencesDialog_popup_hide() -> void:
|
|
tree.clear()
|
|
|
|
|
|
func _on_Tree_item_selected() -> void:
|
|
for child in right_side.get_children():
|
|
child.visible = false
|
|
var selected : String = tree.get_selected().get_metadata(0)
|
|
if "General" in selected:
|
|
general.visible = true
|
|
elif "Language" in selected:
|
|
languages.visible = true
|
|
elif "Themes" in selected:
|
|
themes.visible = true
|
|
elif "Canvas" in selected:
|
|
canvas.visible = true
|
|
elif "Image" in selected:
|
|
image.visible = true
|
|
elif "Shortcuts" in selected:
|
|
shortcuts.visible = true
|
|
|
|
|
|
func _on_PressureSensitivityOptionButton_item_selected(id : int) -> void:
|
|
Global.pressure_sensitivity_mode = id
|
|
Global.config_cache.set_value("preferences", "pressure_sensitivity", id)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_SmoothZoom_pressed() -> void:
|
|
Global.smooth_zoom = !Global.smooth_zoom
|
|
Global.config_cache.set_value("preferences", "smooth_zoom", Global.smooth_zoom)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_Language_pressed(button : Button) -> void:
|
|
var index := 0
|
|
var i := -1
|
|
for child in languages.get_children():
|
|
if child is Button:
|
|
if child == button:
|
|
button.pressed = true
|
|
index = i
|
|
else:
|
|
child.pressed = false
|
|
i += 1
|
|
if index == -1:
|
|
TranslationServer.set_locale(OS.get_locale())
|
|
else:
|
|
TranslationServer.set_locale(Global.loaded_locales[index])
|
|
|
|
if "zh" in TranslationServer.get_locale():
|
|
Global.control.theme.default_font = preload("res://Assets/Fonts/CJK/NotoSansCJKtc-Regular.tres")
|
|
else:
|
|
Global.control.theme.default_font = preload("res://Assets/Fonts/Roboto-Regular.tres")
|
|
|
|
Global.config_cache.set_value("preferences", "locale", TranslationServer.get_locale())
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
# Update Translations
|
|
Global.update_hint_tooltips()
|
|
_on_PreferencesDialog_popup_hide()
|
|
_on_PreferencesDialog_about_to_show(true)
|
|
|
|
|
|
func _on_Theme_pressed(button : Button) -> void:
|
|
var index := 0
|
|
var i := 0
|
|
for child in themes.get_children():
|
|
if child is Button:
|
|
if child == button:
|
|
button.pressed = true
|
|
index = i
|
|
else:
|
|
child.pressed = false
|
|
i += 1
|
|
|
|
change_theme(index)
|
|
|
|
Global.config_cache.set_value("preferences", "theme", index)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func change_theme(ID : int) -> void:
|
|
var font = Global.control.theme.default_font
|
|
var main_theme
|
|
var top_menu_style
|
|
var ruler_style
|
|
if ID == 0: # Dark Theme
|
|
Global.theme_type = "Dark"
|
|
VisualServer.set_default_clear_color(Color(0.247059, 0.25098, 0.247059))
|
|
main_theme = preload("res://Themes & Styles/Dark Theme/Dark Theme.tres")
|
|
top_menu_style = preload("res://Themes & Styles/Dark Theme/DarkTopMenuStyle.tres")
|
|
ruler_style = preload("res://Themes & Styles/Dark Theme/DarkRulerStyle.tres")
|
|
elif ID == 1: # Gray Theme
|
|
Global.theme_type = "Dark"
|
|
VisualServer.set_default_clear_color(Color(0.301961, 0.301961, 0.301961))
|
|
main_theme = preload("res://Themes & Styles/Gray Theme/Gray Theme.tres")
|
|
top_menu_style = preload("res://Themes & Styles/Gray Theme/GrayTopMenuStyle.tres")
|
|
ruler_style = preload("res://Themes & Styles/Dark Theme/DarkRulerStyle.tres")
|
|
elif ID == 2: # Godot's Theme
|
|
Global.theme_type = "Dark"
|
|
VisualServer.set_default_clear_color(Color(0.27451, 0.278431, 0.305882))
|
|
main_theme = preload("res://Themes & Styles/Godot\'s Theme/Godot\'s Theme.tres")
|
|
top_menu_style = preload("res://Themes & Styles/Godot\'s Theme/TopMenuStyle.tres")
|
|
ruler_style = preload("res://Themes & Styles/Godot\'s Theme/RulerStyle.tres")
|
|
elif ID == 3: # Gold Theme
|
|
Global.theme_type = "Gold"
|
|
VisualServer.set_default_clear_color(Color(0.694118, 0.619608, 0.458824))
|
|
main_theme = preload("res://Themes & Styles/Gold Theme/Gold Theme.tres")
|
|
top_menu_style = preload("res://Themes & Styles/Gold Theme/GoldTopMenuStyle.tres")
|
|
ruler_style = preload("res://Themes & Styles/Gold Theme/GoldRulerStyle.tres")
|
|
elif ID == 4: # Light Theme
|
|
Global.theme_type = "Light"
|
|
VisualServer.set_default_clear_color(Color(0.705882, 0.705882, 0.705882))
|
|
main_theme = preload("res://Themes & Styles/Light Theme/Light Theme.tres")
|
|
top_menu_style = preload("res://Themes & Styles/Light Theme/LightTopMenuStyle.tres")
|
|
ruler_style = preload("res://Themes & Styles/Light Theme/LightRulerStyle.tres")
|
|
|
|
Global.control.theme = main_theme
|
|
Global.control.theme.default_font = font
|
|
Global.top_menu_container.add_stylebox_override("panel", top_menu_style)
|
|
Global.horizontal_ruler.add_stylebox_override("normal", ruler_style)
|
|
Global.horizontal_ruler.add_stylebox_override("pressed", ruler_style)
|
|
Global.horizontal_ruler.add_stylebox_override("hover", ruler_style)
|
|
Global.horizontal_ruler.add_stylebox_override("focus", ruler_style)
|
|
Global.vertical_ruler.add_stylebox_override("normal", ruler_style)
|
|
Global.vertical_ruler.add_stylebox_override("pressed", ruler_style)
|
|
Global.vertical_ruler.add_stylebox_override("hover", ruler_style)
|
|
Global.vertical_ruler.add_stylebox_override("focus", ruler_style)
|
|
|
|
for button in get_tree().get_nodes_in_group("UIButtons"):
|
|
var last_backslash = button.texture_normal.resource_path.get_base_dir().find_last("/")
|
|
var button_category = button.texture_normal.resource_path.get_base_dir().right(last_backslash + 1)
|
|
var normal_file_name = button.texture_normal.resource_path.get_file()
|
|
button.texture_normal = load("res://Assets/Graphics/%s Themes/%s/%s" % [Global.theme_type, button_category, normal_file_name])
|
|
if button.texture_pressed:
|
|
var pressed_file_name = button.texture_pressed.resource_path.get_file()
|
|
button.texture_pressed = load("res://Assets/Graphics/%s Themes/%s/%s" % [Global.theme_type, button_category, pressed_file_name])
|
|
if button.texture_hover:
|
|
var hover_file_name = button.texture_hover.resource_path.get_file()
|
|
button.texture_hover = load("res://Assets/Graphics/%s Themes/%s/%s" % [Global.theme_type, button_category, hover_file_name])
|
|
if button.texture_disabled:
|
|
var disabled_file_name = button.texture_disabled.resource_path.get_file()
|
|
button.texture_disabled = load("res://Assets/Graphics/%s Themes/%s/%s" % [Global.theme_type, button_category, disabled_file_name])
|
|
|
|
# Make sure the frame text gets updated
|
|
Global.current_frame = Global.current_frame
|
|
|
|
$Popups/ShortcutSelector.theme = main_theme
|
|
|
|
|
|
func apply_shortcuts_preset(preset) -> void:
|
|
for action in preset:
|
|
var old_input_event : InputEventKey = InputMap.get_action_list(action)[0]
|
|
set_action_shortcut(action, old_input_event, preset[action])
|
|
shortcuts.get_node("Shortcuts/" + action).text = OS.get_scancode_string(preset[action].get_scancode_with_modifiers())
|
|
|
|
|
|
func toggle_shortcut_buttons(enabled : bool) -> void:
|
|
for shortcut_grid_item in shortcuts.get_node("Shortcuts").get_children():
|
|
if shortcut_grid_item is Button:
|
|
shortcut_grid_item.disabled = not enabled
|
|
if shortcut_grid_item.disabled:
|
|
shortcut_grid_item.mouse_default_cursor_shape = Control.CURSOR_FORBIDDEN
|
|
else:
|
|
shortcut_grid_item.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
|
|
|
|
|
|
func set_action_shortcut(action : String, old_input : InputEventKey, new_input : InputEventKey) -> void:
|
|
InputMap.action_erase_event(action, old_input)
|
|
InputMap.action_add_event(action, new_input)
|
|
Global.update_hint_tooltips()
|
|
# Set shortcut to switch colors button
|
|
if action == "switch_colors":
|
|
Global.color_switch_button.shortcut.shortcut = InputMap.get_action_list("switch_colors")[0]
|
|
|
|
|
|
func _on_GridWidthValue_value_changed(value : float) -> void:
|
|
Global.grid_width = value
|
|
Global.canvas.update()
|
|
Global.config_cache.set_value("preferences", "grid_size", Vector2(value, grid_height_value.value))
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_GridHeightValue_value_changed(value : float) -> void:
|
|
Global.grid_height = value
|
|
Global.canvas.update()
|
|
Global.config_cache.set_value("preferences", "grid_size", Vector2(grid_width_value.value, value))
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_GridColor_color_changed(color : Color) -> void:
|
|
Global.grid_color = color
|
|
Global.canvas.update()
|
|
Global.config_cache.set_value("preferences", "grid_color", color)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_CheckerSize_value_changed(value : float) -> void:
|
|
Global.checker_size = value
|
|
Global.transparent_checker._ready()
|
|
Global.config_cache.set_value("preferences", "checker_size", value)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_CheckerColor1_color_changed(color : Color) -> void:
|
|
Global.checker_color_1 = color
|
|
Global.transparent_checker._ready()
|
|
Global.config_cache.set_value("preferences", "checker_color_1", color)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_CheckerColor2_color_changed(color : Color) -> void:
|
|
Global.checker_color_2 = color
|
|
Global.transparent_checker._ready()
|
|
Global.config_cache.set_value("preferences", "checker_color_2", color)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_GuideColor_color_changed(color : Color) -> void:
|
|
Global.guide_color = color
|
|
for canvas in Global.canvases:
|
|
for guide in canvas.get_children():
|
|
if guide is Guide:
|
|
guide.default_color = color
|
|
Global.config_cache.set_value("preferences", "guide_color", color)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_ImageDefaultWidth_value_changed(value: float) -> void:
|
|
Global.default_image_width = value
|
|
Global.config_cache.set_value("preferences", "default_width", value)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_ImageDefaultHeight_value_changed(value: float) -> void:
|
|
Global.default_image_height = value
|
|
Global.config_cache.set_value("preferences", "default_height", value)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_DefaultBackground_color_changed(color: Color) -> void:
|
|
Global.default_fill_color = color
|
|
Global.config_cache.set_value("preferences", "default_fill_color", color)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_LeftIndicatorCheckbox_toggled(button_pressed : bool) -> void:
|
|
Global.left_square_indicator_visible = button_pressed
|
|
|
|
|
|
func _on_RightIndicatorCheckbox_toggled(button_pressed : bool) -> void:
|
|
Global.right_square_indicator_visible = button_pressed
|
|
|
|
|
|
func _on_LeftToolIconCheckbox_toggled(button_pressed : bool) -> void:
|
|
Global.show_left_tool_icon = button_pressed
|
|
Global.config_cache.set_value("preferences", "show_left_tool_icon", Global.show_left_tool_icon)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_RightToolIconCheckbox_toggled(button_pressed : bool) -> void:
|
|
Global.show_right_tool_icon = button_pressed
|
|
Global.config_cache.set_value("preferences", "show_right_tool_icon", Global.show_right_tool_icon)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_Shortcut_button_pressed(button : Button) -> void:
|
|
set_process_input(true)
|
|
action_being_edited = button.name
|
|
new_input_event = InputMap.get_action_list(button.name)[0]
|
|
shortcut_already_assigned = true
|
|
$Popups/ShortcutSelector.popup_centered()
|
|
|
|
|
|
func _on_ShortcutSelector_popup_hide() -> void:
|
|
set_process_input(false)
|
|
$Popups/ShortcutSelector/EnteredShortcut.text = ""
|
|
|
|
|
|
func _on_PresetOptionButton_item_selected(id : int) -> void:
|
|
# Only custom preset which is modifiable
|
|
toggle_shortcut_buttons(true if id == 1 else false)
|
|
match id:
|
|
0:
|
|
apply_shortcuts_preset(default_shortcuts_preset)
|
|
1:
|
|
apply_shortcuts_preset(custom_shortcuts_preset)
|
|
Global.config_cache.set_value("shortcuts", "shortcuts_preset", id)
|
|
Global.config_cache.save("user://cache.ini")
|
|
|
|
|
|
func _on_ShortcutSelector_confirmed() -> void:
|
|
if not shortcut_already_assigned:
|
|
set_action_shortcut(action_being_edited, old_input_event, new_input_event)
|
|
custom_shortcuts_preset[action_being_edited] = new_input_event
|
|
Global.config_cache.set_value("shortcuts", action_being_edited, new_input_event)
|
|
Global.config_cache.save("user://cache.ini")
|
|
shortcuts.get_node("Shortcuts/" + action_being_edited).text = OS.get_scancode_string(new_input_event.get_scancode_with_modifiers())
|
|
$Popups/ShortcutSelector.hide()
|
|
|
|
|
|
func _on_OpenLastProject_pressed():
|
|
Global.open_last_project = !Global.open_last_project
|
|
Global.config_cache.set_value("preferences", "open_last_project", Global.open_last_project)
|
|
Global.config_cache.save("user://cache.ini")
|