1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-18 17:19:50 +00:00

Import image file as part of a random brush

The random brush gets loaded only if Pixelorama gets restarted. I'll see if I can change this somehow.
This commit is contained in:
OverloadedOrama 2020-07-14 03:33:01 +03:00
parent 1b561220b2
commit c6ccbd4868
2 changed files with 68 additions and 16 deletions

View file

@ -9,6 +9,7 @@ var image : Image
var current_import_option : int = ImageImportOptions.NEW_TAB
var spritesheet_horizontal := 1
var spritesheet_vertical := 1
var brush_type : int = BrushTypes.FILE
onready var texture_rect : TextureRect = $VBoxContainer/CenterContainer/TextureRect
onready var image_size_label : Label = $VBoxContainer/SizeContainer/ImageSizeLabel
@ -17,6 +18,7 @@ onready var spritesheet_options = $VBoxContainer/HBoxContainer/SpritesheetOption
onready var new_frame_options = $VBoxContainer/HBoxContainer/NewFrameOptions
onready var new_layer_options = $VBoxContainer/HBoxContainer/NewLayerOptions
onready var new_brush_options = $VBoxContainer/HBoxContainer/NewBrushOptions
onready var new_brush_name = $VBoxContainer/HBoxContainer/NewBrushOptions/BrushName
func _on_PreviewDialog_about_to_show() -> void:
@ -57,8 +59,7 @@ func _on_PreviewDialog_confirmed() -> void:
Global.palette_container.import_image_palette(path, image)
elif current_import_option == ImageImportOptions.BRUSH:
var brush_type_option : int = new_brush_options.get_node("BrushTypeOption").selected
add_brush(brush_type_option)
add_brush()
elif current_import_option == ImageImportOptions.PATTERN:
var file_name_ext : String = path.get_file()
@ -155,9 +156,16 @@ func spritesheet_frame_value_changed(value : int, vertical : bool) -> void:
frame_size_label.text = tr("Frame Size") + ": " + str(frame_width) + "×" + str(frame_height)
func add_brush(type : int) -> void:
func _on_BrushTypeOption_item_selected(index : int) -> void:
brush_type = index
new_brush_name.visible = false
if brush_type == BrushTypes.RANDOM:
new_brush_name.visible = true
func add_brush() -> void:
image.convert(Image.FORMAT_RGBA8)
if type == BrushTypes.FILE:
if brush_type == BrushTypes.FILE:
var file_name_ext : String = path.get_file()
file_name_ext = file_name_replace(file_name_ext, "Brushes")
var file_name : String = file_name_ext.get_basename()
@ -169,11 +177,37 @@ func add_brush(type : int) -> void:
var dir = Directory.new()
dir.copy(path, Global.directory_module.xdg_data_home.plus_file(location))
elif type == BrushTypes.PROJECT:
elif brush_type == BrushTypes.PROJECT:
var file_name : String = path.get_file().get_basename()
Global.current_project.brushes.append(image)
Brushes.add_project_brush(image, file_name)
elif brush_type == BrushTypes.RANDOM:
var brush_name = new_brush_name.get_node("BrushNameLineEdit").text.to_lower()
if !brush_name.is_valid_filename():
return
var dir := Directory.new()
dir.open(Global.directory_module.xdg_data_home.plus_file("Brushes"))
if !dir.dir_exists(brush_name):
dir.make_dir(brush_name)
dir.open(Global.directory_module.xdg_data_home.plus_file("Brushes").plus_file(brush_name))
var random_brushes := []
dir.list_dir_begin()
var curr_file := dir.get_next()
while curr_file != "":
print(curr_file)
if curr_file.begins_with("%") and brush_name in curr_file:
random_brushes.append(curr_file)
curr_file = dir.get_next()
dir.list_dir_end()
var file_ext : String = path.get_file().get_extension()
var index : int = random_brushes.size() + 1
var file_name = "%" + brush_name + str(index) + "." + file_ext
var location := "Brushes".plus_file(brush_name).plus_file(file_name)
dir.copy(path, Global.directory_module.xdg_data_home.plus_file(location))
# Checks if the file already exists
# If it does, add a number to its name, for example

View file

@ -26,15 +26,15 @@ __meta__ = {
}
[node name="CenterContainer" type="CenterContainer" parent="VBoxContainer"]
margin_right = 706.0
margin_right = 534.0
margin_bottom = 300.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TextureRect" type="TextureRect" parent="VBoxContainer/CenterContainer"]
margin_left = 203.0
margin_right = 503.0
margin_left = 117.0
margin_right = 417.0
margin_bottom = 300.0
rect_min_size = Vector2( 300, 300 )
expand = true
@ -49,7 +49,7 @@ __meta__ = {
[node name="SizeContainer" type="HBoxContainer" parent="VBoxContainer"]
margin_top = 304.0
margin_right = 706.0
margin_right = 534.0
margin_bottom = 318.0
custom_constants/separation = 32
@ -67,7 +67,7 @@ text = "Frame size: 64×64"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
margin_top = 322.0
margin_right = 706.0
margin_right = 534.0
margin_bottom = 342.0
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"]
@ -163,26 +163,44 @@ value = 1.0
[node name="NewBrushOptions" type="HBoxContainer" parent="VBoxContainer/HBoxContainer"]
visible = false
margin_left = 155.0
margin_right = 324.0
margin_bottom = 20.0
margin_right = 471.0
margin_bottom = 24.0
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/NewBrushOptions"]
margin_top = 3.0
margin_top = 5.0
margin_right = 73.0
margin_bottom = 17.0
margin_bottom = 19.0
text = "Brush type:"
[node name="BrushTypeOption" type="OptionButton" parent="VBoxContainer/HBoxContainer/NewBrushOptions"]
margin_left = 77.0
margin_right = 169.0
margin_bottom = 20.0
margin_bottom = 24.0
mouse_default_cursor_shape = 2
text = "File brush"
items = [ "File brush", null, false, 0, null, "Project brush", null, false, 1, null, "Random brush", null, true, 2, null ]
items = [ "File brush", null, false, 0, null, "Project brush", null, false, 1, null, "Random brush", null, false, 2, null ]
selected = 0
[node name="BrushName" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/NewBrushOptions"]
visible = false
margin_left = 173.0
margin_right = 316.0
margin_bottom = 24.0
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/NewBrushOptions/BrushName"]
margin_top = 5.0
margin_right = 81.0
margin_bottom = 19.0
text = "Brush name:"
[node name="BrushNameLineEdit" type="LineEdit" parent="VBoxContainer/HBoxContainer/NewBrushOptions/BrushName"]
margin_left = 85.0
margin_right = 143.0
margin_bottom = 24.0
[connection signal="about_to_show" from="." to="." method="_on_PreviewDialog_about_to_show"]
[connection signal="confirmed" from="." to="." method="_on_PreviewDialog_confirmed"]
[connection signal="popup_hide" from="." to="." method="_on_PreviewDialog_popup_hide"]
[connection signal="item_selected" from="VBoxContainer/HBoxContainer/ImportOption" to="." method="_on_ImportOption_item_selected"]
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/SpritesheetOptions/HorizontalFrames" to="." method="_on_HorizontalFrames_value_changed"]
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/SpritesheetOptions/VerticalFrames" to="." method="_on_VerticalFrames_value_changed"]
[connection signal="item_selected" from="VBoxContainer/HBoxContainer/NewBrushOptions/BrushTypeOption" to="." method="_on_BrushTypeOption_item_selected"]