1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-30 23:19:49 +00:00

Palettes now get loaded from the root directory instead of user://

Folders "Brushes", "Palette" and "Palette/Custom" now get created if they don't exist (tested on Windows export).

Also, the palettes don't need the Default palette to work anymore, and Default along with bubblegum16 aren't copied to the Palette folder now.
This commit is contained in:
OverloadedOrama 2019-12-30 20:03:22 +02:00
parent ef879882d6
commit 870cf8940d
10 changed files with 25 additions and 22 deletions

View file

@ -39,6 +39,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- The UI darkens when exiting the application (Thanks to Calinou) - The UI darkens when exiting the application (Thanks to Calinou)
- The bucket tool's "paint all pixels with the same color" now gets limited to the selection, if there is any. - The bucket tool's "paint all pixels with the same color" now gets limited to the selection, if there is any.
- If the alpha on the color picker is at 0 and any of the other RGB values change, alpha becomes 1. (Issue #54) - If the alpha on the color picker is at 0 and any of the other RGB values change, alpha becomes 1. (Issue #54)
- The Brushes folder now gets created if it doesn't exist (tested on Windows)
### Fixed ### Fixed
- UndoRedo leak (issue #34) (Thanks to qarmin) - UndoRedo leak (issue #34) (Thanks to qarmin)

0
Palettes/.gdignore Normal file
View file

View file

@ -0,0 +1 @@
{"name":"Complementary","colors":[{"data":"ffb35102","name":"no name"},{"data":"ffff9945","name":"no name"},{"data":"ffff7100","name":"no name"},{"data":"ff0099b3","name":"no name"},{"data":"ff00daff","name":"no name"},{"data":"ffb30202","name":"no name"},{"data":"ffff4545","name":"no name"},{"data":"ffff0201","name":"no name"},{"data":"ff00b333","name":"no name"},{"data":"ff00ff48","name":"no name"},{"data":"ff8002b3","name":"no name"},{"data":"ffca45ff","name":"no name"},{"data":"ffb400fe","name":"no name"},{"data":"ff7fb300","name":"no name"},{"data":"ffb5ff00","name":"no name"},{"data":"ff0211b3","name":"no name"},{"data":"ff4554ff","name":"no name"},{"data":"ff0116ff","name":"no name"},{"data":"ffb38c00","name":"no name"},{"data":"ffffc900","name":"no name"},{"data":"ff029eb3","name":"no name"},{"data":"ff7af0ff","name":"no name"},{"data":"ff00e1ff","name":"no name"},{"data":"ffb34d00","name":"no name"},{"data":"ffff6f00","name":"no name"}],"comments":"","editable":true}

View file

@ -0,0 +1 @@
{"name":"Monochromatic","colors":[{"data":"ff323880","name":"no name"},{"data":"ffb0b7ff","name":"no name"},{"data":"ff636fff","name":"no name"},{"data":"ff4d5182","name":"no name"},{"data":"ff505acc","name":"no name"},{"data":"ff347685","name":"no name"},{"data":"ffb0f1ff","name":"no name"},{"data":"ff63e2ff","name":"no name"},{"data":"ff487985","name":"no name"},{"data":"ff50b5cc","name":"no name"},{"data":"ff40852c","name":"no name"},{"data":"ffadff94","name":"no name"},{"data":"ff7cff54","name":"no name"},{"data":"ff228a03","name":"no name"},{"data":"ff64cc43","name":"no name"},{"data":"ff857f1c","name":"no name"},{"data":"fffffba8","name":"no name"},{"data":"fffff536","name":"no name"},{"data":"ff8a863b","name":"no name"},{"data":"ffccc32b","name":"no name"},{"data":"ff854d15","name":"no name"},{"data":"ffffcd9c","name":"no name"},{"data":"ffff9429","name":"no name"},{"data":"ff8a5f34","name":"no name"},{"data":"ffcc7520","name":"no name"},{"data":"ff57100a","name":"no name"},{"data":"ffeb2d1c","name":"no name"},{"data":"ffd12617","name":"no name"},{"data":"ff5c120b","name":"no name"},{"data":"ff9e1d11","name":"no name"},{"data":"ff521157","name":"no name"},{"data":"ffde31eb","name":"no name"},{"data":"ffc62ad1","name":"no name"},{"data":"ff57135c","name":"no name"},{"data":"ff96209e","name":"no name"},{"data":"ff141414","name":"no name"},{"data":"ffababab","name":"no name"},{"data":"ff6e6e6e","name":"no name"},{"data":"ff2d2d2d","name":"no name"},{"data":"ff616161","name":"no name"}],"comments":"","editable":true}

1
Palettes/Shades.json Normal file
View file

@ -0,0 +1 @@
{"name":"Shades","colors":[{"data":"ffc25400","name":"no name"},{"data":"ff803900","name":"no name"},{"data":"ffff7300","name":"no name"},{"data":"ff401d00","name":"no name"},{"data":"ffe66700","name":"no name"},{"data":"ffc20000","name":"no name"},{"data":"ff800000","name":"no name"},{"data":"ffff0000","name":"no name"},{"data":"ff400000","name":"no name"},{"data":"ffe60101","name":"no name"},{"data":"ff8800c2","name":"no name"},{"data":"ff590080","name":"no name"},{"data":"ffb300ff","name":"no name"},{"data":"ff2d0040","name":"no name"},{"data":"ffa200e5","name":"no name"},{"data":"ff0010c2","name":"no name"},{"data":"ff000b80","name":"no name"},{"data":"ff0015ff","name":"no name"},{"data":"ff000540","name":"no name"},{"data":"ff0114e6","name":"no name"},{"data":"ff00abc2","name":"no name"},{"data":"ff007180","name":"no name"},{"data":"ff00e1ff","name":"no name"},{"data":"ff003840","name":"no name"},{"data":"ff00cbe6","name":"no name"},{"data":"ff00c237","name":"no name"},{"data":"ff008024","name":"no name"},{"data":"ff00ff48","name":"no name"},{"data":"ff004012","name":"no name"},{"data":"ff00e641","name":"no name"},{"data":"ffb8c200","name":"no name"},{"data":"ff798000","name":"no name"},{"data":"fff2ff00","name":"no name"},{"data":"ff3d4000","name":"no name"},{"data":"ffdce600","name":"no name"}],"comments":"","editable":true}

1
Palettes/Triad.json Normal file
View file

@ -0,0 +1 @@
{"name":"Triad","colors":[{"data":"ff852c32","name":"no name"},{"data":"ffcc646b","name":"no name"},{"data":"ffe3df66","name":"no name"},{"data":"ff3c7899","name":"no name"},{"data":"ff386680","name":"no name"},{"data":"ff141a85","name":"no name"},{"data":"ff353cd1","name":"no name"},{"data":"ffe66930","name":"no name"},{"data":"ff409e18","name":"no name"},{"data":"ff3a851b","name":"no name"},{"data":"ff8a0500","name":"no name"},{"data":"ffd10600","name":"no name"},{"data":"ffdee609","name":"no name"},{"data":"ff105f9e","name":"no name"},{"data":"ff074c85","name":"no name"},{"data":"ff84168a","name":"no name"},{"data":"ffc942d1","name":"no name"},{"data":"ffe6bf40","name":"no name"},{"data":"ff239e85","name":"no name"},{"data":"ff248571","name":"no name"},{"data":"ff1e8a1a","name":"no name"},{"data":"ff4fd14a","name":"no name"},{"data":"ff6047e6","name":"no name"},{"data":"ff9e5a28","name":"no name"},{"data":"ff854f28","name":"no name"}],"comments":"","editable":true}

View file

@ -2,6 +2,7 @@ extends Node
func import_brushes(path : String) -> void: func import_brushes(path : String) -> void:
var brushes_dir := Directory.new() var brushes_dir := Directory.new()
brushes_dir.open(".")
if !brushes_dir.dir_exists(path): if !brushes_dir.dir_exists(path):
brushes_dir.make_dir(path) brushes_dir.make_dir(path)

View file

@ -1,6 +1,8 @@
extends GridContainer extends GridContainer
const palette_button = preload("res://Prefabs/PaletteButton.tscn"); const palette_button = preload("res://Prefabs/PaletteButton.tscn");
const palettes_path := "Palettes"
const custom_palettes_path := "Palettes/Custom"
var current_palette = "Default" var current_palette = "Default"
var from_palette : Palette var from_palette : Palette
@ -9,7 +11,7 @@ var from_palette : Palette
func _ready() -> void: func _ready() -> void:
_load_palettes() _load_palettes()
#Select default palette "Default" # Select default palette "Default"
on_palette_select(current_palette) on_palette_select(current_palette)
func _clear_swatches() -> void: func _clear_swatches() -> void:
@ -29,9 +31,6 @@ func on_palette_select(palette_name : String) -> void:
Global.remove_palette_button.disabled = false # Can remove if custom palette Global.remove_palette_button.disabled = false # Can remove if custom palette
_display_palette(palette) _display_palette(palette)
else: #Use default on fail
current_palette = "Default"
_display_palette(Global.palettes["Default"])
func on_new_empty_palette() -> void: func on_new_empty_palette() -> void:
Global.new_palette_dialog.window_title = "Create a new empty palette?" Global.new_palette_dialog.window_title = "Create a new empty palette?"
@ -85,7 +84,7 @@ func on_new_palette_confirmed() -> void:
var new_palette_name : String = Global.new_palette_name_line_edit.text var new_palette_name : String = Global.new_palette_name_line_edit.text
var result : String = create_new_palette(new_palette_name, from_palette) var result : String = create_new_palette(new_palette_name, from_palette)
if not result.empty(): if not result.empty():
Global.error_dialog.set_text(result); Global.error_dialog.set_text(result)
Global.error_dialog.popup_centered() Global.error_dialog.popup_centered()
func create_new_palette(name : String, _from_palette : Palette) -> String: # Returns empty string, else error string func create_new_palette(name : String, _from_palette : Palette) -> String: # Returns empty string, else error string
@ -142,22 +141,17 @@ func on_color_select(index : int) -> void:
Global.update_right_custom_brush() Global.update_right_custom_brush()
func _load_palettes() -> void: func _load_palettes() -> void:
var file := File.new()
var dir := Directory.new() var dir := Directory.new()
dir.open(".")
if not dir.dir_exists(palettes_path):
dir.make_dir(palettes_path)
if not dir.dir_exists(custom_palettes_path):
dir.make_dir(custom_palettes_path)
if not dir.dir_exists("user://palettes"): var palette_files : Array = get_palette_files(palettes_path)
dir.make_dir("user://palettes");
if not dir.dir_exists("user://palettes/custom"):
dir.make_dir("user://palettes/custom")
if not file.file_exists("user://palettes/default_palette.json"):
dir.copy("res://Assets/Graphics/Palette/default_palette.json","user://palettes/default_palette.json");
if not file.file_exists("user://palettes/bubblegum16.json"):
dir.copy("res://Assets/Graphics/Palette/bubblegum16.json","user://palettes/bubblegum16.json");
var palette_files : Array = get_palette_files("user://palettes")
for file_name in palette_files: for file_name in palette_files:
var palette : Palette = Palette.new().load_from_file("user://palettes/" + file_name) var palette : Palette = Palette.new().load_from_file(palettes_path.plus_file(file_name))
if palette: if palette:
Global.palettes[palette.name] = palette Global.palettes[palette.name] = palette
Global.palette_option_button.add_item(palette.name) Global.palette_option_button.add_item(palette.name)
@ -166,17 +160,20 @@ func _load_palettes() -> void:
if palette.name == "Default": if palette.name == "Default":
Global.palette_option_button.select(index) Global.palette_option_button.select(index)
dir.open("user://palettes/custom") dir.open(custom_palettes_path)
var custom_palette_files : Array = get_palette_files("user://palettes/custom") var custom_palette_files : Array = get_palette_files(custom_palettes_path)
for file_name in custom_palette_files: for file_name in custom_palette_files:
var palette : Palette = Palette.new().load_from_file("user://palettes/custom/" + file_name) var palette : Palette = Palette.new().load_from_file(custom_palettes_path.plus_file(file_name))
if palette: if palette:
Global.palettes[palette.name] = palette Global.palettes[palette.name] = palette
Global.palette_option_button.add_item(palette.name) Global.palette_option_button.add_item(palette.name)
var index: int = Global.palette_option_button.get_item_count() - 1 var index: int = Global.palette_option_button.get_item_count() - 1
Global.palette_option_button.set_item_metadata(index, palette.name) Global.palette_option_button.set_item_metadata(index, palette.name)
if not "Default" in Global.palettes && Global.palettes.size() > 0:
Global.control._on_PaletteOptionButton_item_selected(0)
func get_palette_files(path : String) -> Array: func get_palette_files(path : String) -> Array:
var dir := Directory.new() var dir := Directory.new()
var results = [] var results = []
@ -207,9 +204,9 @@ func remove_current_palette() -> void:
func _delete_palette_file(file_name : String) -> void: func _delete_palette_file(file_name : String) -> void:
var dir = Directory.new() var dir = Directory.new()
dir.remove("user://palettes/custom/" + file_name) dir.remove(custom_palettes_path.plus_file(file_name))
func save_palette(palette_name : String, filename : String) -> void: func save_palette(palette_name : String, filename : String) -> void:
var palette = Global.palettes[palette_name] var palette = Global.palettes[palette_name]
palette.save_to_file("user://palettes/custom/" + filename) palette.save_to_file(custom_palettes_path.plus_file(filename))