123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- extends Panel
- onready var brush_settings = $BrushSettings
- onready var label_brush_size = brush_settings.get_node(@"LabelBrushSize")
- onready var label_brush_shape = brush_settings.get_node(@"LabelBrushShape")
- onready var label_stats = $LabelStats
- onready var label_tools = $LabelTools
- onready var _parent = get_parent()
- onready var save_dialog = _parent.get_node(@"SaveFileDialog")
- onready var paint_control = _parent.get_node(@"PaintControl")
- func _ready():
- # warning-ignore-all:return_value_discarded
- # Assign all of the needed signals for the oppersation buttons.
- $ButtonUndo.connect("pressed", self, "button_pressed", ["undo_stroke"])
- $ButtonSave.connect("pressed", self, "button_pressed", ["save_picture"])
- $ButtonClear.connect("pressed", self, "button_pressed", ["clear_picture"])
- # Assign all of the needed signals for the brush buttons.
- $ButtonToolPencil.connect("pressed", self, "button_pressed", ["mode_pencil"])
- $ButtonToolEraser.connect("pressed", self, "button_pressed", ["mode_eraser"])
- $ButtonToolRectangle.connect("pressed", self, "button_pressed", ["mode_rectangle"])
- $ButtonToolCircle.connect("pressed", self, "button_pressed", ["mode_circle"])
- $BrushSettings/ButtonShapeBox.connect("pressed", self, "button_pressed", ["shape_rectangle"])
- $BrushSettings/ButtonShapeCircle.connect("pressed", self, "button_pressed", ["shape_circle"])
- # Assign all of the needed signals for the other brush settings (and ColorPickerBackground).
- $ColorPickerBrush.connect("color_changed", self, "brush_color_changed")
- $ColorPickerBackground.connect("color_changed", self, "background_color_changed")
- $BrushSettings/HScrollBarBrushSize.connect("value_changed", self, "brush_size_changed")
- # Assign the "file_selected" signal in SaveFileDialog.
- save_dialog.connect("file_selected", self, "save_file_selected")
- # Set physics process so we can update the status label.
- set_physics_process(true)
- func _physics_process(_delta):
- # Update the status label with the newest brush element count.
- label_stats.text = "Brush objects: " + String(paint_control.brush_data_list.size())
- func button_pressed(button_name):
- # If a brush mode button is pressed.
- var tool_name = null
- var shape_name = null
- if button_name == "mode_pencil":
- paint_control.brush_mode = paint_control.BrushModes.PENCIL
- brush_settings.modulate = Color(1, 1, 1, 1)
- tool_name = "Pencil"
- elif button_name == "mode_eraser":
- paint_control.brush_mode = paint_control.BrushModes.ERASER
- brush_settings.modulate = Color(1, 1, 1, 1)
- tool_name = "Eraser"
- elif button_name == "mode_rectangle":
- paint_control.brush_mode = paint_control.BrushModes.RECTANGLE_SHAPE
- brush_settings.modulate = Color(1, 1, 1, 0.5)
- tool_name = "Rectangle shape"
- elif button_name == "mode_circle":
- paint_control.brush_mode = paint_control.BrushModes.CIRCLE_SHAPE
- brush_settings.modulate = Color(1, 1, 1, 0.5)
- tool_name = "Circle shape"
- # If a brush shape button is pressed
- elif button_name == "shape_rectangle":
- paint_control.brush_shape = paint_control.BrushShapes.RECTANGLE
- shape_name = "Rectangle"
- elif button_name == "shape_circle":
- paint_control.brush_shape = paint_control.BrushShapes.CIRCLE
- shape_name = "Circle";
- # If a opperation button is pressed
- elif button_name == "clear_picture":
- paint_control.brush_data_list = []
- paint_control.update()
- elif button_name == "save_picture":
- save_dialog.popup_centered()
- elif button_name == "undo_stroke":
- paint_control.undo_stroke()
- # Update the labels (in case the brush mode or brush shape has changed).
- if tool_name != null:
- label_tools.text = "Selected tool: " + tool_name
- if shape_name != null:
- label_brush_shape.text = "Brush shape: " + shape_name
- func brush_color_changed(color):
- # Change the brush color to whatever color the color picker is.
- paint_control.brush_color = color
- func background_color_changed(color):
- # Change the background color to whatever colorthe background color picker is.
- get_parent().get_node("DrawingAreaBG").modulate = color
- paint_control.bg_color = color
- # Because of how the eraser works we also need to redraw the paint control.
- paint_control.update()
- func brush_size_changed(value):
- # Change the size of the brush, and update the label to reflect the new value.
- paint_control.brush_size = ceil(value)
- label_brush_size.text = "Brush size: " + String(ceil(value)) + "px"
- func save_file_selected(path):
- # Call save_picture in paint_control, passing in the path we recieved from SaveFileDialog.
- paint_control.save_picture(path)
|