mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-23 04:16:50 +01:00
Added a slider for the brush size property into PaintToolsPropertyInspector.
This commit is contained in:
parent
8c8dc051cb
commit
12193b03f4
@ -25,20 +25,22 @@ SOFTWARE.
|
||||
#include "scene/gui/box_container.h"
|
||||
#include "scene/gui/button.h"
|
||||
#include "scene/gui/flow_container.h"
|
||||
#include "scene/gui/label.h"
|
||||
#include "scene/gui/slider.h"
|
||||
#include "scene/gui/texture_button.h"
|
||||
|
||||
#include "../../bush_prefabs.h"
|
||||
#include "../../paint_icons/icons.h"
|
||||
#include "scene/resources/style_box.h"
|
||||
#include "scene/resources/texture.h"
|
||||
#include "../../paint_icons/icons.h"
|
||||
#include "../../bush_prefabs.h"
|
||||
|
||||
#include "../../nodes/paint_canvas.h"
|
||||
#include "../../nodes/paint_node.h"
|
||||
#include "../../nodes/paint_project.h"
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
#include "editor/editor_node.h"
|
||||
#include "core/config/engine.h"
|
||||
#include "editor/editor_node.h"
|
||||
#endif
|
||||
|
||||
void PaintToolsPropertyInspector::add_button(int id, const String &hint, const String &icon, const String &theme_type) {
|
||||
@ -60,7 +62,7 @@ void PaintToolsPropertyInspector::add_button(int id, const String &hint, const S
|
||||
button->set_toggle_mode(true);
|
||||
button->set_button_group(_group);
|
||||
button->set_meta("button_id", id);
|
||||
button->connect("toggled", this, "on_button_toggled", varray(id));
|
||||
button->connect("toggled", this, "_on_button_toggled", varray(id));
|
||||
|
||||
_grid->add_child(button);
|
||||
}
|
||||
@ -84,11 +86,14 @@ void PaintToolsPropertyInspector::_on_paint_node_selected(Node *p_paint_node) {
|
||||
_paint_canvas = paint_canvas->get_instance_id();
|
||||
|
||||
_on_tool_changed();
|
||||
_on_brush_size_changed();
|
||||
|
||||
paint_canvas->connect("current_tool_changed", this, "_on_tool_changed");
|
||||
paint_canvas->connect("brush_size_changed", this, "_on_brush_size_changed");
|
||||
}
|
||||
|
||||
PaintToolsPropertyInspector::PaintToolsPropertyInspector() {
|
||||
_ignore_signal = false;
|
||||
_paint_canvas = 0;
|
||||
_group.instance();
|
||||
|
||||
@ -120,12 +125,30 @@ PaintToolsPropertyInspector::PaintToolsPropertyInspector() {
|
||||
add_brush_prefab(BrushPrefabs::CIRCLE, PaintIcons::make_icon_brush_circle_png(), PaintIcons::make_icon_brush_circle_hovered_png());
|
||||
add_brush_prefab(BrushPrefabs::V_LINE, PaintIcons::make_icon_brush_v_line_png(), PaintIcons::make_icon_brush_v_line_hovered_png());
|
||||
add_brush_prefab(BrushPrefabs::H_LINE, PaintIcons::make_icon_brush_h_line_png(), PaintIcons::make_icon_brush_h_line_hovered_png());
|
||||
|
||||
HBoxContainer *brush_size_container = memnew(HBoxContainer);
|
||||
box_container->add_child(brush_size_container);
|
||||
brush_size_container->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
|
||||
_brush_size_label = memnew(Label);
|
||||
brush_size_container->add_child(_brush_size_label);
|
||||
_brush_size_label->set_text("1");
|
||||
|
||||
_brush_size_slider = memnew(HSlider);
|
||||
brush_size_container->add_child(_brush_size_slider);
|
||||
_brush_size_slider->set_min(1);
|
||||
_brush_size_slider->set_max(100);
|
||||
_brush_size_slider->set_use_rounded_values(true);
|
||||
_brush_size_slider->set_value(1);
|
||||
_brush_size_slider->set_allow_greater(true);
|
||||
_brush_size_slider->connect("value_changed", this, "_on_brush_size_slider_value_changed");
|
||||
_brush_size_slider->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
}
|
||||
|
||||
PaintToolsPropertyInspector::~PaintToolsPropertyInspector() {
|
||||
}
|
||||
|
||||
void PaintToolsPropertyInspector::on_button_toggled(bool on, int id) {
|
||||
void PaintToolsPropertyInspector::_on_button_toggled(bool on, int id) {
|
||||
if (!on) {
|
||||
return;
|
||||
}
|
||||
@ -168,8 +191,35 @@ void PaintToolsPropertyInspector::_on_brush_prefab_button_pressed(const int id)
|
||||
paint_canvas->set_brush_prefab(id);
|
||||
}
|
||||
|
||||
void PaintToolsPropertyInspector::_on_brush_size_slider_value_changed(const float value) {
|
||||
PaintCanvas *paint_canvas = Object::cast_to<PaintCanvas>(ObjectDB::get_instance(_paint_canvas));
|
||||
|
||||
ERR_FAIL_COND(!paint_canvas);
|
||||
|
||||
_ignore_signal = true;
|
||||
paint_canvas->set_brush_size(static_cast<int>(value));
|
||||
_ignore_signal = false;
|
||||
|
||||
_brush_size_label->set_text(itos(paint_canvas->get_brush_size()));
|
||||
}
|
||||
|
||||
void PaintToolsPropertyInspector::_on_brush_size_changed() {
|
||||
if (_ignore_signal) {
|
||||
return;
|
||||
}
|
||||
|
||||
PaintCanvas *paint_canvas = Object::cast_to<PaintCanvas>(ObjectDB::get_instance(_paint_canvas));
|
||||
|
||||
ERR_FAIL_COND(!paint_canvas);
|
||||
|
||||
_brush_size_slider->set_value(paint_canvas->get_brush_size());
|
||||
_brush_size_label->set_text(itos(paint_canvas->get_brush_size()));
|
||||
}
|
||||
|
||||
void PaintToolsPropertyInspector::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("on_button_toggled"), &PaintToolsPropertyInspector::on_button_toggled);
|
||||
ClassDB::bind_method(D_METHOD("_on_button_toggled"), &PaintToolsPropertyInspector::_on_button_toggled);
|
||||
ClassDB::bind_method(D_METHOD("_on_tool_changed"), &PaintToolsPropertyInspector::_on_tool_changed);
|
||||
ClassDB::bind_method(D_METHOD("_on_brush_prefab_button_pressed"), &PaintToolsPropertyInspector::_on_brush_prefab_button_pressed);
|
||||
ClassDB::bind_method(D_METHOD("_on_brush_size_slider_value_changed"), &PaintToolsPropertyInspector::_on_brush_size_slider_value_changed);
|
||||
ClassDB::bind_method(D_METHOD("_on_brush_size_changed"), &PaintToolsPropertyInspector::_on_brush_size_changed);
|
||||
}
|
||||
|
@ -32,6 +32,8 @@ class PaintNode;
|
||||
class PaintCanvas;
|
||||
class PaintProject;
|
||||
class ButtonGroup;
|
||||
class HSlider;
|
||||
class Label;
|
||||
|
||||
class PaintToolsPropertyInspector : public PaintCustomPropertyInspector {
|
||||
GDCLASS(PaintToolsPropertyInspector, PaintCustomPropertyInspector);
|
||||
@ -46,18 +48,24 @@ public:
|
||||
~PaintToolsPropertyInspector();
|
||||
|
||||
protected:
|
||||
void on_button_toggled(bool on, int id);
|
||||
void _on_button_toggled(bool on, int id);
|
||||
void _on_tool_changed();
|
||||
void _on_brush_prefab_button_pressed(const int id);
|
||||
void _on_brush_size_slider_value_changed(const float value);
|
||||
void _on_brush_size_changed();
|
||||
|
||||
static void _bind_methods();
|
||||
|
||||
HFlowContainer *_grid;
|
||||
HFlowContainer *_brush_prefabs;
|
||||
HSlider *_brush_size_slider;
|
||||
Label *_brush_size_label;
|
||||
|
||||
ObjectID _paint_canvas;
|
||||
|
||||
Ref<ButtonGroup> _group;
|
||||
|
||||
bool _ignore_signal;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user