mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-18 17:19:50 +00:00
Compare commits
5 commits
ac950dafae
...
ffd729486f
Author | SHA1 | Date | |
---|---|---|---|
ffd729486f | |||
ed072de84e | |||
606ce965f6 | |||
276a872f73 | |||
2e8cf6a30a |
|
@ -1462,15 +1462,23 @@ msgstr ""
|
|||
msgid "Set application FPS limit:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pause application when it loses focus"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sets the limit of the application's frames per second. The lower the number, the lower the CPU usage, but the application gets slower, choppier and unresponsive. 0 means that there is no limit."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pause application when it loses focus"
|
||||
msgstr ""
|
||||
|
||||
msgid "If this is toggled on, when the application's window loses focus, it gets paused. This helps lower CPU usage when idle. The application gets unpaused when the mouse enters the application's window."
|
||||
msgstr ""
|
||||
|
||||
#. An option found in the preferences, under the Performance section.
|
||||
msgid "Enable window transparency"
|
||||
msgstr ""
|
||||
|
||||
#. Found in the preferences, tooltip of the "Enable window transparency" option.
|
||||
msgid "If enabled, the application window can become transparent. This affects performance, so keep it off if you don't need it."
|
||||
msgstr ""
|
||||
|
||||
#. Found in the Preferences, under Drivers. Specifies the renderer/video driver being used.
|
||||
msgid "Renderer:"
|
||||
msgstr ""
|
||||
|
|
|
@ -52,7 +52,6 @@ gdscript/warnings/narrowing_conversion=false
|
|||
|
||||
window/size/viewport_width=1280
|
||||
window/size/viewport_height=720
|
||||
window/per_pixel_transparency/allowed=true
|
||||
window/per_pixel_transparency/allowed.android=false
|
||||
window/per_pixel_transparency/allowed.web=false
|
||||
|
||||
|
|
|
@ -170,9 +170,9 @@ var use_native_file_dialogs := false:
|
|||
## Found in Preferences. If [code]true[/code], subwindows are embedded in the main window.
|
||||
var single_window_mode := true:
|
||||
set(value):
|
||||
single_window_mode = value
|
||||
if OS.has_feature("editor"):
|
||||
if value == single_window_mode:
|
||||
return
|
||||
single_window_mode = value
|
||||
ProjectSettings.set_setting("display/window/subwindows/embed_subwindows", value)
|
||||
ProjectSettings.save_custom(root_directory.path_join(OVERRIDE_FILE))
|
||||
## Found in Preferences. The modulation color (or simply color) of icons.
|
||||
|
@ -356,6 +356,16 @@ var fps_limit := 0:
|
|||
set(value):
|
||||
fps_limit = value
|
||||
Engine.max_fps = fps_limit
|
||||
## Found in Preferences. Affects the per_pixel_transparency project setting.
|
||||
## If [code]true[/code], it allows for the window to be transparent.
|
||||
## This affects performance, so keep it [code]false[/code] if you don't need it.
|
||||
var window_transparency := false:
|
||||
set(value):
|
||||
if value == window_transparency:
|
||||
return
|
||||
window_transparency = value
|
||||
ProjectSettings.set_setting("display/window/per_pixel_transparency/allowed", value)
|
||||
ProjectSettings.save_custom(root_directory.path_join(OVERRIDE_FILE))
|
||||
|
||||
## Found in Preferences. The time (in minutes) after which backup is created (if enabled).
|
||||
var autosave_interval := 1.0:
|
||||
|
@ -374,9 +384,9 @@ var renderer := 0:
|
|||
## Found in Preferences. The index of tablet driver used by Pixelorama.
|
||||
var tablet_driver := 0:
|
||||
set(value):
|
||||
tablet_driver = value
|
||||
if OS.has_feature("editor"):
|
||||
if value == tablet_driver:
|
||||
return
|
||||
tablet_driver = value
|
||||
var tablet_driver_name := DisplayServer.tablet_get_current_driver()
|
||||
ProjectSettings.set_setting("display/window/tablet_driver", tablet_driver_name)
|
||||
ProjectSettings.save_custom(root_directory.path_join(OVERRIDE_FILE))
|
||||
|
@ -553,6 +563,9 @@ func _init() -> void:
|
|||
if ProjectSettings.get_setting("display/window/tablet_driver") == "winink":
|
||||
tablet_driver = 1
|
||||
single_window_mode = ProjectSettings.get_setting("display/window/subwindows/embed_subwindows")
|
||||
window_transparency = ProjectSettings.get_setting(
|
||||
"display/window/per_pixel_transparency/allowed"
|
||||
)
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
|
|
|
@ -6,7 +6,7 @@ var is_quitting_on_save := false
|
|||
var changed_projects_on_quit: Array[Project]
|
||||
var cursor_image := preload("res://assets/graphics/cursor.png")
|
||||
|
||||
@onready var ui := $MenuAndUI/UI/DockableContainer as DockableContainer
|
||||
@onready var main_ui := $MenuAndUI/UI/DockableContainer as DockableContainer
|
||||
@onready var backup_confirmation: ConfirmationDialog = $Dialogs/BackupConfirmation
|
||||
@onready var save_sprite_html5: ConfirmationDialog = $Dialogs/SaveSpriteHTML5
|
||||
@onready var quit_dialog: ConfirmationDialog = $Dialogs/QuitDialog
|
||||
|
|
|
@ -101,6 +101,13 @@ var preferences: Array[Preference] = [
|
|||
Preference.new(
|
||||
"pause_when_unfocused", "Performance/PerformanceContainer/PauseAppFocus", "button_pressed"
|
||||
),
|
||||
Preference.new(
|
||||
"window_transparency",
|
||||
"Performance/PerformanceContainer/WindowTransparency",
|
||||
"button_pressed",
|
||||
true,
|
||||
false
|
||||
),
|
||||
# Preference.new(
|
||||
# "renderer", "Drivers/DriversContainer/Renderer", "selected", true, OS.VIDEO_DRIVER_GLES2
|
||||
# ),
|
||||
|
|
|
@ -1054,6 +1054,18 @@ mouse_default_cursor_shape = 2
|
|||
button_pressed = true
|
||||
text = "On"
|
||||
|
||||
[node name="WindowTransparencyLabel" type="Label" parent="HSplitContainer/VBoxContainer/ScrollContainer/RightSide/Performance/PerformanceContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "If enabled, the application window can become transparent. This affects performance, so keep it off if you don't need it."
|
||||
mouse_filter = 0
|
||||
text = "Enable window transparency"
|
||||
|
||||
[node name="WindowTransparency" type="CheckBox" parent="HSplitContainer/VBoxContainer/ScrollContainer/RightSide/Performance/PerformanceContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "If enabled, the application window can become transparent. This affects performance, so keep it off if you don't need it."
|
||||
mouse_default_cursor_shape = 2
|
||||
text = "On"
|
||||
|
||||
[node name="Drivers" type="VBoxContainer" parent="HSplitContainer/VBoxContainer/ScrollContainer/RightSide"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
|
|
@ -257,7 +257,7 @@ func remove_reference_image(idx: int) -> void:
|
|||
ri.queue_free()
|
||||
Global.current_project.set_reference_image_index(-1)
|
||||
Global.current_project.change_project()
|
||||
Global.control.ui.find_child("Reference Images")._on_references_changed()
|
||||
Global.reference_panel._on_references_changed()
|
||||
|
||||
|
||||
func _update_on_zoom() -> void:
|
||||
|
|
|
@ -64,7 +64,7 @@ func _on_DeleteLayout_pressed() -> void:
|
|||
func _on_LayoutSettings_confirmed() -> void:
|
||||
var file_name := layout_name.text + ".tres"
|
||||
var path := "user://layouts/".path_join(file_name)
|
||||
var layout: DockableLayout = Global.control.ui.layout
|
||||
var layout: DockableLayout = Global.control.main_ui.layout
|
||||
var err := ResourceSaver.save(layout, path)
|
||||
if err != OK:
|
||||
print(err)
|
||||
|
@ -108,7 +108,7 @@ func _on_DeleteConfirmation_confirmed() -> void:
|
|||
func refresh_preview():
|
||||
for tab in mimic_ui.get_tabs():
|
||||
mimic_ui.remove_child(tab)
|
||||
for item in Global.top_menu_container.ui.get_tabs():
|
||||
for item in Global.top_menu_container.main_ui.get_tabs():
|
||||
var box := TextEdit.new()
|
||||
box.name = item.name
|
||||
box.text = item.name
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
extends AcceptDialog
|
||||
|
||||
@onready var slider: ValueSlider = $VBoxContainer/ValueSlider
|
||||
@onready var fullscreen_warning: Label = $VBoxContainer/FullscreenWarning
|
||||
@onready var main_canvas = Global.control.find_child("Main Canvas")
|
||||
@onready var slider := $VBoxContainer/ValueSlider as ValueSlider
|
||||
@onready var fullscreen_warning := $VBoxContainer/FullscreenWarning as Label
|
||||
@onready var main_canvas := Global.control.find_child("Main Canvas") as Control
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
await get_tree().process_frame
|
||||
Global.control.ui.sort_children.connect(_recalculate_opacity)
|
||||
Global.control.main_ui.sort_children.connect(_recalculate_opacity)
|
||||
|
||||
|
||||
func _on_WindowOpacityDialog_about_to_show() -> void:
|
||||
|
@ -33,13 +33,12 @@ func set_window_opacity(value: float) -> void:
|
|||
slider.value = value
|
||||
|
||||
value = value / 100.0
|
||||
for container in Global.control.ui._panel_container.get_children():
|
||||
# Find the TabContainer that has the Main Canvas panel
|
||||
for container: Control in Global.control.main_ui._panel_container.get_children():
|
||||
if container is TabContainer:
|
||||
var point = container.get_rect().position + (container.get_rect().size / 2.0)
|
||||
if main_canvas.get_rect().has_point(point):
|
||||
var center := container.get_rect().get_center()
|
||||
if main_canvas.get_rect().has_point(center):
|
||||
container.self_modulate.a = value
|
||||
else:
|
||||
container.self_modulate.a = 1.0
|
||||
Global.transparent_checker.update_transparency(value)
|
||||
|
||||
|
||||
|
|
|
@ -10,16 +10,16 @@ const PIXELORAMA_ICON := preload("res://assets/graphics/icons/icon_16x16.png")
|
|||
const HEART_ICON := preload("res://assets/graphics/misc/heart.svg")
|
||||
|
||||
var recent_projects := []
|
||||
var layouts := [
|
||||
["Default", preload("res://assets/layouts/default.tres")],
|
||||
["Tallscreen", preload("res://assets/layouts/tallscreen.tres")],
|
||||
var layouts: Array[DockableLayout] = [
|
||||
preload("res://assets/layouts/Default.tres"),
|
||||
preload("res://assets/layouts/Tallscreen.tres"),
|
||||
]
|
||||
var default_layout_size := layouts.size()
|
||||
var selected_layout := 0
|
||||
var zen_mode := false
|
||||
|
||||
@onready var ui := Global.control.find_child("DockableContainer") as DockableContainer
|
||||
@onready var ui_elements := ui.get_children()
|
||||
@onready var main_ui := Global.control.find_child("DockableContainer") as DockableContainer
|
||||
@onready var ui_elements := main_ui.get_children()
|
||||
@onready var file_menu: PopupMenu = $MenuBar/File
|
||||
@onready var edit_menu: PopupMenu = $MenuBar/Edit
|
||||
@onready var select_menu: PopupMenu = $MenuBar/Select
|
||||
|
@ -28,7 +28,7 @@ var zen_mode := false
|
|||
@onready var window_menu: PopupMenu = $MenuBar/Window
|
||||
@onready var help_menu: PopupMenu = $MenuBar/Help
|
||||
|
||||
@onready var greyscale_vision: ColorRect = ui.find_child("GreyscaleVision")
|
||||
@onready var greyscale_vision: ColorRect = main_ui.find_child("GreyscaleVision")
|
||||
@onready var new_image_dialog: ConfirmationDialog = Global.control.find_child("CreateNewImage")
|
||||
@onready var window_opacity_dialog: AcceptDialog = Global.control.find_child("WindowOpacityDialog")
|
||||
@onready var tile_mode_submenu := PopupMenu.new()
|
||||
|
@ -239,7 +239,7 @@ func _setup_panels_submenu(item: String) -> void:
|
|||
panels_submenu.hide_on_checkable_item_selection = false
|
||||
for element in ui_elements:
|
||||
panels_submenu.add_check_item(element.name)
|
||||
var is_hidden: bool = ui.is_control_hidden(element)
|
||||
var is_hidden: bool = main_ui.is_control_hidden(element)
|
||||
panels_submenu.set_item_checked(ui_elements.find(element), !is_hidden)
|
||||
|
||||
panels_submenu.id_pressed.connect(_panels_submenu_id_pressed)
|
||||
|
@ -255,8 +255,9 @@ func _setup_layouts_submenu(item: String) -> void:
|
|||
var file_name = dir.get_next()
|
||||
while file_name != "":
|
||||
if !dir.current_is_dir():
|
||||
var file_name_no_tres: String = file_name.get_basename()
|
||||
layouts.append([file_name_no_tres, ResourceLoader.load(path.path_join(file_name))])
|
||||
var layout := ResourceLoader.load(path.path_join(file_name))
|
||||
if layout is DockableLayout:
|
||||
layouts.append(layout)
|
||||
file_name = dir.get_next()
|
||||
dir.list_dir_end()
|
||||
|
||||
|
@ -276,7 +277,8 @@ func populate_layouts_submenu() -> void:
|
|||
layouts_submenu.clear() # Does not do anything if it's called for the first time
|
||||
layouts_submenu.add_item("Manage Layouts", 0)
|
||||
for layout in layouts:
|
||||
layouts_submenu.add_radio_check_item(layout[0])
|
||||
var layout_name := layout.resource_path.get_basename().get_file()
|
||||
layouts_submenu.add_radio_check_item(layout_name)
|
||||
|
||||
|
||||
func _setup_image_menu() -> void:
|
||||
|
@ -516,8 +518,8 @@ func window_menu_id_pressed(id: int) -> void:
|
|||
Global.WindowMenu.WINDOW_OPACITY:
|
||||
_popup_dialog(window_opacity_dialog)
|
||||
Global.WindowMenu.MOVABLE_PANELS:
|
||||
ui.tabs_visible = !ui.tabs_visible
|
||||
window_menu.set_item_checked(id, ui.tabs_visible)
|
||||
main_ui.tabs_visible = !main_ui.tabs_visible
|
||||
window_menu.set_item_checked(id, main_ui.tabs_visible)
|
||||
Global.WindowMenu.ZEN_MODE:
|
||||
_toggle_zen_mode()
|
||||
Global.WindowMenu.FULLSCREEN_MODE:
|
||||
|
@ -555,15 +557,9 @@ func _snap_to_submenu_id_pressed(id: int) -> void:
|
|||
func _panels_submenu_id_pressed(id: int) -> void:
|
||||
if zen_mode:
|
||||
return
|
||||
|
||||
var element_visible := panels_submenu.is_item_checked(id)
|
||||
ui.set_control_hidden(ui_elements[id], element_visible)
|
||||
main_ui.set_control_hidden(ui_elements[id], element_visible)
|
||||
panels_submenu.set_item_checked(id, !element_visible)
|
||||
if ui.tabs_visible == false:
|
||||
ui.tabs_visible = true
|
||||
await get_tree().process_frame
|
||||
await get_tree().process_frame
|
||||
ui.tabs_visible = false
|
||||
|
||||
|
||||
func _layouts_submenu_id_pressed(id: int) -> void:
|
||||
|
@ -577,13 +573,13 @@ func set_layout(id: int) -> void:
|
|||
if id >= layouts.size():
|
||||
id = 0
|
||||
selected_layout = id
|
||||
ui.layout = layouts[id][1].clone() # Clone is needed to avoid modifying premade layouts
|
||||
main_ui.layout = layouts[id].clone() # Clone is needed to avoid modifying premade layouts
|
||||
for i in layouts.size():
|
||||
var offset := i + 1
|
||||
layouts_submenu.set_item_checked(offset, offset == (id + 1))
|
||||
|
||||
for i in ui_elements.size():
|
||||
var is_hidden := ui.is_control_hidden(ui_elements[i])
|
||||
var is_hidden := main_ui.is_control_hidden(ui_elements[i])
|
||||
panels_submenu.set_item_checked(i, !is_hidden)
|
||||
|
||||
if zen_mode: # Turn zen mode off
|
||||
|
@ -591,12 +587,6 @@ func set_layout(id: int) -> void:
|
|||
zen_mode = false
|
||||
window_menu.set_item_checked(Global.WindowMenu.ZEN_MODE, false)
|
||||
|
||||
# Hacky but without 2 idle frames it doesn't work properly. Should be replaced eventually
|
||||
await get_tree().process_frame
|
||||
await get_tree().process_frame
|
||||
# Call set_tabs_visible to keep tabs visible if there are 2 or more in the same panel
|
||||
ui.tabs_visible = ui.tabs_visible
|
||||
|
||||
|
||||
func _toggle_greyscale_view() -> void:
|
||||
Global.greyscale_view = !Global.greyscale_view
|
||||
|
@ -665,7 +655,7 @@ func _toggle_zen_mode() -> void:
|
|||
continue
|
||||
if !panels_submenu.is_item_checked(i):
|
||||
continue
|
||||
ui.set_control_hidden(ui_elements[i], !zen_mode)
|
||||
main_ui.set_control_hidden(ui_elements[i], !zen_mode)
|
||||
Global.control.find_child("TabsContainer").visible = zen_mode
|
||||
zen_mode = !zen_mode
|
||||
window_menu.set_item_checked(Global.WindowMenu.ZEN_MODE, zen_mode)
|
||||
|
|
Loading…
Reference in a new issue