Skip to content

Commit

Permalink
Add preferences window (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
bayu-sw authored Jun 13, 2024
1 parent 0b14027 commit 68a7c5e
Show file tree
Hide file tree
Showing 26 changed files with 1,493 additions and 608 deletions.
94 changes: 74 additions & 20 deletions project/addons/net.yarvis.pixel_pen/classes/editor_shorcut.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,97 @@
class_name EditorShorcut
extends Resource


@export_category("Menu")
@export_subgroup("PixelPen")
@export var about : Shortcut
@export var preferences : Shortcut
@export var quit_editor : Shortcut

@export_subgroup("File")
@export var new_project : Shortcut
@export var open_project : Shortcut
@export var save : Shortcut
@export var save_as : Shortcut
@export var import : Shortcut
@export var quick_export : Shortcut
@export var close_project : Shortcut

@export_subgroup("Edit")
@export var undo : Shortcut
@export var redo : Shortcut
@export var copy : Shortcut
@export var cut : Shortcut
@export var paste : Shortcut
@export var confirm : Shortcut
@export var arrow_left : Shortcut
@export var arrow_up : Shortcut
@export var arrow_right : Shortcut
@export var arrow_down : Shortcut
@export var arrow_left_variant : Shortcut
@export var arrow_up_variant : Shortcut
@export var arrow_right_variant : Shortcut
@export var arrow_down_variant : Shortcut
@export var inverse_selection : Shortcut
@export var remove_selection : Shortcut
@export var delete_selected : Shortcut
@export var create_brush : Shortcut
@export var reset_brush : Shortcut
@export var create_stamp : Shortcut
@export var reset_stamp : Shortcut
@export var prev_toolbox : Shortcut
@export var canvas_size : Shortcut

@export_subgroup("Layer")
@export var add_layer : Shortcut
@export var delete_layer : Shortcut
@export var duplicate_layer : Shortcut
@export var duplicate_selection : Shortcut
@export var copy_layer : Shortcut
@export var cut_layer : Shortcut
@export var paste_layer : Shortcut
@export var rename_layer : Shortcut
@export var merge_down : Shortcut
@export var merge_visible : Shortcut
@export var merge_all : Shortcut
@export var show_all : Shortcut
@export var hide_all : Shortcut
@export var active_go_up : Shortcut
@export var active_go_down : Shortcut

@export_subgroup("Palette")

@export_subgroup("Animation")
@export var animation_play_pause : Shortcut
@export var animation_skip_to_front : Shortcut
@export var animation_step_forward : Shortcut
@export var animation_step_backward : Shortcut
@export var animation_skip_to_end : Shortcut
@export var loop_playback : Shortcut
@export var animation_onion_skinning : Shortcut
@export var frame_insert_right : Shortcut
@export var frame_insert_left : Shortcut
@export var duplicate_frame : Shortcut
@export var duplicate_frame_linked : Shortcut
@export var convert_frame_linked_to_unique : Shortcut
@export var animation_shift_frame_left : Shortcut
@export var animation_shift_frame_right : Shortcut
@export var animation_move_frame_to_timeline : Shortcut
@export var animation_move_frame_to_draft : Shortcut
@export var create_draft_frame : Shortcut
@export var delete_draft_frame : Shortcut

@export_subgroup("View")
@export var view_show_grid : Shortcut
@export var view_show_tile : Shortcut
@export var rotate_canvas_90 : Shortcut
@export var rotate_canvas_min90 : Shortcut
@export var flip_canvas_horizontal : Shortcut
@export var flip_canvas_vertical : Shortcut
@export var reset_canvas_transform : Shortcut
@export var reset_zoom : Shortcut
@export var virtual_mouse : Shortcut
@export var vertical_mirror : Shortcut
@export var horizontal_mirror : Shortcut
@export var show_preview : Shortcut
@export var show_animation_timeline: Shortcut
@export var toggle_tint_layer : Shortcut
@export var filter_greyscale : Shortcut
@export var toggle_edit_selection_only : Shortcut
@export var show_info : Shortcut

@export_category("Tool")
@export_subgroup("ToolBox")
@export var tool_select : Shortcut
@export var tool_selection : Shortcut
@export var tool_move : Shortcut
Expand All @@ -43,17 +104,10 @@ extends Resource
@export var tool_magnet : Shortcut
@export var tool_rectangle : Shortcut
@export var tool_fill : Shortcut
@export var tool_inverse_selection : Shortcut
@export var tool_remove_selection : Shortcut
@export var tool_delete_selected : Shortcut
@export var tool_line : Shortcut
@export var tool_color_picker : Shortcut
@export var tool_zoom : Shortcut
@export var tool_ellipse : Shortcut
@export var animation_play_pause : Shortcut
@export var animation_shift_frame_left : Shortcut
@export var animation_shift_frame_right : Shortcut
@export var animation_move_frame_to_timeline : Shortcut
@export var animation_move_frame_to_draft : Shortcut
@export var animation_onion_skinning : Shortcut
@export var prev_toolbox : Shortcut

@export_category("Other")
@export var confirm : Shortcut
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ const COMPATIBILITY_NUMBER : int = 3
@export var file_path : String
@export var last_export_file_path : String
@export var canvas_size : Vector2i
@export var checker_size : int:
get:
return max(checker_size, 1)

@export var palette : IndexedPalette

Expand Down Expand Up @@ -83,14 +80,13 @@ enum BackgroundColor{
}


func initialized(p_size : Vector2i, p_name : String = "Untitled", \
p_checker_size : int = 16, p_file_path : String = "", one_layer : bool = true):
func initialized(p_size : Vector2i, p_name : String = "Untitled", p_file_path : String = "", one_layer : bool = true):
compatibility_version = COMPATIBILITY_NUMBER
layer_index_counter = 0
project_name = p_name
canvas_size = p_size
animation_fps = PixelPen.userconfig.default_animation_fps
symetric_guid = canvas_size * 0.5
checker_size = p_checker_size
palette = IndexedPalette.new()
palette.set_color_index_preset()
sync_gui_palette()
Expand Down
24 changes: 23 additions & 1 deletion project/addons/net.yarvis.pixel_pen/classes/user_config.gd
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,35 @@ const PATH := "user://pixelpen_user_config.res"
@export var layer_active_color : Color = Color(0.3, 0.3, 0.3, 1.0)
@export var layer_secondary_active_color : Color = Color(0.25, 0.25, 0.25, 1.0)

@export_category("Preferences")
@export_subgroup("General")
@export var default_grid_size : Vector2i = Vector2i(8, 8)
@export var checker_size : Vector2i = Vector2i(8, 8)
@export var default_workspace : String = ""
@export var default_canvas_size : Vector2i = Vector2i(128, 128)
@export var hide_cursor_in_canvas : bool = true
@export var default_animation_fps : int = 24

@export_subgroup("Shorcuts")
@export var shorcuts : EditorShorcut = preload("../resources/editor_shorcut.tres")


static func load_data(reset : bool = false):
if not reset and ResourceLoader.exists(PATH):
var res = ResourceLoader.load(PATH, "", ResourceLoader.CACHE_MODE_IGNORE)
if res and res is UserConfig:
return res
return UserConfig.new()
var new_user = UserConfig.new()
new_user.save()
return new_user


func resolve_null():
var default = UserConfig.new()
for value in get_property_list():
if get(value["name"]) == null and default.get(value["name"]) != null:
set(value["name"], default.get(value["name"]))
save()


func save():
Expand Down
22 changes: 1 addition & 21 deletions project/addons/net.yarvis.pixel_pen/editor/edit_canvas_size.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[ext_resource type="Script" path="res://addons/net.yarvis.pixel_pen/editor/edit_canvas_size/edit_canvas_size.gd" id="1_skqr0"]
[ext_resource type="Script" path="res://addons/net.yarvis.pixel_pen/editor/edit_canvas_size/anchor_view.gd" id="2_8mnh6"]

[node name="EditCanvasSize" type="ConfirmationDialog" node_paths=PackedStringArray("width_node", "height_node", "checker_size_node")]
[node name="EditCanvasSize" type="ConfirmationDialog" node_paths=PackedStringArray("width_node", "height_node")]
title = "Canvas Size"
initial_position = 1
size = Vector2i(520, 240)
Expand All @@ -13,7 +13,6 @@ theme = ExtResource("1_be7me")
script = ExtResource("1_skqr0")
width_node = NodePath("Control/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/LineEditW")
height_node = NodePath("Control/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer2/LineEditH")
checker_size_node = NodePath("Control/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer3/LineEditChecker")
anchor = 1

[node name="Control" type="Control" parent="."]
Expand Down Expand Up @@ -82,25 +81,6 @@ virtual_keyboard_type = 2
layout_mode = 2
text = "px"

[node name="HBoxContainer3" type="HBoxContainer" parent="Control/MarginContainer/HBoxContainer/VBoxContainer"]
layout_mode = 2

[node name="Label" type="Label" parent="Control/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer3"]
custom_minimum_size = Vector2(70, 0)
layout_mode = 2
text = "Checker"

[node name="LineEditChecker" type="LineEdit" parent="Control/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer3"]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "1"
alignment = 2
virtual_keyboard_type = 2

[node name="Label2" type="Label" parent="Control/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer3"]
layout_mode = 2
text = "px"

[node name="MarginContainer" type="MarginContainer" parent="Control/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ extends ConfirmationDialog

@export var width_node : LineEdit
@export var height_node : LineEdit
@export var checker_size_node : LineEdit
@export var anchor : PixelPen.ResizeAnchor

var canvas_width : float:
Expand All @@ -19,12 +18,6 @@ var canvas_height : float:
get:
return max(1, height_node.text as float)

var checker_size : int:
set(v):
checker_size_node.text = str(v)
get:
return max(1, checker_size_node.text as int)

func _init():
add_to_group("pixelpen_popup")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ func pan(offset : Vector2):


func update_background_shader_state():
background_canvas.material.set_shader_parameter("tile_size", Vector2.ONE * (PixelPen.current_project as PixelPenProject).checker_size )
background_canvas.material.set_shader_parameter("tile_size", PixelPen.userconfig.checker_size )
background_canvas.visible = true


Expand Down Expand Up @@ -317,10 +317,10 @@ func _draw():
_symetric_guid_color_horizontal.a = 0.75
canvas_paint.tool.draw_plus_cursor(get_local_mouse_position(), 15)
if PixelPen.current_project != null and PixelPen.current_project.show_grid :
_draw_grid(1, 0.07)
_draw_grid(8, 0.075)
_draw_grid(16, 0.1)
_draw_grid(32, 0.125)
_draw_grid(Vector2i.ONE, 0.07)
_draw_grid(PixelPen.userconfig.default_grid_size, 0.075)
_draw_grid(PixelPen.userconfig.default_grid_size * 2, 0.1)
_draw_grid(PixelPen.userconfig.default_grid_size * 4, 0.125)
if PixelPen.current_project != null:
_draw_symetric_guid()
if PixelPen.current_project != null and PixelPen.current_project.show_tile:
Expand Down Expand Up @@ -372,12 +372,12 @@ func start_drag_virtual_mouse_from(mouse_pos : Vector2):
virtual_mouse_offset = mouse_pos - virtual_mouse_origin


func _draw_grid(grid_size : int, alpha : float):
func _draw_grid(grid_size : Vector2i, alpha : float):
var color = Color(1, 1, 1, alpha)
for x in range(1 + canvas_size.x / grid_size):
draw_line(Vector2(x * grid_size, 0), Vector2(x * grid_size, canvas_size.y), color)
for y in range(1 + canvas_size.y / grid_size):
draw_line(Vector2(0, y * grid_size), Vector2(canvas_size.x, y * grid_size), color)
for x in range(1 + canvas_size.x / grid_size.x):
draw_line(Vector2(x * grid_size.x, 0), Vector2(x * grid_size.x, canvas_size.y), color)
for y in range(1 + canvas_size.y / grid_size.y):
draw_line(Vector2(0, y * grid_size.y), Vector2(canvas_size.x, y * grid_size.y), color)


func _draw_symetric_guid():
Expand Down
Loading

0 comments on commit 68a7c5e

Please sign in to comment.