diff --git a/modules/material_maker/editor/widgets/color_picker_button/color_picker_button.cpp b/modules/material_maker/editor/widgets/color_picker_button/color_picker_button.cpp new file mode 100644 index 000000000..dd3508bd1 --- /dev/null +++ b/modules/material_maker/editor/widgets/color_picker_button/color_picker_button.cpp @@ -0,0 +1,44 @@ + +#include "color_picker_button.h" + + + + //tool; + + void ColorPickerButton::get_drag_data(const Variant &_position) { + Variant = ColorRect.new(); + preview.color = color; + preview.rect_min_size = Vector2(32, 32); + set_drag_preview(preview); + return color; +} + + + bool ColorPickerButton::can_drop_data(const Variant &_position, const Variant & data) { + return typeof(data) == TYPE_COLOR; +} + + + void ColorPickerButton::drop_data(const Variant &_position, const Variant & data) { + color = data; + emit_signal("color_changed", color); +} + +} + + ColorPickerButton::ColorPickerButton() { + } + + ColorPickerButton::~ColorPickerButton() { + } + + + static void ColorPickerButton::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_drag_data", "_position"), &ColorPickerButton::get_drag_data); + ClassDB::bind_method(D_METHOD("can_drop_data", "_position", " data"), &ColorPickerButton::can_drop_data); + ClassDB::bind_method(D_METHOD("drop_data", "_position", " data"), &ColorPickerButton::drop_data); + + } + + + diff --git a/modules/material_maker/editor/widgets/color_picker_button/color_picker_button.h b/modules/material_maker/editor/widgets/color_picker_button/color_picker_button.h new file mode 100644 index 000000000..4077867ae --- /dev/null +++ b/modules/material_maker/editor/widgets/color_picker_button/color_picker_button.h @@ -0,0 +1,24 @@ +#ifndef COLOR_PICKER_BUTTON_H +#define COLOR_PICKER_BUTTON_H + + +class ColorPickerButton : public ColorPickerButton { + GDCLASS(ColorPickerButton, ColorPickerButton); + + public: + + void get_drag_data(const Variant &_position); + bool can_drop_data(const Variant &_position, const Variant & data); + void drop_data(const Variant &_position, const Variant & data); + + ColorPickerButton(); + ~ColorPickerButton(); + + protected: + static void _bind_methods(); + + //tool +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/color_picker_popup/color_picker_popup.ctscn b/modules/material_maker/editor/widgets/color_picker_popup/color_picker_popup.ctscn new file mode 100644 index 000000000..86b710543 --- /dev/null +++ b/modules/material_maker/editor/widgets/color_picker_popup/color_picker_popup.ctscn @@ -0,0 +1,798 @@ + +void construct() { + +PopupPanel *colorpickerpopup = memnew(PopupPanel); +colorpickerpopup->set_name("ColorPickerPopup"); + +colorpickerpopup->set_name("ColorPickerPopup"); +//colorpickerpopup->set("name", ColorPickerPopup)); + +colorpickerpopup->set_filename("res://addons/mat_maker_gd/widgets/color_picker_popup/color_picker_popup.tscn"); +//colorpickerpopup->set("filename", "res://addons/mat_maker_gd/widgets/color_picker_popup/color_picker_popup.tscn"); + +colorpickerpopup->set_margin_right(316); +//colorpickerpopup->set("margin_right", 316); + +colorpickerpopup->set_margin_bottom(470); +//colorpickerpopup->set("margin_bottom", 470); + +colorpickerpopup->set_rect_size(Vector2(316, 470)); +//colorpickerpopup->set("rect_size", Vector2(316, 470)); + + + +ColorPicker *colorpicker_colorpickerpopup = memnew(ColorPicker); +colorpicker_colorpickerpopup->set_name("ColorPicker"); +colorpickerpopup->add_child(colorpicker_colorpickerpopup); + +colorpicker_colorpickerpopup->set_name("ColorPicker"); +//colorpicker_colorpickerpopup->set("name", ColorPicker)); + +//colorpicker_colorpickerpopup property owner TYPE_OBJECT value: ColorPickerPopup:[PopupPanel:62683] + +colorpicker_colorpickerpopup->set_margin_left(8); +//colorpicker_colorpickerpopup->set("margin_left", 8); + +colorpicker_colorpickerpopup->set_margin_top(8); +//colorpicker_colorpickerpopup->set("margin_top", 8); + +colorpicker_colorpickerpopup->set_margin_right(316); +//colorpicker_colorpickerpopup->set("margin_right", 316); + +colorpicker_colorpickerpopup->set_margin_bottom(470); +//colorpicker_colorpickerpopup->set("margin_bottom", 470); + +colorpicker_colorpickerpopup->set_rect_position(Vector2(8, 8)); +//colorpicker_colorpickerpopup->set("rect_position", Vector2(8, 8)); + +colorpicker_colorpickerpopup->set_rect_global_position(Vector2(8, 8)); +//colorpicker_colorpickerpopup->set("rect_global_position", Vector2(8, 8)); + +colorpicker_colorpickerpopup->set_rect_size(Vector2(308, 462)); +//colorpicker_colorpickerpopup->set("rect_size", Vector2(308, 462)); + +//colorpicker_colorpickerpopup property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +HBoxContainer *hboxcontainer_colorpicker_colorpickerpopup = memnew(HBoxContainer); +hboxcontainer_colorpicker_colorpickerpopup->set_name("HBoxContainer"); +colorpicker_colorpickerpopup->add_child(hboxcontainer_colorpicker_colorpickerpopup); + +hboxcontainer_colorpicker_colorpickerpopup->set_name("HBoxContainer"); +//hboxcontainer_colorpicker_colorpickerpopup->set("name", HBoxContainer)); + +hboxcontainer_colorpicker_colorpickerpopup->set_size_flags_vertical(3); +//hboxcontainer_colorpicker_colorpickerpopup->set("size_flags_vertical", 3); + + + +Control *control_hboxcontainer_colorpicker_colorpickerpopup = memnew(Control); +control_hboxcontainer_colorpicker_colorpickerpopup->set_name("Control"); +hboxcontainer_colorpicker_colorpickerpopup->add_child(control_hboxcontainer_colorpicker_colorpickerpopup); + +control_hboxcontainer_colorpicker_colorpickerpopup->set_name("Control"); +//control_hboxcontainer_colorpicker_colorpickerpopup->set("name", Control)); + +control_hboxcontainer_colorpicker_colorpickerpopup->set_rect_min_size(Vector2(256, 256)); +//control_hboxcontainer_colorpicker_colorpickerpopup->set("rect_min_size", Vector2(256, 256)); + +control_hboxcontainer_colorpicker_colorpickerpopup->set_mouse_filter(1); +//control_hboxcontainer_colorpicker_colorpickerpopup->set("mouse_filter", 1); + +control_hboxcontainer_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//control_hboxcontainer_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + +control_hboxcontainer_colorpicker_colorpickerpopup->set_size_flags_vertical(3); +//control_hboxcontainer_colorpicker_colorpickerpopup->set("size_flags_vertical", 3); + + + +Control *control2_hboxcontainer_colorpicker_colorpickerpopup = memnew(Control); +control2_hboxcontainer_colorpicker_colorpickerpopup->set_name("Control2"); +hboxcontainer_colorpicker_colorpickerpopup->add_child(control2_hboxcontainer_colorpicker_colorpickerpopup); + +control2_hboxcontainer_colorpicker_colorpickerpopup->set_name("Control2"); +//control2_hboxcontainer_colorpicker_colorpickerpopup->set("name", Control2)); + +control2_hboxcontainer_colorpicker_colorpickerpopup->set_rect_min_size(Vector2(30, 0)); +//control2_hboxcontainer_colorpicker_colorpickerpopup->set("rect_min_size", Vector2(30, 0)); + +control2_hboxcontainer_colorpicker_colorpickerpopup->set_size_flags_vertical(3); +//control2_hboxcontainer_colorpicker_colorpickerpopup->set("size_flags_vertical", 3); + + + +HBoxContainer *hboxcontainer2_colorpicker_colorpickerpopup = memnew(HBoxContainer); +hboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer2"); +colorpicker_colorpickerpopup->add_child(hboxcontainer2_colorpicker_colorpickerpopup); + +hboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer2"); +//hboxcontainer2_colorpicker_colorpickerpopup->set("name", HBoxContainer2)); + + + +TextureRect *texturerect_hboxcontainer2_colorpicker_colorpickerpopup = memnew(TextureRect); +texturerect_hboxcontainer2_colorpicker_colorpickerpopup->set_name("TextureRect"); +hboxcontainer2_colorpicker_colorpickerpopup->add_child(texturerect_hboxcontainer2_colorpicker_colorpickerpopup); + +texturerect_hboxcontainer2_colorpicker_colorpickerpopup->set_name("TextureRect"); +//texturerect_hboxcontainer2_colorpicker_colorpickerpopup->set("name", TextureRect)); + +texturerect_hboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//texturerect_hboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + + + +ToolButton *toolbutton_hboxcontainer2_colorpicker_colorpickerpopup = memnew(ToolButton); +toolbutton_hboxcontainer2_colorpicker_colorpickerpopup->set_name("ToolButton"); +hboxcontainer2_colorpicker_colorpickerpopup->add_child(toolbutton_hboxcontainer2_colorpicker_colorpickerpopup); + +toolbutton_hboxcontainer2_colorpicker_colorpickerpopup->set_name("ToolButton"); +//toolbutton_hboxcontainer2_colorpicker_colorpickerpopup->set("name", ToolButton)); + +toolbutton_hboxcontainer2_colorpicker_colorpickerpopup->set_hint_tooltip("Pick a color from the editor window."); +//toolbutton_hboxcontainer2_colorpicker_colorpickerpopup->set("hint_tooltip", "Pick a color from the editor window."); + +toolbutton_hboxcontainer2_colorpicker_colorpickerpopup->set_toggle_mode(True); +//toolbutton_hboxcontainer2_colorpicker_colorpickerpopup->set("toggle_mode", True); + + + +VBoxContainer *vboxcontainer_colorpicker_colorpickerpopup = memnew(VBoxContainer); +vboxcontainer_colorpicker_colorpickerpopup->set_name("VBoxContainer"); +colorpicker_colorpickerpopup->add_child(vboxcontainer_colorpicker_colorpickerpopup); + +vboxcontainer_colorpicker_colorpickerpopup->set_name("VBoxContainer"); +//vboxcontainer_colorpicker_colorpickerpopup->set("name", VBoxContainer)); + + + +HSeparator *hseparator_colorpicker_colorpickerpopup = memnew(HSeparator); +hseparator_colorpicker_colorpickerpopup->set_name("HSeparator"); +colorpicker_colorpickerpopup->add_child(hseparator_colorpicker_colorpickerpopup); + +hseparator_colorpicker_colorpickerpopup->set_name("HSeparator"); +//hseparator_colorpicker_colorpickerpopup->set("name", HSeparator)); + + + +VBoxContainer *vboxcontainer2_colorpicker_colorpickerpopup = memnew(VBoxContainer); +vboxcontainer2_colorpicker_colorpickerpopup->set_name("VBoxContainer2"); +colorpicker_colorpickerpopup->add_child(vboxcontainer2_colorpicker_colorpickerpopup); + +vboxcontainer2_colorpicker_colorpickerpopup->set_name("VBoxContainer2"); +//vboxcontainer2_colorpicker_colorpickerpopup->set("name", VBoxContainer2)); + +vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + + + +HBoxContainer *hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HBoxContainer); +hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer"); +vboxcontainer2_colorpicker_colorpickerpopup->add_child(hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer"); +//hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HBoxContainer)); + + + +Label *label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Label); +label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Label"); +hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->add_child(label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Label"); +//label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Label)); + +label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_min_size(Vector2(10, 0)); +//label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_min_size", Vector2(10, 0)); + +label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_text("R"); +//label_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "R"); + + + +HSlider *hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HSlider); +hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HSlider"); +hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->add_child(hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HSlider"); +//hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HSlider)); + +hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_focus_mode(0); +//hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("focus_mode", 0); + +hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + +hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_vertical(4); +//hslider_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_vertical", 4); + + + +SpinBox *spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(SpinBox); +spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("SpinBox"); +hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->add_child(spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("SpinBox"); +//spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", SpinBox)); + + + +LineEdit *lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(LineEdit); +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->add_child(lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +//lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", LineEdit)); + +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_anchor_right(1); +//lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("anchor_right", 1); + +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_anchor_bottom(1); +//lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("anchor_bottom", 1); + +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_size(Vector2(58, 24)); +//lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_size", Vector2(58, 24)); + +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_mouse_filter(1); +//lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("mouse_filter", 1); + +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_text("0"); +//lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "0"); + + + +Timer *timer_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.65); +//timer_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(PopupMenu); +popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->add_child(popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +//popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", PopupMenu)); + +//popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.3); +//timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.3); + +timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_one_shot(True); +//timer_popupmenu_lineedit_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("one_shot", True); + + + +Timer *timer_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_spinbox_hboxcontainer_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + + + +HBoxContainer *hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HBoxContainer); +hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer2"); +vboxcontainer2_colorpicker_colorpickerpopup->add_child(hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer2"); +//hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HBoxContainer2)); + + + +Label *label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Label); +label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Label"); +hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->add_child(label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Label"); +//label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Label)); + +label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_min_size(Vector2(10, 0)); +//label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_min_size", Vector2(10, 0)); + +label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_text("G"); +//label_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "G"); + + + +HSlider *hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HSlider); +hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HSlider"); +hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->add_child(hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HSlider"); +//hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HSlider)); + +hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_focus_mode(0); +//hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("focus_mode", 0); + +hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + +hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_vertical(4); +//hslider_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_vertical", 4); + + + +SpinBox *spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(SpinBox); +spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("SpinBox"); +hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->add_child(spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("SpinBox"); +//spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", SpinBox)); + + + +LineEdit *lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(LineEdit); +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->add_child(lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +//lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", LineEdit)); + +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_anchor_right(1); +//lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("anchor_right", 1); + +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_anchor_bottom(1); +//lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("anchor_bottom", 1); + +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_size(Vector2(58, 24)); +//lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_size", Vector2(58, 24)); + +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_mouse_filter(1); +//lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("mouse_filter", 1); + +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_text("0"); +//lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "0"); + + + +Timer *timer_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.65); +//timer_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(PopupMenu); +popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->add_child(popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +//popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", PopupMenu)); + +//popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.3); +//timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.3); + +timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_one_shot(True); +//timer_popupmenu_lineedit_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("one_shot", True); + + + +Timer *timer_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_spinbox_hboxcontainer2_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + + + +HBoxContainer *hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HBoxContainer); +hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer3"); +vboxcontainer2_colorpicker_colorpickerpopup->add_child(hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer3"); +//hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HBoxContainer3)); + + + +Label *label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Label); +label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Label"); +hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->add_child(label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Label"); +//label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Label)); + +label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_min_size(Vector2(10, 0)); +//label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_min_size", Vector2(10, 0)); + +label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_text("B"); +//label_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "B"); + + + +HSlider *hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HSlider); +hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HSlider"); +hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->add_child(hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HSlider"); +//hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HSlider)); + +hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_focus_mode(0); +//hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("focus_mode", 0); + +hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + +hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_vertical(4); +//hslider_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_vertical", 4); + + + +SpinBox *spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(SpinBox); +spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("SpinBox"); +hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->add_child(spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("SpinBox"); +//spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", SpinBox)); + + + +LineEdit *lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(LineEdit); +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->add_child(lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +//lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", LineEdit)); + +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_anchor_right(1); +//lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("anchor_right", 1); + +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_anchor_bottom(1); +//lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("anchor_bottom", 1); + +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_size(Vector2(58, 24)); +//lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_size", Vector2(58, 24)); + +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_mouse_filter(1); +//lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("mouse_filter", 1); + +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_text("0"); +//lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "0"); + + + +Timer *timer_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.65); +//timer_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(PopupMenu); +popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->add_child(popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +//popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", PopupMenu)); + +//popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.3); +//timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.3); + +timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_one_shot(True); +//timer_popupmenu_lineedit_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("one_shot", True); + + + +Timer *timer_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_spinbox_hboxcontainer3_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + + + +HBoxContainer *hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HBoxContainer); +hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer4"); +vboxcontainer2_colorpicker_colorpickerpopup->add_child(hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer4"); +//hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HBoxContainer4)); + + + +Label *label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Label); +label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Label"); +hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->add_child(label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Label"); +//label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Label)); + +label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_min_size(Vector2(10, 0)); +//label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_min_size", Vector2(10, 0)); + +label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_text("A"); +//label_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "A"); + + + +HSlider *hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HSlider); +hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HSlider"); +hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->add_child(hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HSlider"); +//hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HSlider)); + +hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_focus_mode(0); +//hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("focus_mode", 0); + +hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + +hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_vertical(4); +//hslider_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_vertical", 4); + + + +SpinBox *spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(SpinBox); +spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("SpinBox"); +hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->add_child(spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("SpinBox"); +//spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", SpinBox)); + + + +LineEdit *lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(LineEdit); +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->add_child(lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +//lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", LineEdit)); + +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_anchor_right(1); +//lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("anchor_right", 1); + +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_anchor_bottom(1); +//lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("anchor_bottom", 1); + +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_size(Vector2(58, 24)); +//lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_size", Vector2(58, 24)); + +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_mouse_filter(1); +//lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("mouse_filter", 1); + +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_text("0"); +//lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "0"); + + + +Timer *timer_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.65); +//timer_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(PopupMenu); +popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->add_child(popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +//popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", PopupMenu)); + +//popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.3); +//timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.3); + +timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_one_shot(True); +//timer_popupmenu_lineedit_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("one_shot", True); + + + +Timer *timer_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_spinbox_hboxcontainer4_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + + + +HBoxContainer *hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup = memnew(HBoxContainer); +hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer5"); +vboxcontainer2_colorpicker_colorpickerpopup->add_child(hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup); + +hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("HBoxContainer5"); +//hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("name", HBoxContainer5)); + + + +CheckButton *checkbutton_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup = memnew(CheckButton); +checkbutton_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("CheckButton"); +hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->add_child(checkbutton_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup); + +checkbutton_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("CheckButton"); +//checkbutton_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("name", CheckButton)); + +checkbutton_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_text("HSV"); +//checkbutton_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "HSV"); + + + +CheckButton *checkbutton2_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup = memnew(CheckButton); +checkbutton2_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("CheckButton2"); +hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->add_child(checkbutton2_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup); + +checkbutton2_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("CheckButton2"); +//checkbutton2_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("name", CheckButton2)); + +checkbutton2_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_text("Raw"); +//checkbutton2_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "Raw"); + + + +Button *button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Button); +button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Button"); +hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->add_child(button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup); + +button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Button"); +//button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Button)); + +button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_rect_min_size(Vector2(28, 0)); +//button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("rect_min_size", Vector2(28, 0)); + +button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_hint_tooltip("Switch between hexadecimal and code values."); +//button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("hint_tooltip", "Switch between hexadecimal and code values."); + +button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_text("#"); +//button_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("text", "#"); + + + +LineEdit *lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup = memnew(LineEdit); +lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->add_child(lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup); + +lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("LineEdit"); +//lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("name", LineEdit)); + +lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + + + +Timer *timer_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.65); +//timer_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup = memnew(PopupMenu); +popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->add_child(popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup); + +popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("PopupMenu"); +//popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("name", PopupMenu)); + +//popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup = memnew(Timer); +timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->add_child(timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup); + +timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_name("Timer"); +//timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("name", Timer)); + +timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_wait_time(0.3); +//timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("wait_time", 0.3); + +timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set_one_shot(True); +//timer_popupmenu_lineedit_hboxcontainer5_vboxcontainer2_colorpicker_colorpickerpopup->set("one_shot", True); + + + +HSeparator *hseparator2_colorpicker_colorpickerpopup = memnew(HSeparator); +hseparator2_colorpicker_colorpickerpopup->set_name("HSeparator2"); +colorpicker_colorpickerpopup->add_child(hseparator2_colorpicker_colorpickerpopup); + +hseparator2_colorpicker_colorpickerpopup->set_name("HSeparator2"); +//hseparator2_colorpicker_colorpickerpopup->set("name", HSeparator2)); + + + +GridContainer *gridcontainer_colorpicker_colorpickerpopup = memnew(GridContainer); +gridcontainer_colorpicker_colorpickerpopup->set_name("GridContainer"); +colorpicker_colorpickerpopup->add_child(gridcontainer_colorpicker_colorpickerpopup); + +gridcontainer_colorpicker_colorpickerpopup->set_name("GridContainer"); +//gridcontainer_colorpicker_colorpickerpopup->set("name", GridContainer)); + +gridcontainer_colorpicker_colorpickerpopup->set_size_flags_horizontal(3); +//gridcontainer_colorpicker_colorpickerpopup->set("size_flags_horizontal", 3); + +gridcontainer_colorpicker_colorpickerpopup->set_columns(10); +//gridcontainer_colorpicker_colorpickerpopup->set("columns", 10); + + + +Button *button_gridcontainer_colorpicker_colorpickerpopup = memnew(Button); +button_gridcontainer_colorpicker_colorpickerpopup->set_name("Button"); +gridcontainer_colorpicker_colorpickerpopup->add_child(button_gridcontainer_colorpicker_colorpickerpopup); + +button_gridcontainer_colorpicker_colorpickerpopup->set_name("Button"); +//button_gridcontainer_colorpicker_colorpickerpopup->set("name", Button)); + +button_gridcontainer_colorpicker_colorpickerpopup->set_hint_tooltip("Add current color as a preset."); +//button_gridcontainer_colorpicker_colorpickerpopup->set("hint_tooltip", "Add current color as a preset."); + + + + +} diff --git a/modules/material_maker/editor/widgets/curve_edit/control_point.cpp b/modules/material_maker/editor/widgets/curve_edit/control_point.cpp new file mode 100644 index 000000000..db605191a --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/control_point.cpp @@ -0,0 +1,233 @@ + +#include "control_point.h" + + +Variant ControlPoint::get_Variant() { + return Variant; +} + +void ControlPoint::set_Variant(const Variant &val) { +Variant = val; +} + + +bool ControlPoint::get_moving() const { + return moving; +} + +void ControlPoint::set_moving(const bool val) { +moving = val; +} + + +float ControlPoint::get_min_x() const { + return min_x; +} + +void ControlPoint::set_min_x(const float val) { +min_x = val; +} + + +float ControlPoint::get_max_x() const { + return max_x; +} + +void ControlPoint::set_max_x(const float val) { +max_x = val; +} + + +float ControlPoint::get_min_y() const { + return min_y; +} + +void ControlPoint::set_min_y(const float val) { +min_y = val; +} + + +float ControlPoint::get_max_y() const { + return max_y; +} + +void ControlPoint::set_max_y(const float val) { +max_y = val; +} + + + + //tool; + //var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + bool moving = false; + float min_x = ; + float max_x = ; + float min_y = ; + float max_y = ; + const OFFSET : Vector2 = Vector2(3, 3); + signal moved(index); + signal removed(index); + + void ControlPoint::_ready() { + // Replace with function body.; + pass; +} + + + void ControlPoint::_draw() { + // var current_theme : Theme = get_node("/root/MainWindow").theme; + // var color : Color = current_theme.get_color("font_color", "Label"); + Color color = Color(1, 1, 1, 1); + + for (c in get_children()) { + + if (c.visible) { + draw_line(OFFSET, c.rect_position+OFFSET, color); +} + +} + + draw_rect(Rect2(0, 0, 7, 7), color); +} + + //p : MMCurve.Point; + + void ControlPoint::initialize(const Variant &p) { + rect_position = get_parent().transform_point(p.p)-OFFSET; + + if (p.ls != INF) { + $LeftSlope.rect_position = $LeftSlope.distance*(get_parent().rect_size*Vector2(1.0, -p.ls)).normalized(); +} + + + if (p.rs != INF) { + $RightSlope.rect_position = $RightSlope.distance*(get_parent().rect_size*Vector2(1.0, -p.rs)).normalized(); +} + +} + + + void ControlPoint::set_constraint(const float x, const float X, const float y, const float Y) { + min_x = x; + max_x = X; + min_y = y; + max_y = Y; +} + + + void ControlPoint::_on_ControlPoint_gui_input(const Variant &event) { + + if (event is InputEventMouseButton) { + + if (event.button_index == BUTTON_LEFT) { + + if (event.pressed) { + moving = true; +} + + + else { + moving = false; + get_parent().update_controls(); +} + +} + + + else if (event.button_index == BUTTON_RIGHT && event.pressed) { + emit_signal("removed", get_index()); +} + +} + + + else if (moving && event is InputEventMouseMotion) { + rect_position += event.relative; + + if (rect_position.x < min_x) { + rect_position.x = min_x; +} + + + else if (rect_position.x > max_x) { + rect_position.x = max_x; +} + + + if (rect_position.y < min_y) { + rect_position.y = min_y; +} + + + else if (rect_position.y > max_y) { + rect_position.y = max_y; +} + + emit_signal("moved", get_index()); +} + +} + + + void ControlPoint::update_tangents() { + update(); + emit_signal("moved", get_index()); +} + +} + + ControlPoint::ControlPoint() { + //var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + moving = false; + min_x = ; + max_x = ; + min_y = ; + max_y = ; + } + + ControlPoint::~ControlPoint() { + } + + + static void ControlPoint::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &ControlPoint::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &ControlPoint::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_moving"), &ControlPoint::get_moving); + ClassDB::bind_method(D_METHOD("set_moving", "value"), &ControlPoint::set_moving); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "moving"), "set_moving", "get_moving"); + + + ClassDB::bind_method(D_METHOD("get_min_x"), &ControlPoint::get_min_x); + ClassDB::bind_method(D_METHOD("set_min_x", "value"), &ControlPoint::set_min_x); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "min_x"), "set_min_x", "get_min_x"); + + + ClassDB::bind_method(D_METHOD("get_max_x"), &ControlPoint::get_max_x); + ClassDB::bind_method(D_METHOD("set_max_x", "value"), &ControlPoint::set_max_x); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "max_x"), "set_max_x", "get_max_x"); + + + ClassDB::bind_method(D_METHOD("get_min_y"), &ControlPoint::get_min_y); + ClassDB::bind_method(D_METHOD("set_min_y", "value"), &ControlPoint::set_min_y); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "min_y"), "set_min_y", "get_min_y"); + + + ClassDB::bind_method(D_METHOD("get_max_y"), &ControlPoint::get_max_y); + ClassDB::bind_method(D_METHOD("set_max_y", "value"), &ControlPoint::set_max_y); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "max_y"), "set_max_y", "get_max_y"); + + + ClassDB::bind_method(D_METHOD("_ready"), &ControlPoint::_ready); + ClassDB::bind_method(D_METHOD("_draw"), &ControlPoint::_draw); + ClassDB::bind_method(D_METHOD("initialize", "p"), &ControlPoint::initialize); + ClassDB::bind_method(D_METHOD("set_constraint", "x", "X", "y", "Y"), &ControlPoint::set_constraint); + ClassDB::bind_method(D_METHOD("_on_ControlPoint_gui_input", "event"), &ControlPoint::_on_ControlPoint_gui_input); + ClassDB::bind_method(D_METHOD("update_tangents"), &ControlPoint::update_tangents); + + } + + + diff --git a/modules/material_maker/editor/widgets/curve_edit/control_point.ctscn b/modules/material_maker/editor/widgets/curve_edit/control_point.ctscn new file mode 100644 index 000000000..772ca2f0b --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/control_point.ctscn @@ -0,0 +1,116 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/control_point.gd +Control *controlpoint = memnew(Control); +controlpoint->set_name("ControlPoint"); + +controlpoint->set_name("ControlPoint"); +//controlpoint->set("name", ControlPoint)); + +controlpoint->set_filename("res://addons/mat_maker_gd/widgets/curve_edit/control_point.tscn"); +//controlpoint->set("filename", "res://addons/mat_maker_gd/widgets/curve_edit/control_point.tscn"); + +controlpoint->set_margin_left(56.986401); +//controlpoint->set("margin_left", 56.986401); + +controlpoint->set_margin_top(33.8615); +//controlpoint->set("margin_top", 33.8615); + +controlpoint->set_margin_right(63.986401); +//controlpoint->set("margin_right", 63.986401); + +controlpoint->set_margin_bottom(40.8615); +//controlpoint->set("margin_bottom", 40.8615); + +controlpoint->set_rect_position(Vector2(56.986401, 33.8615)); +//controlpoint->set("rect_position", Vector2(56.986401, 33.8615)); + +controlpoint->set_rect_global_position(Vector2(56.986401, 33.8615)); +//controlpoint->set("rect_global_position", Vector2(56.986401, 33.8615)); + +controlpoint->set_rect_size(Vector2(7, 7)); +//controlpoint->set("rect_size", Vector2(7, 7)); + +controlpoint->set_rect_min_size(Vector2(7, 7)); +//controlpoint->set("rect_min_size", Vector2(7, 7)); + +//controlpoint property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/slope_point.gd +Control *leftslope_controlpoint = memnew(Control); +leftslope_controlpoint->set_name("LeftSlope"); +controlpoint->add_child(leftslope_controlpoint); + +leftslope_controlpoint->set_name("LeftSlope"); +//leftslope_controlpoint->set("name", LeftSlope)); + +//leftslope_controlpoint property owner TYPE_OBJECT value: ControlPoint:[Control:59789] + +leftslope_controlpoint->set_margin_left(-18.5235); +//leftslope_controlpoint->set("margin_left", -18.5235); + +leftslope_controlpoint->set_margin_right(-11.5235); +//leftslope_controlpoint->set("margin_right", -11.5235); + +leftslope_controlpoint->set_margin_bottom(7); +//leftslope_controlpoint->set("margin_bottom", 7); + +leftslope_controlpoint->set_rect_position(Vector2(-18.5235, 0)); +//leftslope_controlpoint->set("rect_position", Vector2(-18.5235, 0)); + +leftslope_controlpoint->set_rect_global_position(Vector2(-18.5235, 0)); +//leftslope_controlpoint->set("rect_global_position", Vector2(-18.5235, 0)); + +leftslope_controlpoint->set_rect_size(Vector2(7, 7)); +//leftslope_controlpoint->set("rect_size", Vector2(7, 7)); + +leftslope_controlpoint->set_rect_min_size(Vector2(7, 7)); +//leftslope_controlpoint->set("rect_min_size", Vector2(7, 7)); + +//leftslope_controlpoint property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + +leftslope_controlpoint->set_distance(-30); +//leftslope_controlpoint->set("distance", -30); + + + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/slope_point.gd +Control *rightslope_controlpoint = memnew(Control); +rightslope_controlpoint->set_name("RightSlope"); +controlpoint->add_child(rightslope_controlpoint); + +rightslope_controlpoint->set_name("RightSlope"); +//rightslope_controlpoint->set("name", RightSlope)); + +//rightslope_controlpoint property owner TYPE_OBJECT value: ControlPoint:[Control:59789] + +rightslope_controlpoint->set_margin_left(15.6919); +//rightslope_controlpoint->set("margin_left", 15.6919); + +rightslope_controlpoint->set_margin_right(22.6919); +//rightslope_controlpoint->set("margin_right", 22.6919); + +rightslope_controlpoint->set_margin_bottom(7); +//rightslope_controlpoint->set("margin_bottom", 7); + +rightslope_controlpoint->set_rect_position(Vector2(15.6919, 0)); +//rightslope_controlpoint->set("rect_position", Vector2(15.6919, 0)); + +rightslope_controlpoint->set_rect_global_position(Vector2(15.6919, 0)); +//rightslope_controlpoint->set("rect_global_position", Vector2(15.6919, 0)); + +rightslope_controlpoint->set_rect_size(Vector2(7, 7)); +//rightslope_controlpoint->set("rect_size", Vector2(7, 7)); + +//rightslope_controlpoint property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + +rightslope_controlpoint->set_distance(30); +//rightslope_controlpoint->set("distance", 30); + + + + +} diff --git a/modules/material_maker/editor/widgets/curve_edit/control_point.h b/modules/material_maker/editor/widgets/curve_edit/control_point.h new file mode 100644 index 000000000..eea1836c4 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/control_point.h @@ -0,0 +1,55 @@ +#ifndef CONTROL_POINT_H +#define CONTROL_POINT_H + + +class ControlPoint : public Control { + GDCLASS(ControlPoint, Control); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + bool get_moving() const; + void set_moving(const bool val); + + float get_min_x() const; + void set_min_x(const float val); + + float get_max_x() const; + void set_max_x(const float val); + + float get_min_y() const; + void set_min_y(const float val); + + float get_max_y() const; + void set_max_y(const float val); + + void _ready(); + void _draw(); + void initialize(const Variant &p); + void set_constraint(const float x, const float X, const float y, const float Y); + void _on_ControlPoint_gui_input(const Variant &event); + void update_tangents(); + + ControlPoint(); + ~ControlPoint(); + + protected: + static void _bind_methods(); + + //tool + Variant = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + bool moving = false; + float min_x = ; + float max_x = ; + float min_y = ; + float max_y = ; + const OFFSET : Vector2 = Vector2(3, 3); + signal moved(index); + signal removed(index); + //p : MMCurve.Point +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_dialog.cpp b/modules/material_maker/editor/widgets/curve_edit/curve_dialog.cpp new file mode 100644 index 000000000..286d1532f --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_dialog.cpp @@ -0,0 +1,115 @@ + +#include "curve_dialog.h" + + +Variant CurveDialog::get_Variant() { + return Variant; +} + +void CurveDialog::set_Variant(const Variant &val) { +Variant = val; +} + + +Array CurveDialog::get_previous_points() { + return previous_points; +} + +void CurveDialog::set_previous_points(const Array &val) { +previous_points = val; +} + + +Variant CurveDialog::get_Variant() { + return Variant; +} + +void CurveDialog::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + //var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + Array previous_points = ; + Variant ; + signal curve_changed(curve); + // Called when the node enters the scene tree for the first time.; + + void CurveDialog::_ready() { + // Replace with function body.; + pass; +} + + + void CurveDialog::_on_CurveDialog_popup_hide() { + queue_free(); +} + + + void CurveDialog::_on_OK_pressed() { + emit_signal("curve_changed", curve); + curve.curve_changed(); + queue_free(); +} + + + void CurveDialog::_on_Cancel_pressed() { + curve.set_points(previous_points); + emit_signal("curve_changed", curve); + queue_free(); +} + + + void CurveDialog::edit_curve(const Variant &c) { + curve = c; + previous_points = curve.get_points(); + $VBoxContainer/EditorContainer/CurveEditor.set_curve(curve); + popup_centered(); +} + + + void CurveDialog::_on_CurveEditor_value_changed(const Variant &value) { + emit_signal("curve_changed", value); +} + +} + + CurveDialog::CurveDialog() { + //var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + previous_points = ; + ; + } + + CurveDialog::~CurveDialog() { + } + + + static void CurveDialog::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &CurveDialog::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &CurveDialog::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_previous_points"), &CurveDialog::get_previous_points); + ClassDB::bind_method(D_METHOD("set_previous_points", "value"), &CurveDialog::set_previous_points); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "previous_points"), "set_previous_points", "get_previous_points"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &CurveDialog::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &CurveDialog::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("_ready"), &CurveDialog::_ready); + ClassDB::bind_method(D_METHOD("_on_CurveDialog_popup_hide"), &CurveDialog::_on_CurveDialog_popup_hide); + ClassDB::bind_method(D_METHOD("_on_OK_pressed"), &CurveDialog::_on_OK_pressed); + ClassDB::bind_method(D_METHOD("_on_Cancel_pressed"), &CurveDialog::_on_Cancel_pressed); + ClassDB::bind_method(D_METHOD("edit_curve", "c"), &CurveDialog::edit_curve); + ClassDB::bind_method(D_METHOD("_on_CurveEditor_value_changed", "value"), &CurveDialog::_on_CurveEditor_value_changed); + + } + + + diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_dialog.ctscn b/modules/material_maker/editor/widgets/curve_edit/curve_dialog.ctscn new file mode 100644 index 000000000..a4abfe543 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_dialog.ctscn @@ -0,0 +1,328 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/curve_dialog.gd +WindowDialog *curvedialog = memnew(WindowDialog); +curvedialog->set_name("CurveDialog"); + +curvedialog->set_name("CurveDialog"); +//curvedialog->set("name", CurveDialog)); + +curvedialog->set_filename("res://addons/mat_maker_gd/widgets/curve_edit/curve_dialog.tscn"); +//curvedialog->set("filename", "res://addons/mat_maker_gd/widgets/curve_edit/curve_dialog.tscn"); + +curvedialog->set_anchor_right(1); +//curvedialog->set("anchor_right", 1); + +curvedialog->set_anchor_bottom(1); +//curvedialog->set("anchor_bottom", 1); + +curvedialog->set_margin_left(307); +//curvedialog->set("margin_left", 307); + +curvedialog->set_margin_top(151); +//curvedialog->set("margin_top", 151); + +curvedialog->set_margin_right(-347); +//curvedialog->set("margin_right", -347); + +curvedialog->set_margin_bottom(-174); +//curvedialog->set("margin_bottom", -174); + +curvedialog->set_rect_position(Vector2(307, 151)); +//curvedialog->set("rect_position", Vector2(307, 151)); + +curvedialog->set_rect_global_position(Vector2(307, 151)); +//curvedialog->set("rect_global_position", Vector2(307, 151)); + +curvedialog->set_rect_size(Vector2(0, 1)); +//curvedialog->set("rect_size", Vector2(0, 1)); + +curvedialog->set_window_title("Edit curve"); +//curvedialog->set("window_title", "Edit curve"); + +//curvedialog property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +TextureButton *texturebutton_curvedialog = memnew(TextureButton); +texturebutton_curvedialog->set_name("TextureButton"); +curvedialog->add_child(texturebutton_curvedialog); + +texturebutton_curvedialog->set_name("TextureButton"); +//texturebutton_curvedialog->set("name", TextureButton)); + + + +VBoxContainer *vboxcontainer_curvedialog = memnew(VBoxContainer); +vboxcontainer_curvedialog->set_name("VBoxContainer"); +curvedialog->add_child(vboxcontainer_curvedialog); + +vboxcontainer_curvedialog->set_name("VBoxContainer"); +//vboxcontainer_curvedialog->set("name", VBoxContainer)); + +//vboxcontainer_curvedialog property owner TYPE_OBJECT value: CurveDialog:[WindowDialog:59762] + +vboxcontainer_curvedialog->set_anchor_right(1); +//vboxcontainer_curvedialog->set("anchor_right", 1); + +vboxcontainer_curvedialog->set_anchor_bottom(1); +//vboxcontainer_curvedialog->set("anchor_bottom", 1); + +vboxcontainer_curvedialog->set_margin_left(5); +//vboxcontainer_curvedialog->set("margin_left", 5); + +vboxcontainer_curvedialog->set_margin_top(5); +//vboxcontainer_curvedialog->set("margin_top", 5); + +vboxcontainer_curvedialog->set_margin_right(-5); +//vboxcontainer_curvedialog->set("margin_right", -5); + +vboxcontainer_curvedialog->set_margin_bottom(-5); +//vboxcontainer_curvedialog->set("margin_bottom", -5); + +vboxcontainer_curvedialog->set_rect_position(Vector2(5, 5)); +//vboxcontainer_curvedialog->set("rect_position", Vector2(5, 5)); + +vboxcontainer_curvedialog->set_rect_global_position(Vector2(5, 5)); +//vboxcontainer_curvedialog->set("rect_global_position", Vector2(5, 5)); + +//vboxcontainer_curvedialog property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +MarginContainer *editorcontainer_vboxcontainer_curvedialog = memnew(MarginContainer); +editorcontainer_vboxcontainer_curvedialog->set_name("EditorContainer"); +vboxcontainer_curvedialog->add_child(editorcontainer_vboxcontainer_curvedialog); + +editorcontainer_vboxcontainer_curvedialog->set_name("EditorContainer"); +//editorcontainer_vboxcontainer_curvedialog->set("name", EditorContainer)); + +//editorcontainer_vboxcontainer_curvedialog property owner TYPE_OBJECT value: CurveDialog:[WindowDialog:59762] + +editorcontainer_vboxcontainer_curvedialog->set_margin_right(616); +//editorcontainer_vboxcontainer_curvedialog->set("margin_right", 616); + +editorcontainer_vboxcontainer_curvedialog->set_margin_bottom(353); +//editorcontainer_vboxcontainer_curvedialog->set("margin_bottom", 353); + +editorcontainer_vboxcontainer_curvedialog->set_rect_size(Vector2(616, 353)); +//editorcontainer_vboxcontainer_curvedialog->set("rect_size", Vector2(616, 353)); + +editorcontainer_vboxcontainer_curvedialog->set_rect_clip_content(True); +//editorcontainer_vboxcontainer_curvedialog->set("rect_clip_content", True); + +editorcontainer_vboxcontainer_curvedialog->set_size_flags_horizontal(3); +//editorcontainer_vboxcontainer_curvedialog->set("size_flags_horizontal", 3); + +editorcontainer_vboxcontainer_curvedialog->set_size_flags_vertical(3); +//editorcontainer_vboxcontainer_curvedialog->set("size_flags_vertical", 3); + +editorcontainer_vboxcontainer_curvedialog->set_custom_constants/margin_right(4); +//editorcontainer_vboxcontainer_curvedialog->set("custom_constants/margin_right", 4); + +editorcontainer_vboxcontainer_curvedialog->set_custom_constants/margin_top(4); +//editorcontainer_vboxcontainer_curvedialog->set("custom_constants/margin_top", 4); + +editorcontainer_vboxcontainer_curvedialog->set_custom_constants/margin_left(4); +//editorcontainer_vboxcontainer_curvedialog->set("custom_constants/margin_left", 4); + +editorcontainer_vboxcontainer_curvedialog->set_custom_constants/margin_bottom(4); +//editorcontainer_vboxcontainer_curvedialog->set("custom_constants/margin_bottom", 4); + + + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/curve_editor.gd +Control *curveeditor_editorcontainer_vboxcontainer_curvedialog = memnew(Control); +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_name("CurveEditor"); +editorcontainer_vboxcontainer_curvedialog->add_child(curveeditor_editorcontainer_vboxcontainer_curvedialog); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_name("CurveEditor"); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("name", CurveEditor)); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_filename("res://addons/mat_maker_gd/widgets/curve_edit/curve_editor.tscn"); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("filename", "res://addons/mat_maker_gd/widgets/curve_edit/curve_editor.tscn"); + +//curveeditor_editorcontainer_vboxcontainer_curvedialog property owner TYPE_OBJECT value: CurveDialog:[WindowDialog:59762] + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_margin_left(4); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("margin_left", 4); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_margin_top(4); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("margin_top", 4); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_margin_right(612); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("margin_right", 612); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_margin_bottom(349); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("margin_bottom", 349); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_rect_position(Vector2(4, 4)); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("rect_position", Vector2(4, 4)); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_rect_global_position(Vector2(4, 4)); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("rect_global_position", Vector2(4, 4)); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_rect_size(Vector2(608, 345)); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("rect_size", Vector2(608, 345)); + +curveeditor_editorcontainer_vboxcontainer_curvedialog->set_size_flags_vertical(3); +//curveeditor_editorcontainer_vboxcontainer_curvedialog->set("size_flags_vertical", 3); + +//curveeditor_editorcontainer_vboxcontainer_curvedialog property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +HSeparator *hseparator_vboxcontainer_curvedialog = memnew(HSeparator); +hseparator_vboxcontainer_curvedialog->set_name("HSeparator"); +vboxcontainer_curvedialog->add_child(hseparator_vboxcontainer_curvedialog); + +hseparator_vboxcontainer_curvedialog->set_name("HSeparator"); +//hseparator_vboxcontainer_curvedialog->set("name", HSeparator)); + +//hseparator_vboxcontainer_curvedialog property owner TYPE_OBJECT value: CurveDialog:[WindowDialog:59762] + +hseparator_vboxcontainer_curvedialog->set_margin_top(357); +//hseparator_vboxcontainer_curvedialog->set("margin_top", 357); + +hseparator_vboxcontainer_curvedialog->set_margin_right(616); +//hseparator_vboxcontainer_curvedialog->set("margin_right", 616); + +hseparator_vboxcontainer_curvedialog->set_margin_bottom(361); +//hseparator_vboxcontainer_curvedialog->set("margin_bottom", 361); + +hseparator_vboxcontainer_curvedialog->set_rect_position(Vector2(0, 357)); +//hseparator_vboxcontainer_curvedialog->set("rect_position", Vector2(0, 357)); + +hseparator_vboxcontainer_curvedialog->set_rect_global_position(Vector2(0, 357)); +//hseparator_vboxcontainer_curvedialog->set("rect_global_position", Vector2(0, 357)); + +hseparator_vboxcontainer_curvedialog->set_rect_size(Vector2(616, 4)); +//hseparator_vboxcontainer_curvedialog->set("rect_size", Vector2(616, 4)); + + + +HBoxContainer *hboxcontainer_vboxcontainer_curvedialog = memnew(HBoxContainer); +hboxcontainer_vboxcontainer_curvedialog->set_name("HBoxContainer"); +vboxcontainer_curvedialog->add_child(hboxcontainer_vboxcontainer_curvedialog); + +hboxcontainer_vboxcontainer_curvedialog->set_name("HBoxContainer"); +//hboxcontainer_vboxcontainer_curvedialog->set("name", HBoxContainer)); + +//hboxcontainer_vboxcontainer_curvedialog property owner TYPE_OBJECT value: CurveDialog:[WindowDialog:59762] + +hboxcontainer_vboxcontainer_curvedialog->set_margin_top(365); +//hboxcontainer_vboxcontainer_curvedialog->set("margin_top", 365); + +hboxcontainer_vboxcontainer_curvedialog->set_margin_right(616); +//hboxcontainer_vboxcontainer_curvedialog->set("margin_right", 616); + +hboxcontainer_vboxcontainer_curvedialog->set_margin_bottom(385); +//hboxcontainer_vboxcontainer_curvedialog->set("margin_bottom", 385); + +hboxcontainer_vboxcontainer_curvedialog->set_rect_position(Vector2(0, 365)); +//hboxcontainer_vboxcontainer_curvedialog->set("rect_position", Vector2(0, 365)); + +hboxcontainer_vboxcontainer_curvedialog->set_rect_global_position(Vector2(0, 365)); +//hboxcontainer_vboxcontainer_curvedialog->set("rect_global_position", Vector2(0, 365)); + +hboxcontainer_vboxcontainer_curvedialog->set_rect_size(Vector2(616, 20)); +//hboxcontainer_vboxcontainer_curvedialog->set("rect_size", Vector2(616, 20)); + + + +Control *control_hboxcontainer_vboxcontainer_curvedialog = memnew(Control); +control_hboxcontainer_vboxcontainer_curvedialog->set_name("Control"); +hboxcontainer_vboxcontainer_curvedialog->add_child(control_hboxcontainer_vboxcontainer_curvedialog); + +control_hboxcontainer_vboxcontainer_curvedialog->set_name("Control"); +//control_hboxcontainer_vboxcontainer_curvedialog->set("name", Control)); + +//control_hboxcontainer_vboxcontainer_curvedialog property owner TYPE_OBJECT value: CurveDialog:[WindowDialog:59762] + +control_hboxcontainer_vboxcontainer_curvedialog->set_margin_right(488); +//control_hboxcontainer_vboxcontainer_curvedialog->set("margin_right", 488); + +control_hboxcontainer_vboxcontainer_curvedialog->set_margin_bottom(20); +//control_hboxcontainer_vboxcontainer_curvedialog->set("margin_bottom", 20); + +control_hboxcontainer_vboxcontainer_curvedialog->set_rect_size(Vector2(488, 20)); +//control_hboxcontainer_vboxcontainer_curvedialog->set("rect_size", Vector2(488, 20)); + +control_hboxcontainer_vboxcontainer_curvedialog->set_size_flags_horizontal(3); +//control_hboxcontainer_vboxcontainer_curvedialog->set("size_flags_horizontal", 3); + + + +Button *ok_hboxcontainer_vboxcontainer_curvedialog = memnew(Button); +ok_hboxcontainer_vboxcontainer_curvedialog->set_name("OK"); +hboxcontainer_vboxcontainer_curvedialog->add_child(ok_hboxcontainer_vboxcontainer_curvedialog); + +ok_hboxcontainer_vboxcontainer_curvedialog->set_name("OK"); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("name", OK)); + +//ok_hboxcontainer_vboxcontainer_curvedialog property owner TYPE_OBJECT value: CurveDialog:[WindowDialog:59762] + +ok_hboxcontainer_vboxcontainer_curvedialog->set_margin_left(492); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("margin_left", 492); + +ok_hboxcontainer_vboxcontainer_curvedialog->set_margin_right(552); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("margin_right", 552); + +ok_hboxcontainer_vboxcontainer_curvedialog->set_margin_bottom(20); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("margin_bottom", 20); + +ok_hboxcontainer_vboxcontainer_curvedialog->set_rect_position(Vector2(492, 0)); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("rect_position", Vector2(492, 0)); + +ok_hboxcontainer_vboxcontainer_curvedialog->set_rect_global_position(Vector2(492, 0)); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("rect_global_position", Vector2(492, 0)); + +ok_hboxcontainer_vboxcontainer_curvedialog->set_rect_size(Vector2(60, 20)); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("rect_size", Vector2(60, 20)); + +ok_hboxcontainer_vboxcontainer_curvedialog->set_rect_min_size(Vector2(60, 0)); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("rect_min_size", Vector2(60, 0)); + +ok_hboxcontainer_vboxcontainer_curvedialog->set_text("OK"); +//ok_hboxcontainer_vboxcontainer_curvedialog->set("text", "OK"); + + + +Button *cancel_hboxcontainer_vboxcontainer_curvedialog = memnew(Button); +cancel_hboxcontainer_vboxcontainer_curvedialog->set_name("Cancel"); +hboxcontainer_vboxcontainer_curvedialog->add_child(cancel_hboxcontainer_vboxcontainer_curvedialog); + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_name("Cancel"); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("name", Cancel)); + +//cancel_hboxcontainer_vboxcontainer_curvedialog property owner TYPE_OBJECT value: CurveDialog:[WindowDialog:59762] + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_margin_left(556); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("margin_left", 556); + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_margin_right(616); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("margin_right", 616); + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_margin_bottom(20); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("margin_bottom", 20); + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_rect_position(Vector2(556, 0)); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("rect_position", Vector2(556, 0)); + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_rect_global_position(Vector2(556, 0)); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("rect_global_position", Vector2(556, 0)); + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_rect_size(Vector2(60, 20)); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("rect_size", Vector2(60, 20)); + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_rect_min_size(Vector2(60, 0)); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("rect_min_size", Vector2(60, 0)); + +cancel_hboxcontainer_vboxcontainer_curvedialog->set_text("Cancel"); +//cancel_hboxcontainer_vboxcontainer_curvedialog->set("text", "Cancel"); + + + + +} diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_dialog.h b/modules/material_maker/editor/widgets/curve_edit/curve_dialog.h new file mode 100644 index 000000000..d54530b80 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_dialog.h @@ -0,0 +1,41 @@ +#ifndef CURVE_DIALOG_H +#define CURVE_DIALOG_H + + +class CurveDialog : public WindowDialog { + GDCLASS(CurveDialog, WindowDialog); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + Array get_previous_points(); + void set_previous_points(const Array &val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + void _ready(); + void _on_CurveDialog_popup_hide(); + void _on_OK_pressed(); + void _on_Cancel_pressed(); + void edit_curve(const Variant &c); + void _on_CurveEditor_value_changed(const Variant &value); + + CurveDialog(); + ~CurveDialog(); + + protected: + static void _bind_methods(); + + //tool + Variant = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + Array previous_points = ; + Variant ; + signal curve_changed(curve); + // Called when the node enters the scene tree for the first time. +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_edit.cpp b/modules/material_maker/editor/widgets/curve_edit/curve_edit.cpp new file mode 100644 index 000000000..c6e2c9bea --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_edit.cpp @@ -0,0 +1,80 @@ + +#include "curve_edit.h" + + +Variant CurveEdit::get_Variant() { + return Variant; +} + +void CurveEdit::set_Variant(const Variant &val) { +Variant = val; +} + + +Variant CurveEdit::get_Variant() { + return Variant; +} + +void CurveEdit::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + //var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + // setget set_value; + Variant = null; + signal updated(curve); + + void CurveEdit::set_value(const Variant &v) { + value = v; + $CurveView.set_curve(value); + $CurveView.update(); +} + + + void CurveEdit::_on_CurveEdit_pressed() { + //var dialog = preload("res://addons/mat_maker_gd/widgets/curve_edit/curve_dialog.tscn").instance(); + add_child(dialog); + dialog.connect("curve_changed", self, "on_value_changed"); + dialog.edit_curve(value); +} + + + void CurveEdit::on_value_changed(const Variant &v) { + //set_value(v); + emit_signal("updated", v); + $CurveView.update(); +} + +} + + CurveEdit::CurveEdit() { + //var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + = null; + } + + CurveEdit::~CurveEdit() { + } + + + static void CurveEdit::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &CurveEdit::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &CurveEdit::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &CurveEdit::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &CurveEdit::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("set_value", "v"), &CurveEdit::set_value); + ClassDB::bind_method(D_METHOD("_on_CurveEdit_pressed"), &CurveEdit::_on_CurveEdit_pressed); + ClassDB::bind_method(D_METHOD("on_value_changed", "v"), &CurveEdit::on_value_changed); + + } + + + diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_edit.ctscn b/modules/material_maker/editor/widgets/curve_edit/curve_edit.ctscn new file mode 100644 index 000000000..a2c489929 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_edit.ctscn @@ -0,0 +1,96 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/curve_edit.gd +Button *curveedit = memnew(Button); +curveedit->set_name("CurveEdit"); + +curveedit->set_name("CurveEdit"); +//curveedit->set("name", CurveEdit)); + +curveedit->set_filename("res://addons/mat_maker_gd/widgets/curve_edit/curve_edit.tscn"); +//curveedit->set("filename", "res://addons/mat_maker_gd/widgets/curve_edit/curve_edit.tscn"); + +curveedit->set_anchor_left(1); +//curveedit->set("anchor_left", 1); + +curveedit->set_anchor_right(1); +//curveedit->set("anchor_right", 1); + +curveedit->set_anchor_bottom(1); +//curveedit->set("anchor_bottom", 1); + +curveedit->set_margin_left(-1280); +//curveedit->set("margin_left", -1280); + +curveedit->set_margin_right(-1220); +//curveedit->set("margin_right", -1220); + +curveedit->set_margin_bottom(-700); +//curveedit->set("margin_bottom", -700); + +curveedit->set_rect_position(Vector2(-1280, 0)); +//curveedit->set("rect_position", Vector2(-1280, 0)); + +curveedit->set_rect_global_position(Vector2(-1280, 0)); +//curveedit->set("rect_global_position", Vector2(-1280, 0)); + +curveedit->set_rect_size(Vector2(60, 20)); +//curveedit->set("rect_size", Vector2(60, 20)); + +curveedit->set_rect_min_size(Vector2(60, 20)); +//curveedit->set("rect_min_size", Vector2(60, 20)); + +curveedit->set_focus_mode(1); +//curveedit->set("focus_mode", 1); + +//curveedit property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/curve_view.gd +Control *curveview_curveedit = memnew(Control); +curveview_curveedit->set_name("CurveView"); +curveedit->add_child(curveview_curveedit); + +curveview_curveedit->set_name("CurveView"); +//curveview_curveedit->set("name", CurveView)); + +curveview_curveedit->set_filename("res://addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn"); +//curveview_curveedit->set("filename", "res://addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn"); + +//curveview_curveedit property owner TYPE_OBJECT value: CurveEdit:[Button:59797] + +curveview_curveedit->set_anchor_right(1); +//curveview_curveedit->set("anchor_right", 1); + +curveview_curveedit->set_anchor_bottom(1); +//curveview_curveedit->set("anchor_bottom", 1); + +curveview_curveedit->set_margin_left(4); +//curveview_curveedit->set("margin_left", 4); + +curveview_curveedit->set_margin_top(4); +//curveview_curveedit->set("margin_top", 4); + +curveview_curveedit->set_margin_right(-4); +//curveview_curveedit->set("margin_right", -4); + +curveview_curveedit->set_margin_bottom(-4); +//curveview_curveedit->set("margin_bottom", -4); + +curveview_curveedit->set_rect_position(Vector2(4, 4)); +//curveview_curveedit->set("rect_position", Vector2(4, 4)); + +curveview_curveedit->set_rect_global_position(Vector2(4, 4)); +//curveview_curveedit->set("rect_global_position", Vector2(4, 4)); + +curveview_curveedit->set_mouse_filter(2); +//curveview_curveedit->set("mouse_filter", 2); + +//curveview_curveedit property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_edit.h b/modules/material_maker/editor/widgets/curve_edit/curve_edit.h new file mode 100644 index 000000000..ed180fec5 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_edit.h @@ -0,0 +1,34 @@ +#ifndef CURVE_EDIT_H +#define CURVE_EDIT_H + + +class CurveEdit : public Control { + GDCLASS(CurveEdit, Control); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + void set_value(const Variant &v); + void _on_CurveEdit_pressed(); + void on_value_changed(const Variant &v); + + CurveEdit(); + ~CurveEdit(); + + protected: + static void _bind_methods(); + + //tool + Variant = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + // setget set_value + Variant = null; + signal updated(curve); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_editor.cpp b/modules/material_maker/editor/widgets/curve_edit/curve_editor.cpp new file mode 100644 index 000000000..5468a3922 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_editor.cpp @@ -0,0 +1,151 @@ + +#include "curve_editor.h" + + + + //tool; + signal value_changed(value); + + void CurveEditor::_ready() { + update_controls(); +} + + + void CurveEditor::set_curve(const Variant &c) { + curve = c; + update(); + update_controls(); +} + + + void CurveEditor::update_controls() { + + if (!curve) { + return; +} + + + for (c in get_children()) { + c.queue_free(); +} + + Variant = curve.get_points(); + + for (i in points.size()) { + Variant = points[i]; + //var control_point = preload("res://addons/mat_maker_gd/widgets/curve_edit/control_point.tscn").instance(); + add_child(control_point); + control_point.initialize(p); + control_point.rect_position = transform_point(p.p)-control_point.OFFSET; + + if (i == 0 || i == points.size()-1) { + control_point.set_constraint(control_point.rect_position.x, control_point.rect_position.x, -control_point.OFFSET.y, rect_size.y-control_point.OFFSET.y); + + if (i == 0) { + control_point.get_child(0).visible = false; +} + + + else { + control_point.get_child(1).visible = false; +} + +} + + + else { + Variant = transform_point(points[i-1].p).x+1; + Variant = transform_point(points[i+1].p).x-1; + control_point.set_constraint(min_x, max_x, -control_point.OFFSET.y, rect_size.y-control_point.OFFSET.y); +} + + control_point.connect("moved", self, "_on_ControlPoint_moved"); + control_point.connect("removed", self, "_on_ControlPoint_removed"); +} + + emit_signal("value_changed", curve); +} + + + void CurveEditor::_on_ControlPoint_moved(const Variant &index) { + Array points = curve.get_points(); + Variant = get_child(index); + points[index].p = reverse_transform_point(control_point.rect_position+control_point.OFFSET); + + if (control_point.has_node("LeftSlope")) { + Variant = control_point.get_node("LeftSlope").rect_position/rect_size; + + if (slope_vector.x != 0) { + points[index].ls = -slope_vector.y / slope_vector.x; +} + +} + + + if (control_point.has_node("RightSlope")) { + Variant = control_point.get_node("RightSlope").rect_position/rect_size; + + if (slope_vector.x != 0) { + points[index].rs = -slope_vector.y / slope_vector.x; +} + +} + + curve.set_points(points, false); + update(); + emit_signal("value_changed", curve); +} + + + void CurveEditor::_on_ControlPoint_removed(const Variant &index) { + + if (curve.remove_point(index)) { + update(); + update_controls(); +} + +} + + + void CurveEditor::_on_CurveEditor_gui_input(const Variant &event) { + + if (event is InputEventMouseButton) { + + if (event.button_index == BUTTON_LEFT && event.doubleclick) { + Variant = reverse_transform_point(get_local_mouse_position()); + curve.add_point(new_point_position.x, new_point_position.y, 0.0, 0.0); + update_controls(); +} + +} + +} + + + void CurveEditor::_on_resize() { + ._on_resize(); + update_controls(); +} + +} + + CurveEditor::CurveEditor() { + } + + CurveEditor::~CurveEditor() { + } + + + static void CurveEditor::_bind_methods() { + ClassDB::bind_method(D_METHOD("_ready"), &CurveEditor::_ready); + ClassDB::bind_method(D_METHOD("set_curve", "c"), &CurveEditor::set_curve); + ClassDB::bind_method(D_METHOD("update_controls"), &CurveEditor::update_controls); + ClassDB::bind_method(D_METHOD("_on_ControlPoint_moved", "index"), &CurveEditor::_on_ControlPoint_moved); + ClassDB::bind_method(D_METHOD("_on_ControlPoint_removed", "index"), &CurveEditor::_on_ControlPoint_removed); + ClassDB::bind_method(D_METHOD("_on_CurveEditor_gui_input", "event"), &CurveEditor::_on_CurveEditor_gui_input); + ClassDB::bind_method(D_METHOD("_on_resize"), &CurveEditor::_on_resize); + + } + + + diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_editor.ctscn b/modules/material_maker/editor/widgets/curve_edit/curve_editor.ctscn new file mode 100644 index 000000000..f5d0b6df0 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_editor.ctscn @@ -0,0 +1,43 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/curve_editor.gd +Control *curveeditor = memnew(Control); +curveeditor->set_name("CurveEditor"); + +curveeditor->set_name("CurveEditor"); +//curveeditor->set("name", CurveEditor)); + +curveeditor->set_filename("res://addons/mat_maker_gd/widgets/curve_edit/curve_editor.tscn"); +//curveeditor->set("filename", "res://addons/mat_maker_gd/widgets/curve_edit/curve_editor.tscn"); + +curveeditor->set_anchor_right(1); +//curveeditor->set("anchor_right", 1); + +curveeditor->set_anchor_bottom(1); +//curveeditor->set("anchor_bottom", 1); + +curveeditor->set_margin_left(10); +//curveeditor->set("margin_left", 10); + +curveeditor->set_margin_top(10); +//curveeditor->set("margin_top", 10); + +curveeditor->set_margin_right(-10); +//curveeditor->set("margin_right", -10); + +curveeditor->set_margin_bottom(-10); +//curveeditor->set("margin_bottom", -10); + +curveeditor->set_rect_position(Vector2(10, 10)); +//curveeditor->set("rect_position", Vector2(10, 10)); + +curveeditor->set_rect_global_position(Vector2(10, 10)); +//curveeditor->set("rect_global_position", Vector2(10, 10)); + +//curveeditor property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_editor.h b/modules/material_maker/editor/widgets/curve_edit/curve_editor.h new file mode 100644 index 000000000..d13f299f5 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_editor.h @@ -0,0 +1,29 @@ +#ifndef CURVE_EDITOR_H +#define CURVE_EDITOR_H + + +class CurveEditor : public "res://addons/mat_maker_gd/widgets/curve_edit/curve_view.gd" { + GDCLASS(CurveEditor, "res://addons/mat_maker_gd/widgets/curve_edit/curve_view.gd"); + + public: + + void _ready(); + void set_curve(const Variant &c); + void update_controls(); + void _on_ControlPoint_moved(const Variant &index); + void _on_ControlPoint_removed(const Variant &index); + void _on_CurveEditor_gui_input(const Variant &event); + void _on_resize(); + + CurveEditor(); + ~CurveEditor(); + + protected: + static void _bind_methods(); + + //tool + signal value_changed(value); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_view.cpp b/modules/material_maker/editor/widgets/curve_edit/curve_view.cpp new file mode 100644 index 000000000..d2acbe35c --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_view.cpp @@ -0,0 +1,160 @@ + +#include "curve_view.h" + + +Variant CurveView::get_Variant() { + return Variant; +} + +void CurveView::set_Variant(const Variant &val) { +Variant = val; +} + + +bool CurveView::get_show_axes() const { + return show_axes; +} + +void CurveView::set_show_axes(const bool val) { +show_axes = val; +} + + +Variant CurveView::get_Variant() { + return Variant; +} + +void CurveView::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + //var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + //export ; + bool show_axes = false; + //: MMCurve; + Variant ; + + void CurveView::_ready() { + // curve = MMCurve.new(); + connect("resized", self, "_on_resize"); + update(); +} + + + void CurveView::set_curve(const Variant &val) { + curve = val; + update(); +} + + + Vector2 CurveView::transform_point(const Vector2 &p) { + return (Vector2(0.0, 1.0)+Vector2(1.0, -1.0)*p)*rect_size; +} + + + Vector2 CurveView::reverse_transform_point(const Vector2 &p) { + return Vector2(0.0, 1.0)+Vector2(1.0, -1.0)*p/rect_size; +} + + + void CurveView::_draw() { + + if (!curve) { + return; +} + + // var current_theme : Theme = get_node("/root/MainWindow").theme; + //; + // var bg = current_theme.get_stylebox("panel", "Panel").bg_color; + // var fg = current_theme.get_color("font_color", "Label"); + //; + // var axes_color : Color = bg.linear_interpolate(fg, 0.25); + // var curve_color : Color = bg.linear_interpolate(fg, 0.75); + Color axes_color = Color(0.9, 0.9, 0.9, 1); + Color curve_color = Color(1, 1, 1, 1); + + if (show_axes) { + + for (int i = 0; i < 5; ++i) { //i in range(5) + Variant = transform_point(0.25*Vector2(i, i)); + draw_line(Vector2(p.x, 0), Vector2(p.x, rect_size.y-1), axes_color); + draw_line(Vector2(0, p.y), Vector2(rect_size.x-1, p.y), axes_color); +} + +} + + Variant = curve.get_points(); + + for (int i = 0; i < points.size() - 1; ++i) { //i in range(points.size() - 1) + Variant = points[i].p; + Variant = points[i+1].p; + Variant = (p2.x-p1.x)/3.0; + Variant = p1.y+d*points[i].rs; + Variant = p2.y-d*points[i+1].ls; + Variant = transform_point(p1); + int count = max(1, int((transform_point(p2).x-p.x/5.0))); + + for (int tt = 0; tt < count; ++tt) { //tt in range(count) + Variant = (tt+1.0)/count; + Variant = (1.0 - t); + Variant = omt * omt; + Variant = omt2 * omt; + Variant = t * t; + Variant = t2 * t; + Variant = p1.x+(p2.x-p1.x)*t; + Variant = transform_point(Vector2(x, p1.y*omt3 + yac*omt2*t*3.0 + ybc*omt*t2*3.0 + p2.y*t3)); + draw_line(p, np, curve_color); + p = np; +} + +} + +} + + + void CurveView::_on_resize() { + update(); +} + +} + + CurveView::CurveView() { + //var MMCurve = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + show_axes = false; + ; + } + + CurveView::~CurveView() { + } + + + static void CurveView::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &CurveView::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &CurveView::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_show_axes"), &CurveView::get_show_axes); + ClassDB::bind_method(D_METHOD("set_show_axes", "value"), &CurveView::set_show_axes); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_axes"), "set_show_axes", "get_show_axes"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &CurveView::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &CurveView::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("_ready"), &CurveView::_ready); + ClassDB::bind_method(D_METHOD("set_curve", "val"), &CurveView::set_curve); + ClassDB::bind_method(D_METHOD("transform_point", "p"), &CurveView::transform_point); + ClassDB::bind_method(D_METHOD("reverse_transform_point", "p"), &CurveView::reverse_transform_point); + ClassDB::bind_method(D_METHOD("_draw"), &CurveView::_draw); + ClassDB::bind_method(D_METHOD("_on_resize"), &CurveView::_on_resize); + + } + + + diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_view.ctscn b/modules/material_maker/editor/widgets/curve_edit/curve_view.ctscn new file mode 100644 index 000000000..3818b08f4 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_view.ctscn @@ -0,0 +1,46 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/curve_edit/curve_view.gd +Control *curveview = memnew(Control); +curveview->set_name("CurveView"); + +curveview->set_name("CurveView"); +//curveview->set("name", CurveView)); + +curveview->set_filename("res://addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn"); +//curveview->set("filename", "res://addons/mat_maker_gd/widgets/curve_edit/curve_view.tscn"); + +curveview->set_anchor_right(1); +//curveview->set("anchor_right", 1); + +curveview->set_anchor_bottom(1); +//curveview->set("anchor_bottom", 1); + +curveview->set_margin_left(4); +//curveview->set("margin_left", 4); + +curveview->set_margin_top(4); +//curveview->set("margin_top", 4); + +curveview->set_margin_right(-4); +//curveview->set("margin_right", -4); + +curveview->set_margin_bottom(-4); +//curveview->set("margin_bottom", -4); + +curveview->set_rect_position(Vector2(4, 4)); +//curveview->set("rect_position", Vector2(4, 4)); + +curveview->set_rect_global_position(Vector2(4, 4)); +//curveview->set("rect_global_position", Vector2(4, 4)); + +curveview->set_mouse_filter(2); +//curveview->set("mouse_filter", 2); + +//curveview property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/curve_edit/curve_view.h b/modules/material_maker/editor/widgets/curve_edit/curve_view.h new file mode 100644 index 000000000..58b086f28 --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/curve_view.h @@ -0,0 +1,41 @@ +#ifndef CURVE_VIEW_H +#define CURVE_VIEW_H + + +class CurveView : public Control { + GDCLASS(CurveView, Control); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + bool get_show_axes() const; + void set_show_axes(const bool val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + void _ready(); + void set_curve(const Variant &val); + Vector2 transform_point(const Vector2 &p); + Vector2 reverse_transform_point(const Vector2 &p); + void _draw(); + void _on_resize(); + + CurveView(); + ~CurveView(); + + protected: + static void _bind_methods(); + + //tool + Variant = preload("res://addons/mat_maker_gd/nodes/bases/curve_base.gd"); + //export + bool show_axes = false; + //: MMCurve + Variant ; +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/curve_edit/slope_point.cpp b/modules/material_maker/editor/widgets/curve_edit/slope_point.cpp new file mode 100644 index 000000000..49d38b95a --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/slope_point.cpp @@ -0,0 +1,136 @@ + +#include "slope_point.h" + + +float SlopePoint::get_distance() const { + return distance; +} + +void SlopePoint::set_distance(const float val) { +distance = val; +} + + +Variant SlopePoint::get_Variant() { + return Variant; +} + +void SlopePoint::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + //export ; + float distance = ; + Variant = false; + const OFFSET = -Vector2(0, 0); + + void SlopePoint::_ready() { + // Replace with function body.; + pass; +} + + + void SlopePoint::_draw() { + // var current_theme : Theme = get_node("/root/MainWindow").theme; + // var color : Color = current_theme.get_color("font_color", "Label"); + Color color = Color(1, 1, 1, 1); + draw_circle(Vector2(3.0, 3.0), 3.0, color); +} + + + void SlopePoint::_on_ControlPoint_gui_input(const Variant &event) { + + if (event is InputEventMouseButton) { + + if (event.button_index == BUTTON_LEFT) { + + if (event.pressed) { + + if (event.doubleclick) { + Variant = get_parent(); + Vector2 vector = ; + + if (get_index() == 0) { + vector = parent.rect_position-parent.get_parent().get_child(parent.get_index()-1).rect_position; +} + + + else { + vector = parent.get_parent().get_child(parent.get_index()+1).rect_position-parent.rect_position; +} + + vector = distance*vector.normalized(); + rect_position = vector-OFFSET; + + if (event.control) { + get_parent().get_child(1-get_index()).rect_position = -vector-OFFSET; +} + + get_parent().update_tangents(); +} + + + else { + moving = true; +} + +} + + + else { + moving = false; +} + +} + +} + + + else if (moving && event is InputEventMouseMotion) { + Variant = get_global_mouse_position()-get_parent().get_global_rect().position+OFFSET; + vector *= sign(vector.x); + vector = distance*vector.normalized(); + rect_position = vector-OFFSET; + + if (event.control) { + get_parent().get_child(1-get_index()).rect_position = -vector-OFFSET; +} + + get_parent().update_tangents(); +} + +} + +} + + SlopePoint::SlopePoint() { + distance = ; + = false; + } + + SlopePoint::~SlopePoint() { + } + + + static void SlopePoint::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_distance"), &SlopePoint::get_distance); + ClassDB::bind_method(D_METHOD("set_distance", "value"), &SlopePoint::set_distance); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "distance"), "set_distance", "get_distance"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &SlopePoint::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &SlopePoint::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("_ready"), &SlopePoint::_ready); + ClassDB::bind_method(D_METHOD("_draw"), &SlopePoint::_draw); + ClassDB::bind_method(D_METHOD("_on_ControlPoint_gui_input", "event"), &SlopePoint::_on_ControlPoint_gui_input); + + } + + + diff --git a/modules/material_maker/editor/widgets/curve_edit/slope_point.h b/modules/material_maker/editor/widgets/curve_edit/slope_point.h new file mode 100644 index 000000000..b26d3a24e --- /dev/null +++ b/modules/material_maker/editor/widgets/curve_edit/slope_point.h @@ -0,0 +1,34 @@ +#ifndef SLOPE_POINT_H +#define SLOPE_POINT_H + + +class SlopePoint : public Control { + GDCLASS(SlopePoint, Control); + + public: + + float get_distance() const; + void set_distance(const float val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + void _ready(); + void _draw(); + void _on_ControlPoint_gui_input(const Variant &event); + + SlopePoint(); + ~SlopePoint(); + + protected: + static void _bind_methods(); + + //tool + //export + float distance = ; + Variant = false; + const OFFSET = -Vector2(0, 0); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/file_dialog/fav_button.ctscn b/modules/material_maker/editor/widgets/file_dialog/fav_button.ctscn new file mode 100644 index 000000000..f71ff9732 --- /dev/null +++ b/modules/material_maker/editor/widgets/file_dialog/fav_button.ctscn @@ -0,0 +1,36 @@ + +void construct() { + +Button *favbutton = memnew(Button); +favbutton->set_name("FavButton"); + +favbutton->set_name("FavButton"); +//favbutton->set("name", FavButton)); + +favbutton->set_filename("res://addons/mat_maker_gd/windows/file_dialog/fav_button.tscn"); +//favbutton->set("filename", "res://addons/mat_maker_gd/windows/file_dialog/fav_button.tscn"); + +favbutton->set_margin_right(12); +//favbutton->set("margin_right", 12); + +favbutton->set_margin_bottom(20); +//favbutton->set("margin_bottom", 20); + +favbutton->set_rect_size(Vector2(12, 20)); +//favbutton->set("rect_size", Vector2(12, 20)); + +//favbutton property icon TYPE_OBJECT value: [AtlasTexture:36836] +Ref favbutton_prop_icon; +favbutton_prop_icon.instance(); +favbutton->set_icon(favbutton_prop_icon); +//favbutton->set("icon", favbutton_prop_icon); + +favbutton->set_flat(True); +//favbutton->set("flat", True); + +//favbutton property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/file_dialog/file_dialog.cpp b/modules/material_maker/editor/widgets/file_dialog/file_dialog.cpp new file mode 100644 index 000000000..f3eaa17ef --- /dev/null +++ b/modules/material_maker/editor/widgets/file_dialog/file_dialog.cpp @@ -0,0 +1,134 @@ + +#include "file_dialog.h" + + +Variant FileDialog::get_Variant() { + return Variant; +} + +void FileDialog::set_Variant(const Variant &val) { +Variant = val; +} + + +Variant FileDialog::get_Variant() { + return Variant; +} + +void FileDialog::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + Variant = null; + Variant = null; + signal return_paths(path_list); + + void FileDialog::_ready() { + Variant = get_child(3); + Variant = HSplitContainer.new(); + add_child(hbox); + remove_child(vbox); + left_panel = preload("res://addons/mat_maker_gd/windows/file_dialog/left_panel.tscn").instance(); + hbox.add_child(left_panel); + left_panel.connect("open_directory", self, "set_current_dir"); + hbox.add_child(vbox); + vbox.size_flags_horizontal = SIZE_EXPAND_FILL; + //var fav_button = preload("res://addons/mat_maker_gd/windows/file_dialog/fav_button.tscn").instance(); + vbox.get_child(0).add_child(fav_button); + fav_button.connect("pressed", self, "add_favorite"); + + if (OS.get_name() == "Windows") { + volume_option = vbox.get_child(0).get_child(3); + + if (! volume_option is OptionButton) { + volume_option = null; +} + +} + +} + + + String FileDialog::get_full_current_dir() { + Variant = ""; + + if (volume_option != null && volume_option.visible) { + prefix = volume_option.get_item_text(volume_option.selected); +} + + return prefix+get_current_dir(); +} + + + void FileDialog::_on_FileDialog_file_selected(const Variant &path) { + left_panel.add_recent(get_full_current_dir()); + emit_signal("return_paths", [ path ]); +} + + + void FileDialog::_on_FileDialog_files_selected(const Variant &paths) { + left_panel.add_recent(get_full_current_dir()); + emit_signal("return_paths", paths); +} + + + void FileDialog::_on_FileDialog_dir_selected(const Variant &dir) { + emit_signal("return_paths", [ dir ]); +} + + + void FileDialog::_on_FileDialog_popup_hide() { + emit_signal("return_paths", [ ]); +} + + + Array FileDialog::select_files() { + popup_centered(); + Variant = yield(self, "return_paths"); + queue_free(); + return result; +} + + + void FileDialog::add_favorite() { + left_panel.add_favorite(get_full_current_dir()); +} + +} + + FileDialog::FileDialog() { + = null; + = null; + } + + FileDialog::~FileDialog() { + } + + + static void FileDialog::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &FileDialog::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &FileDialog::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &FileDialog::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &FileDialog::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("_ready"), &FileDialog::_ready); + ClassDB::bind_method(D_METHOD("get_full_current_dir"), &FileDialog::get_full_current_dir); + ClassDB::bind_method(D_METHOD("_on_FileDialog_file_selected", "path"), &FileDialog::_on_FileDialog_file_selected); + ClassDB::bind_method(D_METHOD("_on_FileDialog_files_selected", "paths"), &FileDialog::_on_FileDialog_files_selected); + ClassDB::bind_method(D_METHOD("_on_FileDialog_dir_selected", "dir"), &FileDialog::_on_FileDialog_dir_selected); + ClassDB::bind_method(D_METHOD("_on_FileDialog_popup_hide"), &FileDialog::_on_FileDialog_popup_hide); + ClassDB::bind_method(D_METHOD("select_files"), &FileDialog::select_files); + ClassDB::bind_method(D_METHOD("add_favorite"), &FileDialog::add_favorite); + + } + + + diff --git a/modules/material_maker/editor/widgets/file_dialog/file_dialog.ctscn b/modules/material_maker/editor/widgets/file_dialog/file_dialog.ctscn new file mode 100644 index 000000000..d7efc94a9 --- /dev/null +++ b/modules/material_maker/editor/widgets/file_dialog/file_dialog.ctscn @@ -0,0 +1,1250 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/windows/file_dialog/file_dialog.gd +FileDialog *filedialog = memnew(FileDialog); +filedialog->set_name("FileDialog"); + +filedialog->set_name("FileDialog"); +//filedialog->set("name", FileDialog)); + +filedialog->set_filename("res://addons/mat_maker_gd/windows/file_dialog/file_dialog.tscn"); +//filedialog->set("filename", "res://addons/mat_maker_gd/windows/file_dialog/file_dialog.tscn"); + +filedialog->set_margin_right(360); +//filedialog->set("margin_right", 360); + +filedialog->set_margin_bottom(130); +//filedialog->set("margin_bottom", 130); + +filedialog->set_rect_size(Vector2(360, 130)); +//filedialog->set("rect_size", Vector2(360, 130)); + +filedialog->set_window_title("Enregistrer un fichier"); +//filedialog->set("window_title", "Enregistrer un fichier"); + +filedialog->set_resizable(True); +//filedialog->set("resizable", True); + + + +TextureButton *texturebutton_filedialog = memnew(TextureButton); +texturebutton_filedialog->set_name("TextureButton"); +filedialog->add_child(texturebutton_filedialog); + +texturebutton_filedialog->set_name("TextureButton"); +//texturebutton_filedialog->set("name", TextureButton)); + + + +Label *label_filedialog = memnew(Label); +label_filedialog->set_name("Label"); +filedialog->add_child(label_filedialog); + +label_filedialog->set_name("Label"); +//label_filedialog->set("name", Label)); + +label_filedialog->set_anchor_right(1); +//label_filedialog->set("anchor_right", 1); + +label_filedialog->set_anchor_bottom(1); +//label_filedialog->set("anchor_bottom", 1); + +label_filedialog->set_margin_left(8); +//label_filedialog->set("margin_left", 8); + +label_filedialog->set_margin_top(8); +//label_filedialog->set("margin_top", 8); + +label_filedialog->set_margin_right(-8); +//label_filedialog->set("margin_right", -8); + +label_filedialog->set_margin_bottom(-42); +//label_filedialog->set("margin_bottom", -42); + +label_filedialog->set_rect_position(Vector2(8, 8)); +//label_filedialog->set("rect_position", Vector2(8, 8)); + +label_filedialog->set_rect_global_position(Vector2(8, 8)); +//label_filedialog->set("rect_global_position", Vector2(8, 8)); + +label_filedialog->set_rect_size(Vector2(0, 14)); +//label_filedialog->set("rect_size", Vector2(0, 14)); + + + +HBoxContainer *hboxcontainer_filedialog = memnew(HBoxContainer); +hboxcontainer_filedialog->set_name("HBoxContainer"); +filedialog->add_child(hboxcontainer_filedialog); + +hboxcontainer_filedialog->set_name("HBoxContainer"); +//hboxcontainer_filedialog->set("name", HBoxContainer)); + + + +Control *control3_hboxcontainer_filedialog = memnew(Control); +control3_hboxcontainer_filedialog->set_name("Control3"); +hboxcontainer_filedialog->add_child(control3_hboxcontainer_filedialog); + +control3_hboxcontainer_filedialog->set_name("Control3"); +//control3_hboxcontainer_filedialog->set("name", Control3)); + +control3_hboxcontainer_filedialog->set_mouse_filter(1); +//control3_hboxcontainer_filedialog->set("mouse_filter", 1); + +control3_hboxcontainer_filedialog->set_size_flags_horizontal(3); +//control3_hboxcontainer_filedialog->set("size_flags_horizontal", 3); + + + +Button *button2_hboxcontainer_filedialog = memnew(Button); +button2_hboxcontainer_filedialog->set_name("Button2"); +hboxcontainer_filedialog->add_child(button2_hboxcontainer_filedialog); + +button2_hboxcontainer_filedialog->set_name("Button2"); +//button2_hboxcontainer_filedialog->set("name", Button2)); + +button2_hboxcontainer_filedialog->set_text("Cancel"); +//button2_hboxcontainer_filedialog->set("text", "Cancel"); + + + +Control *control_hboxcontainer_filedialog = memnew(Control); +control_hboxcontainer_filedialog->set_name("Control"); +hboxcontainer_filedialog->add_child(control_hboxcontainer_filedialog); + +control_hboxcontainer_filedialog->set_name("Control"); +//control_hboxcontainer_filedialog->set("name", Control)); + +control_hboxcontainer_filedialog->set_mouse_filter(1); +//control_hboxcontainer_filedialog->set("mouse_filter", 1); + +control_hboxcontainer_filedialog->set_size_flags_horizontal(3); +//control_hboxcontainer_filedialog->set("size_flags_horizontal", 3); + + + +Button *button_hboxcontainer_filedialog = memnew(Button); +button_hboxcontainer_filedialog->set_name("Button"); +hboxcontainer_filedialog->add_child(button_hboxcontainer_filedialog); + +button_hboxcontainer_filedialog->set_name("Button"); +//button_hboxcontainer_filedialog->set("name", Button)); + +button_hboxcontainer_filedialog->set_text("OK"); +//button_hboxcontainer_filedialog->set("text", "OK"); + + + +Control *control2_hboxcontainer_filedialog = memnew(Control); +control2_hboxcontainer_filedialog->set_name("Control2"); +hboxcontainer_filedialog->add_child(control2_hboxcontainer_filedialog); + +control2_hboxcontainer_filedialog->set_name("Control2"); +//control2_hboxcontainer_filedialog->set("name", Control2)); + +control2_hboxcontainer_filedialog->set_mouse_filter(1); +//control2_hboxcontainer_filedialog->set("mouse_filter", 1); + +control2_hboxcontainer_filedialog->set_size_flags_horizontal(3); +//control2_hboxcontainer_filedialog->set("size_flags_horizontal", 3); + + + +VBoxContainer *vboxcontainer_filedialog = memnew(VBoxContainer); +vboxcontainer_filedialog->set_name("VBoxContainer"); +filedialog->add_child(vboxcontainer_filedialog); + +vboxcontainer_filedialog->set_name("VBoxContainer"); +//vboxcontainer_filedialog->set("name", VBoxContainer)); + + + +HBoxContainer *hboxcontainer_vboxcontainer_filedialog = memnew(HBoxContainer); +hboxcontainer_vboxcontainer_filedialog->set_name("HBoxContainer"); +vboxcontainer_filedialog->add_child(hboxcontainer_vboxcontainer_filedialog); + +hboxcontainer_vboxcontainer_filedialog->set_name("HBoxContainer"); +//hboxcontainer_vboxcontainer_filedialog->set("name", HBoxContainer)); + + + +ToolButton *toolbutton_hboxcontainer_vboxcontainer_filedialog = memnew(ToolButton); +toolbutton_hboxcontainer_vboxcontainer_filedialog->set_name("ToolButton"); +hboxcontainer_vboxcontainer_filedialog->add_child(toolbutton_hboxcontainer_vboxcontainer_filedialog); + +toolbutton_hboxcontainer_vboxcontainer_filedialog->set_name("ToolButton"); +//toolbutton_hboxcontainer_vboxcontainer_filedialog->set("name", ToolButton)); + +toolbutton_hboxcontainer_vboxcontainer_filedialog->set_hint_tooltip("Go to parent folder."); +//toolbutton_hboxcontainer_vboxcontainer_filedialog->set("hint_tooltip", "Go to parent folder."); + + + +Label *label_hboxcontainer_vboxcontainer_filedialog = memnew(Label); +label_hboxcontainer_vboxcontainer_filedialog->set_name("Label"); +hboxcontainer_vboxcontainer_filedialog->add_child(label_hboxcontainer_vboxcontainer_filedialog); + +label_hboxcontainer_vboxcontainer_filedialog->set_name("Label"); +//label_hboxcontainer_vboxcontainer_filedialog->set("name", Label)); + +label_hboxcontainer_vboxcontainer_filedialog->set_text("Path:"); +//label_hboxcontainer_vboxcontainer_filedialog->set("text", "Path:"); + + + +HBoxContainer *hboxcontainer_hboxcontainer_vboxcontainer_filedialog = memnew(HBoxContainer); +hboxcontainer_hboxcontainer_vboxcontainer_filedialog->set_name("HBoxContainer"); +hboxcontainer_vboxcontainer_filedialog->add_child(hboxcontainer_hboxcontainer_vboxcontainer_filedialog); + +hboxcontainer_hboxcontainer_vboxcontainer_filedialog->set_name("HBoxContainer"); +//hboxcontainer_hboxcontainer_vboxcontainer_filedialog->set("name", HBoxContainer)); + + + +OptionButton *optionbutton_hboxcontainer_vboxcontainer_filedialog = memnew(OptionButton); +optionbutton_hboxcontainer_vboxcontainer_filedialog->set_name("OptionButton"); +hboxcontainer_vboxcontainer_filedialog->add_child(optionbutton_hboxcontainer_vboxcontainer_filedialog); + +optionbutton_hboxcontainer_vboxcontainer_filedialog->set_name("OptionButton"); +//optionbutton_hboxcontainer_vboxcontainer_filedialog->set("name", OptionButton)); + +optionbutton_hboxcontainer_vboxcontainer_filedialog->set_visible(False); +//optionbutton_hboxcontainer_vboxcontainer_filedialog->set("visible", False); + + + +PopupMenu *popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog = memnew(PopupMenu); +popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set_name("PopupMenu"); +optionbutton_hboxcontainer_vboxcontainer_filedialog->add_child(popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog); + +popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set_name("PopupMenu"); +//popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set("name", PopupMenu)); + +popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set_input_pass_on_modal_close_click(False); +//popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set("input_pass_on_modal_close_click", False); + +popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set_allow_search(True); +//popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set("allow_search", True); + + + +Timer *timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog = memnew(Timer); +timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set_name("Timer"); +popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->add_child(timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog); + +timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set_name("Timer"); +//timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set("name", Timer)); + +timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set_wait_time(0.3); +//timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set("wait_time", 0.3); + +timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set_one_shot(True); +//timer_popupmenu_optionbutton_hboxcontainer_vboxcontainer_filedialog->set("one_shot", True); + + + +LineEdit *lineedit_hboxcontainer_vboxcontainer_filedialog = memnew(LineEdit); +lineedit_hboxcontainer_vboxcontainer_filedialog->set_name("LineEdit"); +hboxcontainer_vboxcontainer_filedialog->add_child(lineedit_hboxcontainer_vboxcontainer_filedialog); + +lineedit_hboxcontainer_vboxcontainer_filedialog->set_name("LineEdit"); +//lineedit_hboxcontainer_vboxcontainer_filedialog->set("name", LineEdit)); + +lineedit_hboxcontainer_vboxcontainer_filedialog->set_size_flags_horizontal(3); +//lineedit_hboxcontainer_vboxcontainer_filedialog->set("size_flags_horizontal", 3); + +lineedit_hboxcontainer_vboxcontainer_filedialog->set_text("res://"); +//lineedit_hboxcontainer_vboxcontainer_filedialog->set("text", "res://"); + + + +Timer *timer_lineedit_hboxcontainer_vboxcontainer_filedialog = memnew(Timer); +timer_lineedit_hboxcontainer_vboxcontainer_filedialog->set_name("Timer"); +lineedit_hboxcontainer_vboxcontainer_filedialog->add_child(timer_lineedit_hboxcontainer_vboxcontainer_filedialog); + +timer_lineedit_hboxcontainer_vboxcontainer_filedialog->set_name("Timer"); +//timer_lineedit_hboxcontainer_vboxcontainer_filedialog->set("name", Timer)); + +timer_lineedit_hboxcontainer_vboxcontainer_filedialog->set_wait_time(0.65); +//timer_lineedit_hboxcontainer_vboxcontainer_filedialog->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog = memnew(PopupMenu); +popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set_name("PopupMenu"); +lineedit_hboxcontainer_vboxcontainer_filedialog->add_child(popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog); + +popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set_name("PopupMenu"); +//popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set("name", PopupMenu)); + +//popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog = memnew(Timer); +timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set_name("Timer"); +popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->add_child(timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog); + +timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set_name("Timer"); +//timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set("name", Timer)); + +timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set_wait_time(0.3); +//timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set("wait_time", 0.3); + +timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set_one_shot(True); +//timer_popupmenu_lineedit_hboxcontainer_vboxcontainer_filedialog->set("one_shot", True); + + + +ToolButton *toolbutton2_hboxcontainer_vboxcontainer_filedialog = memnew(ToolButton); +toolbutton2_hboxcontainer_vboxcontainer_filedialog->set_name("ToolButton2"); +hboxcontainer_vboxcontainer_filedialog->add_child(toolbutton2_hboxcontainer_vboxcontainer_filedialog); + +toolbutton2_hboxcontainer_vboxcontainer_filedialog->set_name("ToolButton2"); +//toolbutton2_hboxcontainer_vboxcontainer_filedialog->set("name", ToolButton2)); + +toolbutton2_hboxcontainer_vboxcontainer_filedialog->set_hint_tooltip("Refresh files."); +//toolbutton2_hboxcontainer_vboxcontainer_filedialog->set("hint_tooltip", "Refresh files."); + + + +ToolButton *toolbutton3_hboxcontainer_vboxcontainer_filedialog = memnew(ToolButton); +toolbutton3_hboxcontainer_vboxcontainer_filedialog->set_name("ToolButton3"); +hboxcontainer_vboxcontainer_filedialog->add_child(toolbutton3_hboxcontainer_vboxcontainer_filedialog); + +toolbutton3_hboxcontainer_vboxcontainer_filedialog->set_name("ToolButton3"); +//toolbutton3_hboxcontainer_vboxcontainer_filedialog->set("name", ToolButton3)); + +toolbutton3_hboxcontainer_vboxcontainer_filedialog->set_hint_tooltip("Toggle the visibility of hidden files."); +//toolbutton3_hboxcontainer_vboxcontainer_filedialog->set("hint_tooltip", "Toggle the visibility of hidden files."); + +toolbutton3_hboxcontainer_vboxcontainer_filedialog->set_toggle_mode(True); +//toolbutton3_hboxcontainer_vboxcontainer_filedialog->set("toggle_mode", True); + +toolbutton3_hboxcontainer_vboxcontainer_filedialog->set_pressed(True); +//toolbutton3_hboxcontainer_vboxcontainer_filedialog->set("pressed", True); + + + +HBoxContainer *hboxcontainer2_hboxcontainer_vboxcontainer_filedialog = memnew(HBoxContainer); +hboxcontainer2_hboxcontainer_vboxcontainer_filedialog->set_name("HBoxContainer2"); +hboxcontainer_vboxcontainer_filedialog->add_child(hboxcontainer2_hboxcontainer_vboxcontainer_filedialog); + +hboxcontainer2_hboxcontainer_vboxcontainer_filedialog->set_name("HBoxContainer2"); +//hboxcontainer2_hboxcontainer_vboxcontainer_filedialog->set("name", HBoxContainer2)); + + + +Button *button_hboxcontainer_vboxcontainer_filedialog = memnew(Button); +button_hboxcontainer_vboxcontainer_filedialog->set_name("Button"); +hboxcontainer_vboxcontainer_filedialog->add_child(button_hboxcontainer_vboxcontainer_filedialog); + +button_hboxcontainer_vboxcontainer_filedialog->set_name("Button"); +//button_hboxcontainer_vboxcontainer_filedialog->set("name", Button)); + +button_hboxcontainer_vboxcontainer_filedialog->set_text("Create Folder"); +//button_hboxcontainer_vboxcontainer_filedialog->set("text", "Create Folder"); + + + +Label *label_vboxcontainer_filedialog = memnew(Label); +label_vboxcontainer_filedialog->set_name("Label"); +vboxcontainer_filedialog->add_child(label_vboxcontainer_filedialog); + +label_vboxcontainer_filedialog->set_name("Label"); +//label_vboxcontainer_filedialog->set("name", Label)); + +label_vboxcontainer_filedialog->set_text("Directories & Files:"); +//label_vboxcontainer_filedialog->set("text", "Directories & Files:"); + + + +MarginContainer *margincontainer_vboxcontainer_filedialog = memnew(MarginContainer); +margincontainer_vboxcontainer_filedialog->set_name("MarginContainer"); +vboxcontainer_filedialog->add_child(margincontainer_vboxcontainer_filedialog); + +margincontainer_vboxcontainer_filedialog->set_name("MarginContainer"); +//margincontainer_vboxcontainer_filedialog->set("name", MarginContainer)); + +margincontainer_vboxcontainer_filedialog->set_size_flags_vertical(3); +//margincontainer_vboxcontainer_filedialog->set("size_flags_vertical", 3); + +margincontainer_vboxcontainer_filedialog->set_custom_constants/margin_left(0); +//margincontainer_vboxcontainer_filedialog->set("custom_constants/margin_left", 0); + + + +Tree *tree_margincontainer_vboxcontainer_filedialog = memnew(Tree); +tree_margincontainer_vboxcontainer_filedialog->set_name("Tree"); +margincontainer_vboxcontainer_filedialog->add_child(tree_margincontainer_vboxcontainer_filedialog); + +tree_margincontainer_vboxcontainer_filedialog->set_name("Tree"); +//tree_margincontainer_vboxcontainer_filedialog->set("name", Tree)); + +tree_margincontainer_vboxcontainer_filedialog->set_hide_root(True); +//tree_margincontainer_vboxcontainer_filedialog->set("hide_root", True); + + + +PopupMenu *popupmenu_tree_margincontainer_vboxcontainer_filedialog = memnew(PopupMenu); +popupmenu_tree_margincontainer_vboxcontainer_filedialog->set_name("PopupMenu"); +tree_margincontainer_vboxcontainer_filedialog->add_child(popupmenu_tree_margincontainer_vboxcontainer_filedialog); + +popupmenu_tree_margincontainer_vboxcontainer_filedialog->set_name("PopupMenu"); +//popupmenu_tree_margincontainer_vboxcontainer_filedialog->set("name", PopupMenu)); + + + +Timer *timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog = memnew(Timer); +timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog->set_name("Timer"); +popupmenu_tree_margincontainer_vboxcontainer_filedialog->add_child(timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog); + +timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog->set_name("Timer"); +//timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog->set("name", Timer)); + +timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog->set_wait_time(0.3); +//timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog->set("wait_time", 0.3); + +timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog->set_one_shot(True); +//timer_popupmenu_tree_margincontainer_vboxcontainer_filedialog->set("one_shot", True); + + + +LineEdit *lineedit_tree_margincontainer_vboxcontainer_filedialog = memnew(LineEdit); +lineedit_tree_margincontainer_vboxcontainer_filedialog->set_name("LineEdit"); +tree_margincontainer_vboxcontainer_filedialog->add_child(lineedit_tree_margincontainer_vboxcontainer_filedialog); + +lineedit_tree_margincontainer_vboxcontainer_filedialog->set_name("LineEdit"); +//lineedit_tree_margincontainer_vboxcontainer_filedialog->set("name", LineEdit)); + +lineedit_tree_margincontainer_vboxcontainer_filedialog->set_visible(False); +//lineedit_tree_margincontainer_vboxcontainer_filedialog->set("visible", False); + + + +Timer *timer_lineedit_tree_margincontainer_vboxcontainer_filedialog = memnew(Timer); +timer_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_name("Timer"); +lineedit_tree_margincontainer_vboxcontainer_filedialog->add_child(timer_lineedit_tree_margincontainer_vboxcontainer_filedialog); + +timer_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_name("Timer"); +//timer_lineedit_tree_margincontainer_vboxcontainer_filedialog->set("name", Timer)); + +timer_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_wait_time(0.65); +//timer_lineedit_tree_margincontainer_vboxcontainer_filedialog->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog = memnew(PopupMenu); +popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_name("PopupMenu"); +lineedit_tree_margincontainer_vboxcontainer_filedialog->add_child(popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog); + +popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_name("PopupMenu"); +//popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set("name", PopupMenu)); + +//popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog = memnew(Timer); +timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_name("Timer"); +popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->add_child(timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog); + +timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_name("Timer"); +//timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set("name", Timer)); + +timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_wait_time(0.3); +//timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set("wait_time", 0.3); + +timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set_one_shot(True); +//timer_popupmenu_lineedit_tree_margincontainer_vboxcontainer_filedialog->set("one_shot", True); + + + +HSlider *hslider_tree_margincontainer_vboxcontainer_filedialog = memnew(HSlider); +hslider_tree_margincontainer_vboxcontainer_filedialog->set_name("HSlider"); +tree_margincontainer_vboxcontainer_filedialog->add_child(hslider_tree_margincontainer_vboxcontainer_filedialog); + +hslider_tree_margincontainer_vboxcontainer_filedialog->set_name("HSlider"); +//hslider_tree_margincontainer_vboxcontainer_filedialog->set("name", HSlider)); + +hslider_tree_margincontainer_vboxcontainer_filedialog->set_visible(False); +//hslider_tree_margincontainer_vboxcontainer_filedialog->set("visible", False); + + + +HScrollBar *hscrollbar_tree_margincontainer_vboxcontainer_filedialog = memnew(HScrollBar); +hscrollbar_tree_margincontainer_vboxcontainer_filedialog->set_name("HScrollBar"); +tree_margincontainer_vboxcontainer_filedialog->add_child(hscrollbar_tree_margincontainer_vboxcontainer_filedialog); + +hscrollbar_tree_margincontainer_vboxcontainer_filedialog->set_name("HScrollBar"); +//hscrollbar_tree_margincontainer_vboxcontainer_filedialog->set("name", HScrollBar)); + + + +VScrollBar *vscrollbar_tree_margincontainer_vboxcontainer_filedialog = memnew(VScrollBar); +vscrollbar_tree_margincontainer_vboxcontainer_filedialog->set_name("VScrollBar"); +tree_margincontainer_vboxcontainer_filedialog->add_child(vscrollbar_tree_margincontainer_vboxcontainer_filedialog); + +vscrollbar_tree_margincontainer_vboxcontainer_filedialog->set_name("VScrollBar"); +//vscrollbar_tree_margincontainer_vboxcontainer_filedialog->set("name", VScrollBar)); + +vscrollbar_tree_margincontainer_vboxcontainer_filedialog->set_custom_step(14); +//vscrollbar_tree_margincontainer_vboxcontainer_filedialog->set("custom_step", 14); + + + +Timer *timer_tree_margincontainer_vboxcontainer_filedialog = memnew(Timer); +timer_tree_margincontainer_vboxcontainer_filedialog->set_name("Timer"); +tree_margincontainer_vboxcontainer_filedialog->add_child(timer_tree_margincontainer_vboxcontainer_filedialog); + +timer_tree_margincontainer_vboxcontainer_filedialog->set_name("Timer"); +//timer_tree_margincontainer_vboxcontainer_filedialog->set("name", Timer)); + + + +HBoxContainer *hboxcontainer2_vboxcontainer_filedialog = memnew(HBoxContainer); +hboxcontainer2_vboxcontainer_filedialog->set_name("HBoxContainer2"); +vboxcontainer_filedialog->add_child(hboxcontainer2_vboxcontainer_filedialog); + +hboxcontainer2_vboxcontainer_filedialog->set_name("HBoxContainer2"); +//hboxcontainer2_vboxcontainer_filedialog->set("name", HBoxContainer2)); + + + +Label *label_hboxcontainer2_vboxcontainer_filedialog = memnew(Label); +label_hboxcontainer2_vboxcontainer_filedialog->set_name("Label"); +hboxcontainer2_vboxcontainer_filedialog->add_child(label_hboxcontainer2_vboxcontainer_filedialog); + +label_hboxcontainer2_vboxcontainer_filedialog->set_name("Label"); +//label_hboxcontainer2_vboxcontainer_filedialog->set("name", Label)); + +label_hboxcontainer2_vboxcontainer_filedialog->set_text("File:"); +//label_hboxcontainer2_vboxcontainer_filedialog->set("text", "File:"); + + + +LineEdit *lineedit_hboxcontainer2_vboxcontainer_filedialog = memnew(LineEdit); +lineedit_hboxcontainer2_vboxcontainer_filedialog->set_name("LineEdit"); +hboxcontainer2_vboxcontainer_filedialog->add_child(lineedit_hboxcontainer2_vboxcontainer_filedialog); + +lineedit_hboxcontainer2_vboxcontainer_filedialog->set_name("LineEdit"); +//lineedit_hboxcontainer2_vboxcontainer_filedialog->set("name", LineEdit)); + +lineedit_hboxcontainer2_vboxcontainer_filedialog->set_size_flags_horizontal(3); +//lineedit_hboxcontainer2_vboxcontainer_filedialog->set("size_flags_horizontal", 3); + +lineedit_hboxcontainer2_vboxcontainer_filedialog->set_size_flags_stretch_ratio(4); +//lineedit_hboxcontainer2_vboxcontainer_filedialog->set("size_flags_stretch_ratio", 4); + + + +Timer *timer_lineedit_hboxcontainer2_vboxcontainer_filedialog = memnew(Timer); +timer_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_name("Timer"); +lineedit_hboxcontainer2_vboxcontainer_filedialog->add_child(timer_lineedit_hboxcontainer2_vboxcontainer_filedialog); + +timer_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_name("Timer"); +//timer_lineedit_hboxcontainer2_vboxcontainer_filedialog->set("name", Timer)); + +timer_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_wait_time(0.65); +//timer_lineedit_hboxcontainer2_vboxcontainer_filedialog->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog = memnew(PopupMenu); +popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_name("PopupMenu"); +lineedit_hboxcontainer2_vboxcontainer_filedialog->add_child(popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog); + +popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_name("PopupMenu"); +//popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set("name", PopupMenu)); + +//popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog = memnew(Timer); +timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_name("Timer"); +popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->add_child(timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog); + +timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_name("Timer"); +//timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set("name", Timer)); + +timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_wait_time(0.3); +//timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set("wait_time", 0.3); + +timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set_one_shot(True); +//timer_popupmenu_lineedit_hboxcontainer2_vboxcontainer_filedialog->set("one_shot", True); + + + +OptionButton *optionbutton_hboxcontainer2_vboxcontainer_filedialog = memnew(OptionButton); +optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_name("OptionButton"); +hboxcontainer2_vboxcontainer_filedialog->add_child(optionbutton_hboxcontainer2_vboxcontainer_filedialog); + +optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_name("OptionButton"); +//optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("name", OptionButton)); + +optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_size_flags_horizontal(3); +//optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("size_flags_horizontal", 3); + +optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_size_flags_stretch_ratio(3); +//optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("size_flags_stretch_ratio", 3); + +optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_text("All Files (*)"); +//optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("text", "All Files (*)"); + +optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_clip_text(True); +//optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("clip_text", True); + +//optionbutton_hboxcontainer2_vboxcontainer_filedialog property items TYPE_ARRAY value: [All Files (*), [Object:null], False, 0, Null] + +optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_selected(0); +//optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("selected", 0); + + + +PopupMenu *popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog = memnew(PopupMenu); +popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_name("PopupMenu"); +optionbutton_hboxcontainer2_vboxcontainer_filedialog->add_child(popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog); + +popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_name("PopupMenu"); +//popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("name", PopupMenu)); + +popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_input_pass_on_modal_close_click(False); +//popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("input_pass_on_modal_close_click", False); + +//popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog property items TYPE_ARRAY value: [All Files (*), [Object:null], 2, True, False, 0, 0, Null, , False] + +popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_allow_search(True); +//popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("allow_search", True); + + + +Timer *timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog = memnew(Timer); +timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_name("Timer"); +popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->add_child(timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog); + +timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_name("Timer"); +//timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("name", Timer)); + +timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_wait_time(0.3); +//timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("wait_time", 0.3); + +timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set_one_shot(True); +//timer_popupmenu_optionbutton_hboxcontainer2_vboxcontainer_filedialog->set("one_shot", True); + + + +ConfirmationDialog *confirmationdialog_filedialog = memnew(ConfirmationDialog); +confirmationdialog_filedialog->set_name("ConfirmationDialog"); +filedialog->add_child(confirmationdialog_filedialog); + +confirmationdialog_filedialog->set_name("ConfirmationDialog"); +//confirmationdialog_filedialog->set("name", ConfirmationDialog)); + + + +TextureButton *texturebutton_confirmationdialog_filedialog = memnew(TextureButton); +texturebutton_confirmationdialog_filedialog->set_name("TextureButton"); +confirmationdialog_filedialog->add_child(texturebutton_confirmationdialog_filedialog); + +texturebutton_confirmationdialog_filedialog->set_name("TextureButton"); +//texturebutton_confirmationdialog_filedialog->set("name", TextureButton)); + + + +Label *label_confirmationdialog_filedialog = memnew(Label); +label_confirmationdialog_filedialog->set_name("Label"); +confirmationdialog_filedialog->add_child(label_confirmationdialog_filedialog); + +label_confirmationdialog_filedialog->set_name("Label"); +//label_confirmationdialog_filedialog->set("name", Label)); + +label_confirmationdialog_filedialog->set_anchor_right(1); +//label_confirmationdialog_filedialog->set("anchor_right", 1); + +label_confirmationdialog_filedialog->set_anchor_bottom(1); +//label_confirmationdialog_filedialog->set("anchor_bottom", 1); + +label_confirmationdialog_filedialog->set_margin_left(8); +//label_confirmationdialog_filedialog->set("margin_left", 8); + +label_confirmationdialog_filedialog->set_margin_top(8); +//label_confirmationdialog_filedialog->set("margin_top", 8); + +label_confirmationdialog_filedialog->set_margin_right(-8); +//label_confirmationdialog_filedialog->set("margin_right", -8); + +label_confirmationdialog_filedialog->set_margin_bottom(-42); +//label_confirmationdialog_filedialog->set("margin_bottom", -42); + +label_confirmationdialog_filedialog->set_rect_position(Vector2(8, 8)); +//label_confirmationdialog_filedialog->set("rect_position", Vector2(8, 8)); + +label_confirmationdialog_filedialog->set_rect_global_position(Vector2(8, 8)); +//label_confirmationdialog_filedialog->set("rect_global_position", Vector2(8, 8)); + +label_confirmationdialog_filedialog->set_rect_size(Vector2(0, 14)); +//label_confirmationdialog_filedialog->set("rect_size", Vector2(0, 14)); + + + +HBoxContainer *hboxcontainer_confirmationdialog_filedialog = memnew(HBoxContainer); +hboxcontainer_confirmationdialog_filedialog->set_name("HBoxContainer"); +confirmationdialog_filedialog->add_child(hboxcontainer_confirmationdialog_filedialog); + +hboxcontainer_confirmationdialog_filedialog->set_name("HBoxContainer"); +//hboxcontainer_confirmationdialog_filedialog->set("name", HBoxContainer)); + + + +Control *control3_hboxcontainer_confirmationdialog_filedialog = memnew(Control); +control3_hboxcontainer_confirmationdialog_filedialog->set_name("Control3"); +hboxcontainer_confirmationdialog_filedialog->add_child(control3_hboxcontainer_confirmationdialog_filedialog); + +control3_hboxcontainer_confirmationdialog_filedialog->set_name("Control3"); +//control3_hboxcontainer_confirmationdialog_filedialog->set("name", Control3)); + +control3_hboxcontainer_confirmationdialog_filedialog->set_mouse_filter(1); +//control3_hboxcontainer_confirmationdialog_filedialog->set("mouse_filter", 1); + +control3_hboxcontainer_confirmationdialog_filedialog->set_size_flags_horizontal(3); +//control3_hboxcontainer_confirmationdialog_filedialog->set("size_flags_horizontal", 3); + + + +Button *button2_hboxcontainer_confirmationdialog_filedialog = memnew(Button); +button2_hboxcontainer_confirmationdialog_filedialog->set_name("Button2"); +hboxcontainer_confirmationdialog_filedialog->add_child(button2_hboxcontainer_confirmationdialog_filedialog); + +button2_hboxcontainer_confirmationdialog_filedialog->set_name("Button2"); +//button2_hboxcontainer_confirmationdialog_filedialog->set("name", Button2)); + +button2_hboxcontainer_confirmationdialog_filedialog->set_text("Cancel"); +//button2_hboxcontainer_confirmationdialog_filedialog->set("text", "Cancel"); + + + +Control *control_hboxcontainer_confirmationdialog_filedialog = memnew(Control); +control_hboxcontainer_confirmationdialog_filedialog->set_name("Control"); +hboxcontainer_confirmationdialog_filedialog->add_child(control_hboxcontainer_confirmationdialog_filedialog); + +control_hboxcontainer_confirmationdialog_filedialog->set_name("Control"); +//control_hboxcontainer_confirmationdialog_filedialog->set("name", Control)); + +control_hboxcontainer_confirmationdialog_filedialog->set_mouse_filter(1); +//control_hboxcontainer_confirmationdialog_filedialog->set("mouse_filter", 1); + +control_hboxcontainer_confirmationdialog_filedialog->set_size_flags_horizontal(3); +//control_hboxcontainer_confirmationdialog_filedialog->set("size_flags_horizontal", 3); + + + +Button *button_hboxcontainer_confirmationdialog_filedialog = memnew(Button); +button_hboxcontainer_confirmationdialog_filedialog->set_name("Button"); +hboxcontainer_confirmationdialog_filedialog->add_child(button_hboxcontainer_confirmationdialog_filedialog); + +button_hboxcontainer_confirmationdialog_filedialog->set_name("Button"); +//button_hboxcontainer_confirmationdialog_filedialog->set("name", Button)); + +button_hboxcontainer_confirmationdialog_filedialog->set_text("OK"); +//button_hboxcontainer_confirmationdialog_filedialog->set("text", "OK"); + + + +Control *control2_hboxcontainer_confirmationdialog_filedialog = memnew(Control); +control2_hboxcontainer_confirmationdialog_filedialog->set_name("Control2"); +hboxcontainer_confirmationdialog_filedialog->add_child(control2_hboxcontainer_confirmationdialog_filedialog); + +control2_hboxcontainer_confirmationdialog_filedialog->set_name("Control2"); +//control2_hboxcontainer_confirmationdialog_filedialog->set("name", Control2)); + +control2_hboxcontainer_confirmationdialog_filedialog->set_mouse_filter(1); +//control2_hboxcontainer_confirmationdialog_filedialog->set("mouse_filter", 1); + +control2_hboxcontainer_confirmationdialog_filedialog->set_size_flags_horizontal(3); +//control2_hboxcontainer_confirmationdialog_filedialog->set("size_flags_horizontal", 3); + + + +ConfirmationDialog *confirmationdialog2_filedialog = memnew(ConfirmationDialog); +confirmationdialog2_filedialog->set_name("ConfirmationDialog2"); +filedialog->add_child(confirmationdialog2_filedialog); + +confirmationdialog2_filedialog->set_name("ConfirmationDialog2"); +//confirmationdialog2_filedialog->set("name", ConfirmationDialog2)); + +confirmationdialog2_filedialog->set_window_title("Create Folder"); +//confirmationdialog2_filedialog->set("window_title", "Create Folder"); + + + +TextureButton *texturebutton_confirmationdialog2_filedialog = memnew(TextureButton); +texturebutton_confirmationdialog2_filedialog->set_name("TextureButton"); +confirmationdialog2_filedialog->add_child(texturebutton_confirmationdialog2_filedialog); + +texturebutton_confirmationdialog2_filedialog->set_name("TextureButton"); +//texturebutton_confirmationdialog2_filedialog->set("name", TextureButton)); + + + +Label *label_confirmationdialog2_filedialog = memnew(Label); +label_confirmationdialog2_filedialog->set_name("Label"); +confirmationdialog2_filedialog->add_child(label_confirmationdialog2_filedialog); + +label_confirmationdialog2_filedialog->set_name("Label"); +//label_confirmationdialog2_filedialog->set("name", Label)); + +label_confirmationdialog2_filedialog->set_anchor_right(1); +//label_confirmationdialog2_filedialog->set("anchor_right", 1); + +label_confirmationdialog2_filedialog->set_anchor_bottom(1); +//label_confirmationdialog2_filedialog->set("anchor_bottom", 1); + +label_confirmationdialog2_filedialog->set_margin_left(8); +//label_confirmationdialog2_filedialog->set("margin_left", 8); + +label_confirmationdialog2_filedialog->set_margin_top(8); +//label_confirmationdialog2_filedialog->set("margin_top", 8); + +label_confirmationdialog2_filedialog->set_margin_right(-8); +//label_confirmationdialog2_filedialog->set("margin_right", -8); + +label_confirmationdialog2_filedialog->set_margin_bottom(-42); +//label_confirmationdialog2_filedialog->set("margin_bottom", -42); + +label_confirmationdialog2_filedialog->set_rect_position(Vector2(8, 8)); +//label_confirmationdialog2_filedialog->set("rect_position", Vector2(8, 8)); + +label_confirmationdialog2_filedialog->set_rect_global_position(Vector2(8, 8)); +//label_confirmationdialog2_filedialog->set("rect_global_position", Vector2(8, 8)); + +label_confirmationdialog2_filedialog->set_rect_size(Vector2(0, 14)); +//label_confirmationdialog2_filedialog->set("rect_size", Vector2(0, 14)); + + + +HBoxContainer *hboxcontainer_confirmationdialog2_filedialog = memnew(HBoxContainer); +hboxcontainer_confirmationdialog2_filedialog->set_name("HBoxContainer"); +confirmationdialog2_filedialog->add_child(hboxcontainer_confirmationdialog2_filedialog); + +hboxcontainer_confirmationdialog2_filedialog->set_name("HBoxContainer"); +//hboxcontainer_confirmationdialog2_filedialog->set("name", HBoxContainer)); + + + +Control *control3_hboxcontainer_confirmationdialog2_filedialog = memnew(Control); +control3_hboxcontainer_confirmationdialog2_filedialog->set_name("Control3"); +hboxcontainer_confirmationdialog2_filedialog->add_child(control3_hboxcontainer_confirmationdialog2_filedialog); + +control3_hboxcontainer_confirmationdialog2_filedialog->set_name("Control3"); +//control3_hboxcontainer_confirmationdialog2_filedialog->set("name", Control3)); + +control3_hboxcontainer_confirmationdialog2_filedialog->set_mouse_filter(1); +//control3_hboxcontainer_confirmationdialog2_filedialog->set("mouse_filter", 1); + +control3_hboxcontainer_confirmationdialog2_filedialog->set_size_flags_horizontal(3); +//control3_hboxcontainer_confirmationdialog2_filedialog->set("size_flags_horizontal", 3); + + + +Button *button2_hboxcontainer_confirmationdialog2_filedialog = memnew(Button); +button2_hboxcontainer_confirmationdialog2_filedialog->set_name("Button2"); +hboxcontainer_confirmationdialog2_filedialog->add_child(button2_hboxcontainer_confirmationdialog2_filedialog); + +button2_hboxcontainer_confirmationdialog2_filedialog->set_name("Button2"); +//button2_hboxcontainer_confirmationdialog2_filedialog->set("name", Button2)); + +button2_hboxcontainer_confirmationdialog2_filedialog->set_text("Cancel"); +//button2_hboxcontainer_confirmationdialog2_filedialog->set("text", "Cancel"); + + + +Control *control_hboxcontainer_confirmationdialog2_filedialog = memnew(Control); +control_hboxcontainer_confirmationdialog2_filedialog->set_name("Control"); +hboxcontainer_confirmationdialog2_filedialog->add_child(control_hboxcontainer_confirmationdialog2_filedialog); + +control_hboxcontainer_confirmationdialog2_filedialog->set_name("Control"); +//control_hboxcontainer_confirmationdialog2_filedialog->set("name", Control)); + +control_hboxcontainer_confirmationdialog2_filedialog->set_mouse_filter(1); +//control_hboxcontainer_confirmationdialog2_filedialog->set("mouse_filter", 1); + +control_hboxcontainer_confirmationdialog2_filedialog->set_size_flags_horizontal(3); +//control_hboxcontainer_confirmationdialog2_filedialog->set("size_flags_horizontal", 3); + + + +Button *button_hboxcontainer_confirmationdialog2_filedialog = memnew(Button); +button_hboxcontainer_confirmationdialog2_filedialog->set_name("Button"); +hboxcontainer_confirmationdialog2_filedialog->add_child(button_hboxcontainer_confirmationdialog2_filedialog); + +button_hboxcontainer_confirmationdialog2_filedialog->set_name("Button"); +//button_hboxcontainer_confirmationdialog2_filedialog->set("name", Button)); + +button_hboxcontainer_confirmationdialog2_filedialog->set_text("OK"); +//button_hboxcontainer_confirmationdialog2_filedialog->set("text", "OK"); + + + +Control *control2_hboxcontainer_confirmationdialog2_filedialog = memnew(Control); +control2_hboxcontainer_confirmationdialog2_filedialog->set_name("Control2"); +hboxcontainer_confirmationdialog2_filedialog->add_child(control2_hboxcontainer_confirmationdialog2_filedialog); + +control2_hboxcontainer_confirmationdialog2_filedialog->set_name("Control2"); +//control2_hboxcontainer_confirmationdialog2_filedialog->set("name", Control2)); + +control2_hboxcontainer_confirmationdialog2_filedialog->set_mouse_filter(1); +//control2_hboxcontainer_confirmationdialog2_filedialog->set("mouse_filter", 1); + +control2_hboxcontainer_confirmationdialog2_filedialog->set_size_flags_horizontal(3); +//control2_hboxcontainer_confirmationdialog2_filedialog->set("size_flags_horizontal", 3); + + + +VBoxContainer *vboxcontainer_confirmationdialog2_filedialog = memnew(VBoxContainer); +vboxcontainer_confirmationdialog2_filedialog->set_name("VBoxContainer"); +confirmationdialog2_filedialog->add_child(vboxcontainer_confirmationdialog2_filedialog); + +vboxcontainer_confirmationdialog2_filedialog->set_name("VBoxContainer"); +//vboxcontainer_confirmationdialog2_filedialog->set("name", VBoxContainer)); + + + +Label *label_vboxcontainer_confirmationdialog2_filedialog = memnew(Label); +label_vboxcontainer_confirmationdialog2_filedialog->set_name("Label"); +vboxcontainer_confirmationdialog2_filedialog->add_child(label_vboxcontainer_confirmationdialog2_filedialog); + +label_vboxcontainer_confirmationdialog2_filedialog->set_name("Label"); +//label_vboxcontainer_confirmationdialog2_filedialog->set("name", Label)); + +label_vboxcontainer_confirmationdialog2_filedialog->set_text("Name:"); +//label_vboxcontainer_confirmationdialog2_filedialog->set("text", "Name:"); + + + +MarginContainer *margincontainer_vboxcontainer_confirmationdialog2_filedialog = memnew(MarginContainer); +margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("MarginContainer"); +vboxcontainer_confirmationdialog2_filedialog->add_child(margincontainer_vboxcontainer_confirmationdialog2_filedialog); + +margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("MarginContainer"); +//margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("name", MarginContainer)); + +margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_custom_constants/margin_left(0); +//margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("custom_constants/margin_left", 0); + + + +LineEdit *lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog = memnew(LineEdit); +lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("LineEdit"); +margincontainer_vboxcontainer_confirmationdialog2_filedialog->add_child(lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog); + +lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("LineEdit"); +//lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("name", LineEdit)); + + + +Timer *timer_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog = memnew(Timer); +timer_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("Timer"); +lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->add_child(timer_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog); + +timer_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("Timer"); +//timer_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("name", Timer)); + +timer_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_wait_time(0.65); +//timer_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog = memnew(PopupMenu); +popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("PopupMenu"); +lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->add_child(popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog); + +popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("PopupMenu"); +//popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("name", PopupMenu)); + +//popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog = memnew(Timer); +timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("Timer"); +popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->add_child(timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog); + +timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_name("Timer"); +//timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("name", Timer)); + +timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_wait_time(0.3); +//timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("wait_time", 0.3); + +timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set_one_shot(True); +//timer_popupmenu_lineedit_margincontainer_vboxcontainer_confirmationdialog2_filedialog->set("one_shot", True); + + + +AcceptDialog *acceptdialog_filedialog = memnew(AcceptDialog); +acceptdialog_filedialog->set_name("AcceptDialog"); +filedialog->add_child(acceptdialog_filedialog); + +acceptdialog_filedialog->set_name("AcceptDialog"); +//acceptdialog_filedialog->set("name", AcceptDialog)); + +acceptdialog_filedialog->set_dialog_text("Could not create folder."); +//acceptdialog_filedialog->set("dialog_text", Could not create folder.)); + + + +TextureButton *texturebutton_acceptdialog_filedialog = memnew(TextureButton); +texturebutton_acceptdialog_filedialog->set_name("TextureButton"); +acceptdialog_filedialog->add_child(texturebutton_acceptdialog_filedialog); + +texturebutton_acceptdialog_filedialog->set_name("TextureButton"); +//texturebutton_acceptdialog_filedialog->set("name", TextureButton)); + + + +Label *label_acceptdialog_filedialog = memnew(Label); +label_acceptdialog_filedialog->set_name("Label"); +acceptdialog_filedialog->add_child(label_acceptdialog_filedialog); + +label_acceptdialog_filedialog->set_name("Label"); +//label_acceptdialog_filedialog->set("name", Label)); + +label_acceptdialog_filedialog->set_anchor_right(1); +//label_acceptdialog_filedialog->set("anchor_right", 1); + +label_acceptdialog_filedialog->set_anchor_bottom(1); +//label_acceptdialog_filedialog->set("anchor_bottom", 1); + +label_acceptdialog_filedialog->set_margin_left(8); +//label_acceptdialog_filedialog->set("margin_left", 8); + +label_acceptdialog_filedialog->set_margin_top(8); +//label_acceptdialog_filedialog->set("margin_top", 8); + +label_acceptdialog_filedialog->set_margin_right(-8); +//label_acceptdialog_filedialog->set("margin_right", -8); + +label_acceptdialog_filedialog->set_margin_bottom(-42); +//label_acceptdialog_filedialog->set("margin_bottom", -42); + +label_acceptdialog_filedialog->set_rect_position(Vector2(8, 8)); +//label_acceptdialog_filedialog->set("rect_position", Vector2(8, 8)); + +label_acceptdialog_filedialog->set_rect_global_position(Vector2(8, 8)); +//label_acceptdialog_filedialog->set("rect_global_position", Vector2(8, 8)); + +label_acceptdialog_filedialog->set_rect_size(Vector2(0, 14)); +//label_acceptdialog_filedialog->set("rect_size", Vector2(0, 14)); + +label_acceptdialog_filedialog->set_text("Could not create folder."); +//label_acceptdialog_filedialog->set("text", "Could not create folder."); + + + +HBoxContainer *hboxcontainer_acceptdialog_filedialog = memnew(HBoxContainer); +hboxcontainer_acceptdialog_filedialog->set_name("HBoxContainer"); +acceptdialog_filedialog->add_child(hboxcontainer_acceptdialog_filedialog); + +hboxcontainer_acceptdialog_filedialog->set_name("HBoxContainer"); +//hboxcontainer_acceptdialog_filedialog->set("name", HBoxContainer)); + +hboxcontainer_acceptdialog_filedialog->set_margin_left(8); +//hboxcontainer_acceptdialog_filedialog->set("margin_left", 8); + +hboxcontainer_acceptdialog_filedialog->set_margin_top(-28); +//hboxcontainer_acceptdialog_filedialog->set("margin_top", -28); + +hboxcontainer_acceptdialog_filedialog->set_margin_right(47); +//hboxcontainer_acceptdialog_filedialog->set("margin_right", 47); + +hboxcontainer_acceptdialog_filedialog->set_margin_bottom(-8); +//hboxcontainer_acceptdialog_filedialog->set("margin_bottom", -8); + +hboxcontainer_acceptdialog_filedialog->set_rect_position(Vector2(8, -28)); +//hboxcontainer_acceptdialog_filedialog->set("rect_position", Vector2(8, -28)); + +hboxcontainer_acceptdialog_filedialog->set_rect_global_position(Vector2(8, -28)); +//hboxcontainer_acceptdialog_filedialog->set("rect_global_position", Vector2(8, -28)); + +hboxcontainer_acceptdialog_filedialog->set_rect_size(Vector2(39, 20)); +//hboxcontainer_acceptdialog_filedialog->set("rect_size", Vector2(39, 20)); + + + +Control *control_hboxcontainer_acceptdialog_filedialog = memnew(Control); +control_hboxcontainer_acceptdialog_filedialog->set_name("Control"); +hboxcontainer_acceptdialog_filedialog->add_child(control_hboxcontainer_acceptdialog_filedialog); + +control_hboxcontainer_acceptdialog_filedialog->set_name("Control"); +//control_hboxcontainer_acceptdialog_filedialog->set("name", Control)); + +control_hboxcontainer_acceptdialog_filedialog->set_mouse_filter(1); +//control_hboxcontainer_acceptdialog_filedialog->set("mouse_filter", 1); + +control_hboxcontainer_acceptdialog_filedialog->set_size_flags_horizontal(3); +//control_hboxcontainer_acceptdialog_filedialog->set("size_flags_horizontal", 3); + + + +Button *button_hboxcontainer_acceptdialog_filedialog = memnew(Button); +button_hboxcontainer_acceptdialog_filedialog->set_name("Button"); +hboxcontainer_acceptdialog_filedialog->add_child(button_hboxcontainer_acceptdialog_filedialog); + +button_hboxcontainer_acceptdialog_filedialog->set_name("Button"); +//button_hboxcontainer_acceptdialog_filedialog->set("name", Button)); + +button_hboxcontainer_acceptdialog_filedialog->set_text("OK"); +//button_hboxcontainer_acceptdialog_filedialog->set("text", "OK"); + + + +Control *control2_hboxcontainer_acceptdialog_filedialog = memnew(Control); +control2_hboxcontainer_acceptdialog_filedialog->set_name("Control2"); +hboxcontainer_acceptdialog_filedialog->add_child(control2_hboxcontainer_acceptdialog_filedialog); + +control2_hboxcontainer_acceptdialog_filedialog->set_name("Control2"); +//control2_hboxcontainer_acceptdialog_filedialog->set("name", Control2)); + +control2_hboxcontainer_acceptdialog_filedialog->set_mouse_filter(1); +//control2_hboxcontainer_acceptdialog_filedialog->set("mouse_filter", 1); + +control2_hboxcontainer_acceptdialog_filedialog->set_size_flags_horizontal(3); +//control2_hboxcontainer_acceptdialog_filedialog->set("size_flags_horizontal", 3); + + + +AcceptDialog *acceptdialog2_filedialog = memnew(AcceptDialog); +acceptdialog2_filedialog->set_name("AcceptDialog2"); +filedialog->add_child(acceptdialog2_filedialog); + +acceptdialog2_filedialog->set_name("AcceptDialog2"); +//acceptdialog2_filedialog->set("name", AcceptDialog2)); + +acceptdialog2_filedialog->set_dialog_text("Must use a valid extension."); +//acceptdialog2_filedialog->set("dialog_text", Must use a valid extension.)); + + + +TextureButton *texturebutton_acceptdialog2_filedialog = memnew(TextureButton); +texturebutton_acceptdialog2_filedialog->set_name("TextureButton"); +acceptdialog2_filedialog->add_child(texturebutton_acceptdialog2_filedialog); + +texturebutton_acceptdialog2_filedialog->set_name("TextureButton"); +//texturebutton_acceptdialog2_filedialog->set("name", TextureButton)); + + + +Label *label_acceptdialog2_filedialog = memnew(Label); +label_acceptdialog2_filedialog->set_name("Label"); +acceptdialog2_filedialog->add_child(label_acceptdialog2_filedialog); + +label_acceptdialog2_filedialog->set_name("Label"); +//label_acceptdialog2_filedialog->set("name", Label)); + +label_acceptdialog2_filedialog->set_anchor_right(1); +//label_acceptdialog2_filedialog->set("anchor_right", 1); + +label_acceptdialog2_filedialog->set_anchor_bottom(1); +//label_acceptdialog2_filedialog->set("anchor_bottom", 1); + +label_acceptdialog2_filedialog->set_margin_left(8); +//label_acceptdialog2_filedialog->set("margin_left", 8); + +label_acceptdialog2_filedialog->set_margin_top(8); +//label_acceptdialog2_filedialog->set("margin_top", 8); + +label_acceptdialog2_filedialog->set_margin_right(-8); +//label_acceptdialog2_filedialog->set("margin_right", -8); + +label_acceptdialog2_filedialog->set_margin_bottom(-42); +//label_acceptdialog2_filedialog->set("margin_bottom", -42); + +label_acceptdialog2_filedialog->set_rect_position(Vector2(8, 8)); +//label_acceptdialog2_filedialog->set("rect_position", Vector2(8, 8)); + +label_acceptdialog2_filedialog->set_rect_global_position(Vector2(8, 8)); +//label_acceptdialog2_filedialog->set("rect_global_position", Vector2(8, 8)); + +label_acceptdialog2_filedialog->set_rect_size(Vector2(0, 14)); +//label_acceptdialog2_filedialog->set("rect_size", Vector2(0, 14)); + +label_acceptdialog2_filedialog->set_text("Must use a valid extension."); +//label_acceptdialog2_filedialog->set("text", "Must use a valid extension."); + + + +HBoxContainer *hboxcontainer_acceptdialog2_filedialog = memnew(HBoxContainer); +hboxcontainer_acceptdialog2_filedialog->set_name("HBoxContainer"); +acceptdialog2_filedialog->add_child(hboxcontainer_acceptdialog2_filedialog); + +hboxcontainer_acceptdialog2_filedialog->set_name("HBoxContainer"); +//hboxcontainer_acceptdialog2_filedialog->set("name", HBoxContainer)); + +hboxcontainer_acceptdialog2_filedialog->set_margin_left(8); +//hboxcontainer_acceptdialog2_filedialog->set("margin_left", 8); + +hboxcontainer_acceptdialog2_filedialog->set_margin_top(-28); +//hboxcontainer_acceptdialog2_filedialog->set("margin_top", -28); + +hboxcontainer_acceptdialog2_filedialog->set_margin_right(47); +//hboxcontainer_acceptdialog2_filedialog->set("margin_right", 47); + +hboxcontainer_acceptdialog2_filedialog->set_margin_bottom(-8); +//hboxcontainer_acceptdialog2_filedialog->set("margin_bottom", -8); + +hboxcontainer_acceptdialog2_filedialog->set_rect_position(Vector2(8, -28)); +//hboxcontainer_acceptdialog2_filedialog->set("rect_position", Vector2(8, -28)); + +hboxcontainer_acceptdialog2_filedialog->set_rect_global_position(Vector2(8, -28)); +//hboxcontainer_acceptdialog2_filedialog->set("rect_global_position", Vector2(8, -28)); + +hboxcontainer_acceptdialog2_filedialog->set_rect_size(Vector2(39, 20)); +//hboxcontainer_acceptdialog2_filedialog->set("rect_size", Vector2(39, 20)); + + + +Control *control_hboxcontainer_acceptdialog2_filedialog = memnew(Control); +control_hboxcontainer_acceptdialog2_filedialog->set_name("Control"); +hboxcontainer_acceptdialog2_filedialog->add_child(control_hboxcontainer_acceptdialog2_filedialog); + +control_hboxcontainer_acceptdialog2_filedialog->set_name("Control"); +//control_hboxcontainer_acceptdialog2_filedialog->set("name", Control)); + +control_hboxcontainer_acceptdialog2_filedialog->set_mouse_filter(1); +//control_hboxcontainer_acceptdialog2_filedialog->set("mouse_filter", 1); + +control_hboxcontainer_acceptdialog2_filedialog->set_size_flags_horizontal(3); +//control_hboxcontainer_acceptdialog2_filedialog->set("size_flags_horizontal", 3); + + + +Button *button_hboxcontainer_acceptdialog2_filedialog = memnew(Button); +button_hboxcontainer_acceptdialog2_filedialog->set_name("Button"); +hboxcontainer_acceptdialog2_filedialog->add_child(button_hboxcontainer_acceptdialog2_filedialog); + +button_hboxcontainer_acceptdialog2_filedialog->set_name("Button"); +//button_hboxcontainer_acceptdialog2_filedialog->set("name", Button)); + +button_hboxcontainer_acceptdialog2_filedialog->set_text("OK"); +//button_hboxcontainer_acceptdialog2_filedialog->set("text", "OK"); + + + +Control *control2_hboxcontainer_acceptdialog2_filedialog = memnew(Control); +control2_hboxcontainer_acceptdialog2_filedialog->set_name("Control2"); +hboxcontainer_acceptdialog2_filedialog->add_child(control2_hboxcontainer_acceptdialog2_filedialog); + +control2_hboxcontainer_acceptdialog2_filedialog->set_name("Control2"); +//control2_hboxcontainer_acceptdialog2_filedialog->set("name", Control2)); + +control2_hboxcontainer_acceptdialog2_filedialog->set_mouse_filter(1); +//control2_hboxcontainer_acceptdialog2_filedialog->set("mouse_filter", 1); + +control2_hboxcontainer_acceptdialog2_filedialog->set_size_flags_horizontal(3); +//control2_hboxcontainer_acceptdialog2_filedialog->set("size_flags_horizontal", 3); + + + + +} diff --git a/modules/material_maker/editor/widgets/file_dialog/file_dialog.h b/modules/material_maker/editor/widgets/file_dialog/file_dialog.h new file mode 100644 index 000000000..42a452eed --- /dev/null +++ b/modules/material_maker/editor/widgets/file_dialog/file_dialog.h @@ -0,0 +1,38 @@ +#ifndef FILE_DIALOG_H +#define FILE_DIALOG_H + + +class FileDialog : public FileDialog { + GDCLASS(FileDialog, FileDialog); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + void _ready(); + String get_full_current_dir(); + void _on_FileDialog_file_selected(const Variant &path); + void _on_FileDialog_files_selected(const Variant &paths); + void _on_FileDialog_dir_selected(const Variant &dir); + void _on_FileDialog_popup_hide(); + Array select_files(); + void add_favorite(); + + FileDialog(); + ~FileDialog(); + + protected: + static void _bind_methods(); + + //tool + Variant = null; + Variant = null; + signal return_paths(path_list); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/file_dialog/left_panel.cpp b/modules/material_maker/editor/widgets/file_dialog/left_panel.cpp new file mode 100644 index 000000000..062f0c034 --- /dev/null +++ b/modules/material_maker/editor/widgets/file_dialog/left_panel.cpp @@ -0,0 +1,167 @@ + +#include "left_panel.h" + + +Array LeftPanel::get_recents() { + return recents; +} + +void LeftPanel::set_recents(const Array &val) { +recents = val; +} + + +Array LeftPanel::get_favorites() { + return favorites; +} + +void LeftPanel::set_favorites(const Array &val) { +favorites = val; +} + + + + //tool; + Array recents = []; + Array favorites = []; + signal open_directory(dirpath); + //func _ready():; + // if get_node("/root/MainWindow") != null:; + // var config_cache = get_node("/root/MainWindow").config_cache; + // if config_cache.has_section_key("file_dialog", "recents"):; + // var parse_result = JSON.parse(config_cache.get_value("file_dialog", "recents")); + // if parse_result != null:; + // recents = parse_result.result; + // if config_cache.has_section_key("file_dialog", "favorites"):; + // var parse_result = JSON.parse(config_cache.get_value("file_dialog", "favorites")); + // if parse_result != null:; + // favorites = parse_result.result; + // update_lists(); + //func _exit_tree():; + // if get_node("/root/MainWindow") != null:; + // var config_cache = get_node("/root/MainWindow").config_cache; + // config_cache.set_value("file_dialog", "recents", JSON.print(recents)); + // config_cache.set_value("file_dialog", "favorites", JSON.print(favorites)); + + void LeftPanel::add_recent(const String &file_path) { + + if (recents.find(file_path) != -1) { + recents.erase(file_path); +} + + recents.push_front(file_path); + update_lists(); +} + + + void LeftPanel::add_favorite(const String &file_path) { + + if (favorites.find(file_path) == -1) { + favorites.push_back(file_path); + update_lists(); +} + +} + + + String LeftPanel::my_basename(const String &s) { + int slash_pos = s.find_last("/"); + + if (slash_pos == -1 || slash_pos+1 == s.length()) { + return s; +} + + return s.right(slash_pos+1); +} + + + void LeftPanel::update_lists() { + $FavList.clear(); + + for (d in favorites) { + $FavList.add_item(my_basename(d)); + $FavList.set_item_tooltip($FavList.get_item_count()-1, d); +} + + $RecentList.clear(); + + for (d in recents) { + $RecentList.add_item(my_basename(d)); + $RecentList.set_item_tooltip($RecentList.get_item_count()-1, d); +} + +} + + + void LeftPanel::_on_FavList_item_activated(const Variant &index) { + emit_signal("open_directory", $FavList.get_item_tooltip(index)); +} + + + void LeftPanel::_on_RecentList_item_activated(const Variant &index) { + emit_signal("open_directory", $RecentList.get_item_tooltip(index)); +} + + + void LeftPanel::_on_FavList_gui_input(const Variant &event) { + + if (event is InputEventKey && event.pressed && event.scancode == KEY_DELETE) { + + if (! $FavList.get_selected_items().empty()) { + favorites.remove($FavList.get_selected_items()[0]); + update_lists(); +} + +} + +} + + + void LeftPanel::_on_RecentList_gui_input(const Variant &event) { + + if (event is InputEventKey && event.pressed && event.scancode == KEY_DELETE) { + + if (! $RecentList.get_selected_items().empty()) { + recents.remove($RecentList.get_selected_items()[0]); + update_lists(); +} + +} + +} + +} + + LeftPanel::LeftPanel() { + recents = []; + favorites = []; + } + + LeftPanel::~LeftPanel() { + } + + + static void LeftPanel::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_recents"), &LeftPanel::get_recents); + ClassDB::bind_method(D_METHOD("set_recents", "value"), &LeftPanel::set_recents); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "recents"), "set_recents", "get_recents"); + + + ClassDB::bind_method(D_METHOD("get_favorites"), &LeftPanel::get_favorites); + ClassDB::bind_method(D_METHOD("set_favorites", "value"), &LeftPanel::set_favorites); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "favorites"), "set_favorites", "get_favorites"); + + + ClassDB::bind_method(D_METHOD("add_recent", "file_path"), &LeftPanel::add_recent); + ClassDB::bind_method(D_METHOD("add_favorite", "file_path"), &LeftPanel::add_favorite); + ClassDB::bind_method(D_METHOD("my_basename", "s"), &LeftPanel::my_basename); + ClassDB::bind_method(D_METHOD("update_lists"), &LeftPanel::update_lists); + ClassDB::bind_method(D_METHOD("_on_FavList_item_activated", "index"), &LeftPanel::_on_FavList_item_activated); + ClassDB::bind_method(D_METHOD("_on_RecentList_item_activated", "index"), &LeftPanel::_on_RecentList_item_activated); + ClassDB::bind_method(D_METHOD("_on_FavList_gui_input", "event"), &LeftPanel::_on_FavList_gui_input); + ClassDB::bind_method(D_METHOD("_on_RecentList_gui_input", "event"), &LeftPanel::_on_RecentList_gui_input); + + } + + + diff --git a/modules/material_maker/editor/widgets/file_dialog/left_panel.ctscn b/modules/material_maker/editor/widgets/file_dialog/left_panel.ctscn new file mode 100644 index 000000000..4794efb35 --- /dev/null +++ b/modules/material_maker/editor/widgets/file_dialog/left_panel.ctscn @@ -0,0 +1,178 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/windows/file_dialog/left_panel.gd +VBoxContainer *leftpanel = memnew(VBoxContainer); +leftpanel->set_name("LeftPanel"); + +leftpanel->set_name("LeftPanel"); +//leftpanel->set("name", LeftPanel)); + +leftpanel->set_filename("res://addons/mat_maker_gd/windows/file_dialog/left_panel.tscn"); +//leftpanel->set("filename", "res://addons/mat_maker_gd/windows/file_dialog/left_panel.tscn"); + +leftpanel->set_margin_right(40); +//leftpanel->set("margin_right", 40); + +leftpanel->set_margin_bottom(40); +//leftpanel->set("margin_bottom", 40); + +leftpanel->set_rect_size(Vector2(40, 40)); +//leftpanel->set("rect_size", Vector2(40, 40)); + +leftpanel->set_size_flags_vertical(3); +//leftpanel->set("size_flags_vertical", 3); + +//leftpanel property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +Label *recentlabel_leftpanel = memnew(Label); +recentlabel_leftpanel->set_name("RecentLabel"); +leftpanel->add_child(recentlabel_leftpanel); + +recentlabel_leftpanel->set_name("RecentLabel"); +//recentlabel_leftpanel->set("name", RecentLabel)); + +//recentlabel_leftpanel property owner TYPE_OBJECT value: LeftPanel:[VBoxContainer:37180] + +recentlabel_leftpanel->set_margin_right(100); +//recentlabel_leftpanel->set("margin_right", 100); + +recentlabel_leftpanel->set_margin_bottom(14); +//recentlabel_leftpanel->set("margin_bottom", 14); + +recentlabel_leftpanel->set_rect_size(Vector2(100, 14)); +//recentlabel_leftpanel->set("rect_size", Vector2(100, 14)); + +recentlabel_leftpanel->set_text("Recent"); +//recentlabel_leftpanel->set("text", "Recent"); + + + +ItemList *recentlist_leftpanel = memnew(ItemList); +recentlist_leftpanel->set_name("RecentList"); +leftpanel->add_child(recentlist_leftpanel); + +recentlist_leftpanel->set_name("RecentList"); +//recentlist_leftpanel->set("name", RecentList)); + +//recentlist_leftpanel property owner TYPE_OBJECT value: LeftPanel:[VBoxContainer:37180] + +recentlist_leftpanel->set_margin_top(18); +//recentlist_leftpanel->set("margin_top", 18); + +recentlist_leftpanel->set_margin_right(100); +//recentlist_leftpanel->set("margin_right", 100); + +recentlist_leftpanel->set_margin_bottom(18); +//recentlist_leftpanel->set("margin_bottom", 18); + +recentlist_leftpanel->set_rect_position(Vector2(0, 18)); +//recentlist_leftpanel->set("rect_position", Vector2(0, 18)); + +recentlist_leftpanel->set_rect_global_position(Vector2(0, 18)); +//recentlist_leftpanel->set("rect_global_position", Vector2(0, 18)); + +recentlist_leftpanel->set_rect_size(Vector2(100, 0)); +//recentlist_leftpanel->set("rect_size", Vector2(100, 0)); + +recentlist_leftpanel->set_rect_min_size(Vector2(100, 0)); +//recentlist_leftpanel->set("rect_min_size", Vector2(100, 0)); + +recentlist_leftpanel->set_size_flags_vertical(3); +//recentlist_leftpanel->set("size_flags_vertical", 3); + +//recentlist_leftpanel property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +VScrollBar *vscrollbar_recentlist_leftpanel = memnew(VScrollBar); +vscrollbar_recentlist_leftpanel->set_name("VScrollBar"); +recentlist_leftpanel->add_child(vscrollbar_recentlist_leftpanel); + +vscrollbar_recentlist_leftpanel->set_name("VScrollBar"); +//vscrollbar_recentlist_leftpanel->set("name", VScrollBar)); + + + +Label *favlabel_leftpanel = memnew(Label); +favlabel_leftpanel->set_name("FavLabel"); +leftpanel->add_child(favlabel_leftpanel); + +favlabel_leftpanel->set_name("FavLabel"); +//favlabel_leftpanel->set("name", FavLabel)); + +//favlabel_leftpanel property owner TYPE_OBJECT value: LeftPanel:[VBoxContainer:37180] + +favlabel_leftpanel->set_margin_top(22); +//favlabel_leftpanel->set("margin_top", 22); + +favlabel_leftpanel->set_margin_right(100); +//favlabel_leftpanel->set("margin_right", 100); + +favlabel_leftpanel->set_margin_bottom(36); +//favlabel_leftpanel->set("margin_bottom", 36); + +favlabel_leftpanel->set_rect_position(Vector2(0, 22)); +//favlabel_leftpanel->set("rect_position", Vector2(0, 22)); + +favlabel_leftpanel->set_rect_global_position(Vector2(0, 22)); +//favlabel_leftpanel->set("rect_global_position", Vector2(0, 22)); + +favlabel_leftpanel->set_rect_size(Vector2(100, 14)); +//favlabel_leftpanel->set("rect_size", Vector2(100, 14)); + +favlabel_leftpanel->set_text("Favorite"); +//favlabel_leftpanel->set("text", "Favorite"); + + + +ItemList *favlist_leftpanel = memnew(ItemList); +favlist_leftpanel->set_name("FavList"); +leftpanel->add_child(favlist_leftpanel); + +favlist_leftpanel->set_name("FavList"); +//favlist_leftpanel->set("name", FavList)); + +//favlist_leftpanel property owner TYPE_OBJECT value: LeftPanel:[VBoxContainer:37180] + +favlist_leftpanel->set_margin_top(40); +//favlist_leftpanel->set("margin_top", 40); + +favlist_leftpanel->set_margin_right(100); +//favlist_leftpanel->set("margin_right", 100); + +favlist_leftpanel->set_margin_bottom(40); +//favlist_leftpanel->set("margin_bottom", 40); + +favlist_leftpanel->set_rect_position(Vector2(0, 40)); +//favlist_leftpanel->set("rect_position", Vector2(0, 40)); + +favlist_leftpanel->set_rect_global_position(Vector2(0, 40)); +//favlist_leftpanel->set("rect_global_position", Vector2(0, 40)); + +favlist_leftpanel->set_rect_size(Vector2(100, 0)); +//favlist_leftpanel->set("rect_size", Vector2(100, 0)); + +favlist_leftpanel->set_rect_min_size(Vector2(100, 0)); +//favlist_leftpanel->set("rect_min_size", Vector2(100, 0)); + +favlist_leftpanel->set_size_flags_vertical(3); +//favlist_leftpanel->set("size_flags_vertical", 3); + +//favlist_leftpanel property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +VScrollBar *vscrollbar_favlist_leftpanel = memnew(VScrollBar); +vscrollbar_favlist_leftpanel->set_name("VScrollBar"); +favlist_leftpanel->add_child(vscrollbar_favlist_leftpanel); + +vscrollbar_favlist_leftpanel->set_name("VScrollBar"); +//vscrollbar_favlist_leftpanel->set("name", VScrollBar)); + + + + +} diff --git a/modules/material_maker/editor/widgets/file_dialog/left_panel.h b/modules/material_maker/editor/widgets/file_dialog/left_panel.h new file mode 100644 index 000000000..9b8857130 --- /dev/null +++ b/modules/material_maker/editor/widgets/file_dialog/left_panel.h @@ -0,0 +1,55 @@ +#ifndef LEFT_PANEL_H +#define LEFT_PANEL_H + + +class LeftPanel : public VBoxContainer { + GDCLASS(LeftPanel, VBoxContainer); + + public: + + Array get_recents(); + void set_recents(const Array &val); + + Array get_favorites(); + void set_favorites(const Array &val); + + void add_recent(const String &file_path); + void add_favorite(const String &file_path); + String my_basename(const String &s); + void update_lists(); + void _on_FavList_item_activated(const Variant &index); + void _on_RecentList_item_activated(const Variant &index); + void _on_FavList_gui_input(const Variant &event); + void _on_RecentList_gui_input(const Variant &event); + + LeftPanel(); + ~LeftPanel(); + + protected: + static void _bind_methods(); + + //tool + Array recents = []; + Array favorites = []; + signal open_directory(dirpath); + //func _ready(): + // if get_node("/root/MainWindow") != null: + // var config_cache = get_node("/root/MainWindow").config_cache + // if config_cache.has_section_key("file_dialog", "recents"): + // var parse_result = JSON.parse(config_cache.get_value("file_dialog", "recents")) + // if parse_result != null: + // recents = parse_result.result + // if config_cache.has_section_key("file_dialog", "favorites"): + // var parse_result = JSON.parse(config_cache.get_value("file_dialog", "favorites")) + // if parse_result != null: + // favorites = parse_result.result + // update_lists() + //func _exit_tree(): + // if get_node("/root/MainWindow") != null: + // var config_cache = get_node("/root/MainWindow").config_cache + // config_cache.set_value("file_dialog", "recents", JSON.print(recents)) + // config_cache.set_value("file_dialog", "favorites", JSON.print(favorites)) +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/float_edit/float_edit.cpp b/modules/material_maker/editor/widgets/float_edit/float_edit.cpp new file mode 100644 index 000000000..c67d040aa --- /dev/null +++ b/modules/material_maker/editor/widgets/float_edit/float_edit.cpp @@ -0,0 +1,469 @@ + +#include "float_edit.h" + + +float FloatEdit::get_value() const { + return value; +} + +void FloatEdit::set_value(const float val) { +value = val; +} + + +float FloatEdit::get_min_value() const { + return min_value; +} + +void FloatEdit::set_min_value(const float val) { +min_value = val; +} + + +float FloatEdit::get_max_value() const { + return max_value; +} + +void FloatEdit::set_max_value(const float val) { +max_value = val; +} + + +float FloatEdit::get_step() const { + return step; +} + +void FloatEdit::set_step(const float val) { +step = val; +} + + +bool FloatEdit::get_float_only() const { + return float_only; +} + +void FloatEdit::set_float_only(const bool val) { +float_only = val; +} + + +bool FloatEdit::get_sliding() const { + return sliding; +} + +void FloatEdit::set_sliding(const bool val) { +sliding = val; +} + + +float FloatEdit::get_start_position() const { + return start_position; +} + +void FloatEdit::set_start_position(const float val) { +start_position = val; +} + + +float FloatEdit::get_last_position() const { + return last_position; +} + +void FloatEdit::set_last_position(const float val) { +last_position = val; +} + + +float FloatEdit::get_start_value() const { + return start_value; +} + +void FloatEdit::set_start_value(const float val) { +start_value = val; +} + + +int FloatEdit::get_modifiers() const { + return modifiers; +} + +void FloatEdit::set_modifiers(const int val) { +modifiers = val; +} + + +bool FloatEdit::get_from_lower_bound() const { + return from_lower_bound; +} + +void FloatEdit::set_from_lower_bound(const bool val) { +from_lower_bound = val; +} + + +bool FloatEdit::get_from_upper_bound() const { + return from_upper_bound; +} + +void FloatEdit::set_from_upper_bound(const bool val) { +from_upper_bound = val; +} + + + + //tool; + //export ; + // setget set_value; + float value = 0.5; + //export ; + // setget set_min_value; + float min_value = 0.0; + //export ; + // setget set_max_value; + float max_value = 1.0; + //export ; + // setget set_step; + float step = 0.0; + //export ; + bool float_only = false; + bool sliding = false; + float start_position = ; + float last_position = ; + float start_value = ; + int modifiers = ; + bool from_lower_bound = false; + bool from_upper_bound = false; + onready var slider = $Slider; + onready var cursor = $Slider/Cursor; + signal value_changed(value); + + void FloatEdit::_ready() { + do_update(); +} + + + void FloatEdit::set_value(const Variant &v) { + + if (v is float) { + value = v; + do_update(); + $Slider.visible = true; +} + + + else if (v is String && !float_only) { + text = v; + $Slider.visible = false; +} + +} + + + void FloatEdit::set_min_value(const float v) { + min_value = v; + do_update(); +} + + + void FloatEdit::set_max_value(const float v) { + max_value = v; + do_update(); +} + + + void FloatEdit::set_step(const float v) { + step = v; + do_update(); +} + + + void FloatEdit::do_update(const bool update_text) { + + if (update_text && $Slider.visible) { + text = str(value); + + if (cursor != null) { + + if (max_value != min_value) { + cursor.rect_position.x = (clamp(value, min_value, max_value)-min_value)*(slider.rect_size.x-cursor.rect_size.x)/(max_value-min_value); +} + + + else { + cursor.rect_position.x = 0; +} + +} + +} + +} + + + void FloatEdit::get_modifiers(const Variant &event) { + Variant = 0; + + if (event.shift) { + new_modifiers |= 1; +} + + + if (event.control) { + new_modifiers |= 2; +} + + + if (event.alt) { + new_modifiers |= 4; +} + + return new_modifiers; +} + + + void FloatEdit::_on_LineEdit_gui_input(const InputEvent &event) { + + if (!$Slider.visible || !editable) { + return; +} + + + if (event is InputEventMouseButton && event.button_index == BUTTON_LEFT) { + + if (event.is_pressed()) { + last_position = event.position.x; + start_position = last_position; + start_value = value; + sliding = true; + from_lower_bound = value <= min_value; + from_upper_bound = value >= max_value; + modifiers = get_modifiers(event); +} + + + else { + sliding = false; +} + +} + + + else if (sliding && event is InputEventMouseMotion && event.button_mask == BUTTON_MASK_LEFT) { + Variant = get_modifiers(event); + + if (new_modifiers != modifiers) { + start_position = last_position; + start_value = value; + modifiers = new_modifiers; +} + + + else { + last_position = event.position.x; + float delta = last_position-start_position; + Variant = step; + + if (event.control) { + delta *= 0.2; +} + + + else if (event.shift) { + delta *= 5.0; +} + + + if (event.alt) { + current_step *= 0.01; +} + + float v = start_value+sign(delta)*pow(abs(delta)*0.005, 2)*abs(max_value - min_value); + + if (current_step != 0) { + v = min_value+floor((v - min_value)/current_step)*current_step; +} + + + if (!from_lower_bound && v < min_value) { + v = min_value; +} + + + if (!from_upper_bound && v > max_value) { + v = max_value; +} + + set_value(v); + select(0, 0); + emit_signal("value_changed", value); + release_focus(); +} + +} + + + else if (event is InputEventKey && !event.echo) { + + { + + { + start_position = last_position; + start_value = value; + modifiers = get_modifiers(event); +} + +} + +} + +} + + + void FloatEdit::_on_LineEdit_text_changed(const String &new_text) { + + if (new_text.is_valid_float()) { + value = new_text.to_float(); + do_update(false); +} + +} + + + void FloatEdit::_on_LineEdit_text_entered(const String &new_text, const Variant &release) { + + if (new_text.is_valid_float()) { + value = new_text.to_float(); + do_update(); + emit_signal("value_changed", value); + $Slider.visible = true; +} + + + else if (float_only) { + do_update(); + emit_signal("value_changed", value); + $Slider.visible = true; +} + + + else { + emit_signal("value_changed", new_text); + $Slider.visible = false; +} + + + if (release) { + release_focus(); +} + +} + + + void FloatEdit::_on_FloatEdit_focus_entered() { + select_all(); +} + + + void FloatEdit::_on_LineEdit_focus_exited() { + _on_LineEdit_text_entered(text, false); +} + +} + + FloatEdit::FloatEdit() { + value = 0.5; + min_value = 0.0; + max_value = 1.0; + step = 0.0; + float_only = false; + sliding = false; + start_position = ; + last_position = ; + start_value = ; + modifiers = ; + from_lower_bound = false; + from_upper_bound = false; + } + + FloatEdit::~FloatEdit() { + } + + + static void FloatEdit::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_value"), &FloatEdit::get_value); + ClassDB::bind_method(D_METHOD("set_value", "value"), &FloatEdit::set_value); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "value"), "set_value", "get_value"); + + + ClassDB::bind_method(D_METHOD("get_min_value"), &FloatEdit::get_min_value); + ClassDB::bind_method(D_METHOD("set_min_value", "value"), &FloatEdit::set_min_value); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "min_value"), "set_min_value", "get_min_value"); + + + ClassDB::bind_method(D_METHOD("get_max_value"), &FloatEdit::get_max_value); + ClassDB::bind_method(D_METHOD("set_max_value", "value"), &FloatEdit::set_max_value); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "max_value"), "set_max_value", "get_max_value"); + + + ClassDB::bind_method(D_METHOD("get_step"), &FloatEdit::get_step); + ClassDB::bind_method(D_METHOD("set_step", "value"), &FloatEdit::set_step); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "step"), "set_step", "get_step"); + + + ClassDB::bind_method(D_METHOD("get_float_only"), &FloatEdit::get_float_only); + ClassDB::bind_method(D_METHOD("set_float_only", "value"), &FloatEdit::set_float_only); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "float_only"), "set_float_only", "get_float_only"); + + + ClassDB::bind_method(D_METHOD("get_sliding"), &FloatEdit::get_sliding); + ClassDB::bind_method(D_METHOD("set_sliding", "value"), &FloatEdit::set_sliding); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sliding"), "set_sliding", "get_sliding"); + + + ClassDB::bind_method(D_METHOD("get_start_position"), &FloatEdit::get_start_position); + ClassDB::bind_method(D_METHOD("set_start_position", "value"), &FloatEdit::set_start_position); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "start_position"), "set_start_position", "get_start_position"); + + + ClassDB::bind_method(D_METHOD("get_last_position"), &FloatEdit::get_last_position); + ClassDB::bind_method(D_METHOD("set_last_position", "value"), &FloatEdit::set_last_position); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "last_position"), "set_last_position", "get_last_position"); + + + ClassDB::bind_method(D_METHOD("get_start_value"), &FloatEdit::get_start_value); + ClassDB::bind_method(D_METHOD("set_start_value", "value"), &FloatEdit::set_start_value); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "start_value"), "set_start_value", "get_start_value"); + + + ClassDB::bind_method(D_METHOD("get_modifiers"), &FloatEdit::get_modifiers); + ClassDB::bind_method(D_METHOD("set_modifiers", "value"), &FloatEdit::set_modifiers); + ADD_PROPERTY(PropertyInfo(Variant::INT, "modifiers"), "set_modifiers", "get_modifiers"); + + + ClassDB::bind_method(D_METHOD("get_from_lower_bound"), &FloatEdit::get_from_lower_bound); + ClassDB::bind_method(D_METHOD("set_from_lower_bound", "value"), &FloatEdit::set_from_lower_bound); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "from_lower_bound"), "set_from_lower_bound", "get_from_lower_bound"); + + + ClassDB::bind_method(D_METHOD("get_from_upper_bound"), &FloatEdit::get_from_upper_bound); + ClassDB::bind_method(D_METHOD("set_from_upper_bound", "value"), &FloatEdit::set_from_upper_bound); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "from_upper_bound"), "set_from_upper_bound", "get_from_upper_bound"); + + + ClassDB::bind_method(D_METHOD("_ready"), &FloatEdit::_ready); + ClassDB::bind_method(D_METHOD("set_value", "v"), &FloatEdit::set_value); + ClassDB::bind_method(D_METHOD("set_min_value", "v"), &FloatEdit::set_min_value); + ClassDB::bind_method(D_METHOD("set_max_value", "v"), &FloatEdit::set_max_value); + ClassDB::bind_method(D_METHOD("set_step", "v"), &FloatEdit::set_step); + ClassDB::bind_method(D_METHOD("do_update", "update_text"), &FloatEdit::do_update, true); + ClassDB::bind_method(D_METHOD("get_modifiers", "event"), &FloatEdit::get_modifiers); + ClassDB::bind_method(D_METHOD("_on_LineEdit_gui_input", "event"), &FloatEdit::_on_LineEdit_gui_input); + ClassDB::bind_method(D_METHOD("_on_LineEdit_text_changed", "new_text"), &FloatEdit::_on_LineEdit_text_changed); + ClassDB::bind_method(D_METHOD("_on_LineEdit_text_entered", "new_text", "release"), &FloatEdit::_on_LineEdit_text_entered, true); + ClassDB::bind_method(D_METHOD("_on_FloatEdit_focus_entered"), &FloatEdit::_on_FloatEdit_focus_entered); + ClassDB::bind_method(D_METHOD("_on_LineEdit_focus_exited"), &FloatEdit::_on_LineEdit_focus_exited); + + } + + + diff --git a/modules/material_maker/editor/widgets/float_edit/float_edit.ctscn b/modules/material_maker/editor/widgets/float_edit/float_edit.ctscn new file mode 100644 index 000000000..2aabc27d8 --- /dev/null +++ b/modules/material_maker/editor/widgets/float_edit/float_edit.ctscn @@ -0,0 +1,172 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/float_edit/float_edit.gd +LineEdit *floatedit = memnew(LineEdit); +floatedit->set_name("FloatEdit"); + +floatedit->set_name("FloatEdit"); +//floatedit->set("name", FloatEdit)); + +floatedit->set_filename("res://addons/mat_maker_gd/widgets/float_edit/float_edit.tscn"); +//floatedit->set("filename", "res://addons/mat_maker_gd/widgets/float_edit/float_edit.tscn"); + +floatedit->set_anchor_left(1); +//floatedit->set("anchor_left", 1); + +floatedit->set_anchor_right(1); +//floatedit->set("anchor_right", 1); + +floatedit->set_anchor_bottom(1); +//floatedit->set("anchor_bottom", 1); + +floatedit->set_margin_left(-1280); +//floatedit->set("margin_left", -1280); + +floatedit->set_margin_right(-1222); +//floatedit->set("margin_right", -1222); + +floatedit->set_margin_bottom(-696); +//floatedit->set("margin_bottom", -696); + +floatedit->set_rect_position(Vector2(-1280, 0)); +//floatedit->set("rect_position", Vector2(-1280, 0)); + +floatedit->set_rect_global_position(Vector2(-1280, 0)); +//floatedit->set("rect_global_position", Vector2(-1280, 0)); + +floatedit->set_rect_size(Vector2(58, 24)); +//floatedit->set("rect_size", Vector2(58, 24)); + +floatedit->set_focus_mode(1); +//floatedit->set("focus_mode", 1); + +floatedit->set_text("0.5"); +//floatedit->set("text", "0.5"); + +floatedit->set_max_length(100); +//floatedit->set("max_length", 100); + +floatedit->set_context_menu_enabled(False); +//floatedit->set("context_menu_enabled", False); + +floatedit->set_caret_blink(True); +//floatedit->set("caret_blink", True); + +//floatedit property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +Timer *timer_floatedit = memnew(Timer); +timer_floatedit->set_name("Timer"); +floatedit->add_child(timer_floatedit); + +timer_floatedit->set_name("Timer"); +//timer_floatedit->set("name", Timer)); + +timer_floatedit->set_wait_time(0.65); +//timer_floatedit->set("wait_time", 0.65); + + + +PopupMenu *popupmenu_floatedit = memnew(PopupMenu); +popupmenu_floatedit->set_name("PopupMenu"); +floatedit->add_child(popupmenu_floatedit); + +popupmenu_floatedit->set_name("PopupMenu"); +//popupmenu_floatedit->set("name", PopupMenu)); + +//popupmenu_floatedit property items TYPE_ARRAY value: [Cut, [Object:null], 0, False, False, 0, 268435544, Null, , False, Copy, [Object:null], 0, False, False, 1, 268435523, Null, , False, Paste, [Object:null], 0, False, False, 2, 268435542, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Select All, [Object:null], 0, False, False, 4, 268435521, Null, , False, Clear, [Object:null], 0, False, False, 3, 0, Null, , False, , [Object:null], 0, False, False, -1, 0, Null, , True, Undo, [Object:null], 0, False, False, 5, 268435546, Null, , False, Redo, [Object:null], 0, False, False, 6, 301989978, Null, , False] + + + +Timer *timer_popupmenu_floatedit = memnew(Timer); +timer_popupmenu_floatedit->set_name("Timer"); +popupmenu_floatedit->add_child(timer_popupmenu_floatedit); + +timer_popupmenu_floatedit->set_name("Timer"); +//timer_popupmenu_floatedit->set("name", Timer)); + +timer_popupmenu_floatedit->set_wait_time(0.3); +//timer_popupmenu_floatedit->set("wait_time", 0.3); + +timer_popupmenu_floatedit->set_one_shot(True); +//timer_popupmenu_floatedit->set("one_shot", True); + + + +ColorRect *slider_floatedit = memnew(ColorRect); +slider_floatedit->set_name("Slider"); +floatedit->add_child(slider_floatedit); + +slider_floatedit->set_name("Slider"); +//slider_floatedit->set("name", Slider)); + +//slider_floatedit property owner TYPE_OBJECT value: FloatEdit:[LineEdit:55206] + +slider_floatedit->set_anchor_top(1); +//slider_floatedit->set("anchor_top", 1); + +slider_floatedit->set_anchor_right(1); +//slider_floatedit->set("anchor_right", 1); + +slider_floatedit->set_anchor_bottom(1); +//slider_floatedit->set("anchor_bottom", 1); + +slider_floatedit->set_margin_left(2); +//slider_floatedit->set("margin_left", 2); + +slider_floatedit->set_margin_top(-3); +//slider_floatedit->set("margin_top", -3); + +slider_floatedit->set_margin_right(-2); +//slider_floatedit->set("margin_right", -2); + +slider_floatedit->set_margin_bottom(-3); +//slider_floatedit->set("margin_bottom", -3); + +slider_floatedit->set_rect_position(Vector2(2, -3)); +//slider_floatedit->set("rect_position", Vector2(2, -3)); + +slider_floatedit->set_rect_global_position(Vector2(2, -3)); +//slider_floatedit->set("rect_global_position", Vector2(2, -3)); + +slider_floatedit->set_rect_min_size(Vector2(0, 2)); +//slider_floatedit->set("rect_min_size", Vector2(0, 2)); + +slider_floatedit->set_mouse_filter(2); +//slider_floatedit->set("mouse_filter", 2); + +slider_floatedit->set_color(Color(0.501961, 0.501961, 0.501961, 1)); +//slider_floatedit->set("color", Color(0.501961, 0.501961, 0.501961, 1)); + + + +ColorRect *cursor_slider_floatedit = memnew(ColorRect); +cursor_slider_floatedit->set_name("Cursor"); +slider_floatedit->add_child(cursor_slider_floatedit); + +cursor_slider_floatedit->set_name("Cursor"); +//cursor_slider_floatedit->set("name", Cursor)); + +//cursor_slider_floatedit property owner TYPE_OBJECT value: FloatEdit:[LineEdit:55206] + +cursor_slider_floatedit->set_margin_right(3); +//cursor_slider_floatedit->set("margin_right", 3); + +cursor_slider_floatedit->set_margin_bottom(1); +//cursor_slider_floatedit->set("margin_bottom", 1); + +cursor_slider_floatedit->set_rect_size(Vector2(3, 1)); +//cursor_slider_floatedit->set("rect_size", Vector2(3, 1)); + +cursor_slider_floatedit->set_rect_min_size(Vector2(3, 2)); +//cursor_slider_floatedit->set("rect_min_size", Vector2(3, 2)); + +cursor_slider_floatedit->set_mouse_filter(2); +//cursor_slider_floatedit->set("mouse_filter", 2); + + + + +} diff --git a/modules/material_maker/editor/widgets/float_edit/float_edit.h b/modules/material_maker/editor/widgets/float_edit/float_edit.h new file mode 100644 index 000000000..ba96fdfbd --- /dev/null +++ b/modules/material_maker/editor/widgets/float_edit/float_edit.h @@ -0,0 +1,93 @@ +#ifndef FLOAT_EDIT_H +#define FLOAT_EDIT_H + + +class FloatEdit : public LineEdit { + GDCLASS(FloatEdit, LineEdit); + + public: + + float get_value() const; + void set_value(const float val); + + float get_min_value() const; + void set_min_value(const float val); + + float get_max_value() const; + void set_max_value(const float val); + + float get_step() const; + void set_step(const float val); + + bool get_float_only() const; + void set_float_only(const bool val); + + bool get_sliding() const; + void set_sliding(const bool val); + + float get_start_position() const; + void set_start_position(const float val); + + float get_last_position() const; + void set_last_position(const float val); + + float get_start_value() const; + void set_start_value(const float val); + + int get_modifiers() const; + void set_modifiers(const int val); + + bool get_from_lower_bound() const; + void set_from_lower_bound(const bool val); + + bool get_from_upper_bound() const; + void set_from_upper_bound(const bool val); + + void _ready(); + void set_value(const Variant &v); + void set_min_value(const float v); + void set_max_value(const float v); + void set_step(const float v); + void do_update(const bool update_text = true); + void get_modifiers(const Variant &event); + void _on_LineEdit_gui_input(const InputEvent &event); + void _on_LineEdit_text_changed(const String &new_text); + void _on_LineEdit_text_entered(const String &new_text, const Variant &release = true); + void _on_FloatEdit_focus_entered(); + void _on_LineEdit_focus_exited(); + + FloatEdit(); + ~FloatEdit(); + + protected: + static void _bind_methods(); + + //tool + //export + // setget set_value + float value = 0.5; + //export + // setget set_min_value + float min_value = 0.0; + //export + // setget set_max_value + float max_value = 1.0; + //export + // setget set_step + float step = 0.0; + //export + bool float_only = false; + bool sliding = false; + float start_position = ; + float last_position = ; + float start_value = ; + int modifiers = ; + bool from_lower_bound = false; + bool from_upper_bound = false; + onready var slider = $Slider; + onready var cursor = $Slider/Cursor; + signal value_changed(value); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.cpp b/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.cpp new file mode 100644 index 000000000..48bee2297 --- /dev/null +++ b/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.cpp @@ -0,0 +1,555 @@ + +#include "gradient_editor.h" + + +Variant GradientEditor::get_Variant() { + return Variant; +} + +void GradientEditor::set_Variant(const Variant &val) { +Variant = val; +} + + +Variant GradientEditor::get_Variant() { + return Variant; +} + +void GradientEditor::set_Variant(const Variant &val) { +Variant = val; +} + + +bool GradientEditor::get_embedded() const { + return embedded; +} + +void GradientEditor::set_embedded(const bool val) { +embedded = val; +} + + +UndoRedo GradientEditor::get_*_undo_redo() { + return *_undo_redo; +} + +void GradientEditor::set_*_undo_redo(const UndoRedo &val) { +*_undo_redo = val; +} + + +PoolRealArray GradientEditor::get__saved_points() { + return _saved_points; +} + +void GradientEditor::set__saved_points(const PoolRealArray &val) { +_saved_points = val; +} + + +Variant GradientEditor::get_Variant() { + return Variant; +} + +void GradientEditor::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + + Color GradientCursor::get_color() { + return color; + } + + void GradientCursor::set_color(const Color &val) { + color = val; + } + + + bool GradientCursor::get_sliding() const { + return sliding; + } + + void GradientCursor::set_sliding(const bool val) { + sliding = val; + } + + + + extends Control; + Color color = ; + bool sliding = false; + onready var label : Label = get_parent().get_node("Value"); + const WIDTH : int = 10; + + void GradientCursor::_ready() { + rect_position = Vector2(0, 15); + rect_size = Vector2(WIDTH, 15); +} + + + void GradientCursor::_draw() { + // warning-ignore:integer_division; + PoolVector2Array polygon = PoolVector2Array([Vector2(0, 5), Vector2(WIDTH/2, 0), Vector2(WIDTH, 5), Vector2(WIDTH, 15), Vector2(0, 15), Vector2(0, 5)]); + Variant = color; + c.a = 1.0; + draw_colored_polygon(polygon, c); + draw_polyline(polygon, Color(0.0, 0.0, 0.0) if color.v > 0.5 else Color(1.0, 1.0, 1.0)); +} + + + void GradientCursor::_gui_input(const Variant &ev) { + + if (ev is InputEventMouseButton) { + + if (ev.button_index == BUTTON_LEFT) { + + if (ev.doubleclick) { + get_parent().save_color_state(); + get_parent().select_color(self, ev.global_position); +} + + + else if (ev.pressed) { + get_parent().save_color_state(); + sliding = true; + label.visible = true; + label.text = "%.03f" % get_cursor_position(); +} + + + else { + + if (sliding) { + get_parent().undo_redo_save_color_state(); +} + + sliding = false; + label.visible = false; +} + +} + + + else if (ev.button_index == BUTTON_RIGHT && get_parent().get_sorted_cursors().size() > 2) { + Variant = get_parent(); + parent.save_color_state(); + parent.remove_child(self); + parent.update_value(); + parent.undo_redo_save_color_state(); + queue_free(); +} + +} + + + else if (ev is InputEventMouseMotion && (ev.button_mask & BUTTON_MASK_LEFT) != 0 && sliding) { + rect_position.x += get_local_mouse_position().x; + + if (ev.control) { + rect_position.x = round(get_cursor_position()*20.0)*0.05*(get_parent().rect_size.x - WIDTH); +} + + rect_position.x = min(max(0, rect_position.x), get_parent().rect_size.x-rect_size.x); + get_parent().update_value(); + label.text = "%.03f" % get_cursor_position(); +} + +} + + + float GradientCursor::get_cursor_position() { + return rect_position.x / (get_parent().rect_size.x - WIDTH); +} + + + void GradientCursor::set_color(const Variant &c) { + color = c; + get_parent().update_value(); + update(); +} + + + bool GradientCursor::sort(const Variant &a, const Variant & b) { + return a.get_position() < b.get_position(); +} + + + bool GradientCursor::can_drop_data(const Variant &_position, const Variant & data) { + return typeof(data) == TYPE_COLOR; +} + + + void GradientCursor::drop_data(const Variant &_position, const Variant & data) { + set_color(data); +} + +} + + GradientCursor::GradientCursor() { + color = ; + sliding = false; + } + + GradientCursor::~GradientCursor() { + } + + + static void GradientCursor::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_color"), &GradientCursor::get_color); + ClassDB::bind_method(D_METHOD("set_color", "value"), &GradientCursor::set_color); + ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color"); + + + ClassDB::bind_method(D_METHOD("get_sliding"), &GradientCursor::get_sliding); + ClassDB::bind_method(D_METHOD("set_sliding", "value"), &GradientCursor::set_sliding); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sliding"), "set_sliding", "get_sliding"); + + + ClassDB::bind_method(D_METHOD("_ready"), &GradientCursor::_ready); + ClassDB::bind_method(D_METHOD("_draw"), &GradientCursor::_draw); + ClassDB::bind_method(D_METHOD("_gui_input", "ev"), &GradientCursor::_gui_input); + ClassDB::bind_method(D_METHOD("get_cursor_position"), &GradientCursor::get_cursor_position); + ClassDB::bind_method(D_METHOD("set_color", "c"), &GradientCursor::set_color); + ClassDB::bind_method(D_METHOD("can_drop_data", "_position", " data"), &GradientCursor::can_drop_data); + ClassDB::bind_method(D_METHOD("drop_data", "_position", " data"), &GradientCursor::drop_data); + + } + + + Variant = null; + // setget set_value; + Variant = null; + //export ; + bool embedded = true; + UndoRedo *_undo_redo = null; + signal updated(value); + PoolRealArray _saved_points = PoolRealArray(); + + void GradientEditor::_init() { + connect("resized", self, "on_resized"); +} + + + void GradientEditor::ignore_changes(const Variant &val) { + graph_node.ignore_changes(val); +} + + + void GradientEditor::save_color_state() { + PoolRealArray p = value.points; + _saved_points.resize(0); + + for (v in p) { + _saved_points.push_back(v); +} + + ignore_changes(true); +} + + + void GradientEditor::undo_redo_save_color_state() { + PoolRealArray op = ; + PoolRealArray np = ; + + for (v in _saved_points) { + op.push_back(v); +} + + + for (v in value.get_points()) { + np.push_back(v); +} + + _undo_redo.create_action("MMGD: gradient colors changed"); + _undo_redo.add_do_method(value, "set_points", np); + _undo_redo.add_undo_method(value, "set_points", op); + _undo_redo.commit_action(); + ignore_changes(false); +} + + + void GradientEditor::set_undo_redo(const UndoRedo &ur) { + _undo_redo = ur; +} + + //func get_gradient_from_data(data):; + // if typeof(data) == TYPE_ARRAY:; + // return data; + // elif typeof(data) == TYPE_DICTIONARY:; + // if data.has("parameters") and data.parameters.has("gradient"):; + // return data.parameters.gradient; + // if data.has("type") and data.type == "Gradient":; + // return data; + // return null; + //func get_drag_data(_position : Vector2):; + // var data = 0//MMType.serialize_value(value); + // var preview = ColorRect.new(); + // preview.rect_size = Vector2(64, 24); + // preview.material = $Gradient.material; + // set_drag_preview(preview); + // return data; + //; + //func can_drop_data(_position : Vector2, data) -> bool:; + // return get_gradient_from_data(data) != null; + //; + //func drop_data(_position : Vector2, data) -> void:; + // var gradient = get_gradient_from_data(data); + // //if gradient != null:; + // //set_value(MMType.deserialize_value(gradient)); + + void GradientEditor::set_value(const Variant &v) { + value = v; + update_preview(); + call_deferred("update_cursors"); +} + + + void GradientEditor::update_cursors() { + + for (c in get_children()) { + + if (c is GradientCursor) { + remove_child(c); + c.free(); +} + +} + + int vs = value.get_point_count(); + + for (int i = 0; i < vs; ++i) { //i in range(vs) + add_cursor(value.get_point_value(i) * (rect_size.x-GradientCursor.WIDTH), value.get_point_color(i)); +} + + $Interpolation.selected = value.interpolation_type; +} + + + void GradientEditor::update_value() { + value.clear(); + Array sc = get_sorted_cursors(); + PoolRealArray points = PoolRealArray(); + + for (c in sc) { + points.push_back(c.rect_position.x/(rect_size.x-GradientCursor.WIDTH)); + Color color = c.color; + points.push_back(color.r); + points.push_back(color.g); + points.push_back(color.b); + points.push_back(color.a); +} + + value.set_points(points); + update_preview(); +} + + + void GradientEditor::add_cursor(const Variant &x, const Variant & color) { + Variant = GradientCursor.new(); + add_child(cursor); + cursor.rect_position.x = x; + cursor.color = color; +} + + + void GradientEditor::_gui_input(const Variant &ev) { + + if (ev is InputEventMouseButton && ev.button_index == 1 && ev.doubleclick) { + + if (ev.position.y > 15) { + Variant = clamp(ev.position.x, 0, rect_size.x-GradientCursor.WIDTH); + save_color_state(); + add_cursor(p, get_gradient_color(p)); + update_value(); + undo_redo_save_color_state(); +} + + + else if (embedded) { + Variant = load("res://addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.tscn").instance(); + add_child(popup); + Variant = popup.rect_size; + popup.popup(Rect2(ev.global_position, Vector2(0, 0))); + popup.set_global_position(ev.global_position-Vector2(popup_size.x / 2, popup_size.y)); + popup.init(value, graph_node, _undo_redo); + popup.connect("updated", self, "set_value"); + popup.connect("popup_hide", popup, "queue_free"); +} + + // Showing a color picker popup to change a cursor's color; +} + +} + + Variant ; + + void GradientEditor::select_color(const Variant &cursor, const Variant & position) { + active_cursor = cursor; + //var color_picker_popup = preload("res://addons/mat_maker_gd/widgets/color_picker_popup/color_picker_popup.tscn").instance(); + add_child(color_picker_popup); + Variant = color_picker_popup.get_node("ColorPicker"); + color_picker.color = cursor.color; + color_picker.connect("color_changed", cursor, "set_color"); + color_picker_popup.rect_position = position; + color_picker_popup.connect("popup_hide", self, "undo_redo_save_color_state"); + color_picker_popup.connect("popup_hide", color_picker_popup, "queue_free"); + color_picker_popup.popup(); +} + + // Calculating a color from the gradient and generating the shader; + + Array GradientEditor::get_sorted_cursors() { + Variant = []; + + for (c in get_children()) { + + if (c is GradientCursor) { + array.append(c); +} + +} + + array.sort_custom(GradientCursor, "sort"); + return array; +} + + + void GradientEditor::generate_preview_image() { + Ref tex = $Gradient.texture; + + if (!tex) { + tex = ImageTexture.new(); + $Gradient.texture = tex; +} + + Ref img = tex.get_data(); + float w = $Gradient.rect_size.x; + float h = $Gradient.rect_size.y; + + if (!img) { + img = Image.new(); +} + + + if (img.get_size().x != w || img.get_size().y != h) { + img.create(w, h, false, Image.FORMAT_RGBA8); +} + + img.lock(); + + for (int i = 0; i < w; ++i) { //i in range(w) + float x = float(i) / float(w); + Color col = value.get_gradient_color(x); + + for (int j = 0; j < h; ++j) { //j in range(h) + img.set_pixel(i, j, col); +} + +} + + img.unlock(); + tex.create_from_image(img, 0); +} + + + Color GradientEditor::get_gradient_color(const Variant &x) { + return value.get_gradient_color(x / (rect_size.x - GradientCursor.WIDTH)); +} + + + void GradientEditor::update_preview() { + call_deferred("generate_preview_image"); +} + + + void GradientEditor::_on_Interpolation_item_selected(const Variant &ID) { + ignore_changes(true); + _undo_redo.create_action("MMGD: gradient interpolation_type changed"); + _undo_redo.add_do_method(value, "set_interpolation_type", ID); + _undo_redo.add_undo_method(value, "set_interpolation_type", value.interpolation_type); + _undo_redo.commit_action(); + ignore_changes(false); + update_preview(); +} + + + void GradientEditor::on_resized() { + + if (value) { + update_preview(); + call_deferred("update_cursors"); +} + +} + +} + + GradientEditor::GradientEditor() { + = null; + = null; + embedded = true; + *_undo_redo = null; + _saved_points = PoolRealArray(); + ; + } + + GradientEditor::~GradientEditor() { + } + + + static void GradientEditor::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &GradientEditor::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &GradientEditor::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &GradientEditor::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &GradientEditor::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_embedded"), &GradientEditor::get_embedded); + ClassDB::bind_method(D_METHOD("set_embedded", "value"), &GradientEditor::set_embedded); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "embedded"), "set_embedded", "get_embedded"); + + + ClassDB::bind_method(D_METHOD("get_*_undo_redo"), &GradientEditor::get_*_undo_redo); + ClassDB::bind_method(D_METHOD("set_*_undo_redo", "value"), &GradientEditor::set_*_undo_redo); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "*_undo_redo", PROPERTY_HINT_RESOURCE_TYPE, "UndoRedo"), "set_*_undo_redo", "get_*_undo_redo"); + + + ClassDB::bind_method(D_METHOD("get__saved_points"), &GradientEditor::get__saved_points); + ClassDB::bind_method(D_METHOD("set__saved_points", "value"), &GradientEditor::set__saved_points); + ADD_PROPERTY(PropertyInfo(Variant::POOL_REAL_ARRAY, "_saved_points"), "set__saved_points", "get__saved_points"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &GradientEditor::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &GradientEditor::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("_init"), &GradientEditor::_init); + ClassDB::bind_method(D_METHOD("ignore_changes", "val"), &GradientEditor::ignore_changes); + ClassDB::bind_method(D_METHOD("save_color_state"), &GradientEditor::save_color_state); + ClassDB::bind_method(D_METHOD("undo_redo_save_color_state"), &GradientEditor::undo_redo_save_color_state); + ClassDB::bind_method(D_METHOD("set_undo_redo", "ur"), &GradientEditor::set_undo_redo); + ClassDB::bind_method(D_METHOD("set_value", "v"), &GradientEditor::set_value); + ClassDB::bind_method(D_METHOD("update_cursors"), &GradientEditor::update_cursors); + ClassDB::bind_method(D_METHOD("update_value"), &GradientEditor::update_value); + ClassDB::bind_method(D_METHOD("add_cursor", "x", " color"), &GradientEditor::add_cursor); + ClassDB::bind_method(D_METHOD("_gui_input", "ev"), &GradientEditor::_gui_input); + ClassDB::bind_method(D_METHOD("select_color", "cursor", " position"), &GradientEditor::select_color); + ClassDB::bind_method(D_METHOD("get_sorted_cursors"), &GradientEditor::get_sorted_cursors); + ClassDB::bind_method(D_METHOD("generate_preview_image"), &GradientEditor::generate_preview_image); + ClassDB::bind_method(D_METHOD("get_gradient_color", "x"), &GradientEditor::get_gradient_color); + ClassDB::bind_method(D_METHOD("update_preview"), &GradientEditor::update_preview); + ClassDB::bind_method(D_METHOD("_on_Interpolation_item_selected", "ID"), &GradientEditor::_on_Interpolation_item_selected); + ClassDB::bind_method(D_METHOD("on_resized"), &GradientEditor::on_resized); + + } + + + diff --git a/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.ctscn b/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.ctscn new file mode 100644 index 000000000..ab8d6eedf --- /dev/null +++ b/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.ctscn @@ -0,0 +1,251 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.gd +Control *control = memnew(Control); +control->set_name("Control"); + +control->set_name("Control"); +//control->set("name", Control)); + +control->set_filename("res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn"); +//control->set("filename", "res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn"); + +control->set_margin_right(120); +//control->set("margin_right", 120); + +control->set_margin_bottom(30); +//control->set("margin_bottom", 30); + +control->set_rect_size(Vector2(120, 30)); +//control->set("rect_size", Vector2(120, 30)); + +control->set_rect_min_size(Vector2(120, 32)); +//control->set("rect_min_size", Vector2(120, 32)); + +control->set_focus_mode(1); +//control->set("focus_mode", 1); + + + +ColorRect *background_control = memnew(ColorRect); +background_control->set_name("Background"); +control->add_child(background_control); + +background_control->set_name("Background"); +//background_control->set("name", Background)); + +//background_control property owner TYPE_OBJECT value: Control:[Control:51414] + +//background_control property material TYPE_OBJECT value: [ShaderMaterial:19166] +Ref background_control_prop_material; +background_control_prop_material.instance(); +background_control->set_material(background_control_prop_material); +//background_control->set("material", background_control_prop_material); + +background_control->set_anchor_right(1); +//background_control->set("anchor_right", 1); + +background_control->set_margin_left(4); +//background_control->set("margin_left", 4); + +background_control->set_margin_right(-4); +//background_control->set("margin_right", -4); + +background_control->set_margin_bottom(15); +//background_control->set("margin_bottom", 15); + +background_control->set_rect_position(Vector2(4, 0)); +//background_control->set("rect_position", Vector2(4, 0)); + +background_control->set_rect_global_position(Vector2(4, 0)); +//background_control->set("rect_global_position", Vector2(4, 0)); + +background_control->set_rect_size(Vector2(0, 15)); +//background_control->set("rect_size", Vector2(0, 15)); + +background_control->set_rect_min_size(Vector2(112, 17)); +//background_control->set("rect_min_size", Vector2(112, 17)); + +background_control->set_mouse_filter(2); +//background_control->set("mouse_filter", 2); + +//background_control property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +TextureRect *gradient_control = memnew(TextureRect); +gradient_control->set_name("Gradient"); +control->add_child(gradient_control); + +gradient_control->set_name("Gradient"); +//gradient_control->set("name", Gradient)); + +//gradient_control property owner TYPE_OBJECT value: Control:[Control:51414] + +gradient_control->set_anchor_right(1); +//gradient_control->set("anchor_right", 1); + +gradient_control->set_margin_left(4); +//gradient_control->set("margin_left", 4); + +gradient_control->set_margin_right(-4); +//gradient_control->set("margin_right", -4); + +gradient_control->set_margin_bottom(15); +//gradient_control->set("margin_bottom", 15); + +gradient_control->set_rect_position(Vector2(4, 0)); +//gradient_control->set("rect_position", Vector2(4, 0)); + +gradient_control->set_rect_global_position(Vector2(4, 0)); +//gradient_control->set("rect_global_position", Vector2(4, 0)); + +gradient_control->set_rect_size(Vector2(0, 15)); +//gradient_control->set("rect_size", Vector2(0, 15)); + +gradient_control->set_rect_min_size(Vector2(112, 17)); +//gradient_control->set("rect_min_size", Vector2(112, 17)); + +gradient_control->set_mouse_filter(2); +//gradient_control->set("mouse_filter", 2); + +//gradient_control property theme TYPE_OBJECT value: [Theme:19167] +Ref gradient_control_prop_theme; +gradient_control_prop_theme.instance(); +gradient_control->set_theme(gradient_control_prop_theme); +//gradient_control->set("theme", gradient_control_prop_theme); + +//gradient_control property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +OptionButton *interpolation_control = memnew(OptionButton); +interpolation_control->set_name("Interpolation"); +control->add_child(interpolation_control); + +interpolation_control->set_name("Interpolation"); +//interpolation_control->set("name", Interpolation)); + +//interpolation_control property owner TYPE_OBJECT value: Control:[Control:51414] + +interpolation_control->set_margin_left(0.418457); +//interpolation_control->set("margin_left", 0.418457); + +interpolation_control->set_margin_top(-2.90374); +//interpolation_control->set("margin_top", -2.90374); + +interpolation_control->set_margin_right(73.418503); +//interpolation_control->set("margin_right", 73.418503); + +interpolation_control->set_margin_bottom(19.0963); +//interpolation_control->set("margin_bottom", 19.0963); + +interpolation_control->set_rect_position(Vector2(0.418457, -2.90374)); +//interpolation_control->set("rect_position", Vector2(0.418457, -2.90374)); + +interpolation_control->set_rect_global_position(Vector2(0.418457, -2.90374)); +//interpolation_control->set("rect_global_position", Vector2(0.418457, -2.90374)); + +interpolation_control->set_rect_size(Vector2(73.000046, 22.00004)); +//interpolation_control->set("rect_size", Vector2(73.000046, 22.00004)); + +interpolation_control->set_rect_scale(Vector2(0.5, 0.5)); +//interpolation_control->set("rect_scale", Vector2(0.5, 0.5)); + +//interpolation_control property icon TYPE_OBJECT value: [AtlasTexture:19168] +Ref interpolation_control_prop_icon; +interpolation_control_prop_icon.instance(); +interpolation_control->set_icon(interpolation_control_prop_icon); +//interpolation_control->set("icon", interpolation_control_prop_icon); + +//interpolation_control property items TYPE_ARRAY value: [, [AtlasTexture:19169], False, 0, Null, , [AtlasTexture:19168], False, 1, Null, , [AtlasTexture:19170], False, 2, Null, , [AtlasTexture:19171], False, 3, Null] + +interpolation_control->set_selected(1); +//interpolation_control->set("selected", 1); + + + +PopupMenu *popupmenu_interpolation_control = memnew(PopupMenu); +popupmenu_interpolation_control->set_name("PopupMenu"); +interpolation_control->add_child(popupmenu_interpolation_control); + +popupmenu_interpolation_control->set_name("PopupMenu"); +//popupmenu_interpolation_control->set("name", PopupMenu)); + +popupmenu_interpolation_control->set_input_pass_on_modal_close_click(False); +//popupmenu_interpolation_control->set("input_pass_on_modal_close_click", False); + +//popupmenu_interpolation_control property items TYPE_ARRAY value: [, [AtlasTexture:19169], 2, False, False, 0, 0, Null, , False, , [AtlasTexture:19168], 2, True, False, 1, 0, Null, , False, , [AtlasTexture:19170], 2, False, False, 2, 0, Null, , False, , [AtlasTexture:19171], 2, False, False, 3, 0, Null, , False] + +popupmenu_interpolation_control->set_allow_search(True); +//popupmenu_interpolation_control->set("allow_search", True); + + + +Timer *timer_popupmenu_interpolation_control = memnew(Timer); +timer_popupmenu_interpolation_control->set_name("Timer"); +popupmenu_interpolation_control->add_child(timer_popupmenu_interpolation_control); + +timer_popupmenu_interpolation_control->set_name("Timer"); +//timer_popupmenu_interpolation_control->set("name", Timer)); + +timer_popupmenu_interpolation_control->set_wait_time(0.3); +//timer_popupmenu_interpolation_control->set("wait_time", 0.3); + +timer_popupmenu_interpolation_control->set_one_shot(True); +//timer_popupmenu_interpolation_control->set("one_shot", True); + + + +Label *value_control = memnew(Label); +value_control->set_name("Value"); +control->add_child(value_control); + +value_control->set_name("Value"); +//value_control->set("name", Value)); + +//value_control property owner TYPE_OBJECT value: Control:[Control:51414] + +value_control->set_anchor_right(1); +//value_control->set("anchor_right", 1); + +value_control->set_margin_top(-1); +//value_control->set("margin_top", -1); + +value_control->set_margin_bottom(14); +//value_control->set("margin_bottom", 14); + +value_control->set_rect_position(Vector2(0, -1)); +//value_control->set("rect_position", Vector2(0, -1)); + +value_control->set_rect_global_position(Vector2(0, -1)); +//value_control->set("rect_global_position", Vector2(0, -1)); + +value_control->set_rect_size(Vector2(0, 15)); +//value_control->set("rect_size", Vector2(0, 15)); + +value_control->set_custom_colors/font_color(Color(1, 1, 1, 1)); +//value_control->set("custom_colors/font_color", Color(1, 1, 1, 1)); + +value_control->set_custom_colors/font_color_shadow(Color(0, 0, 0, 1)); +//value_control->set("custom_colors/font_color_shadow", Color(0, 0, 0, 1)); + +value_control->set_custom_constants/shadow_offset_x(1); +//value_control->set("custom_constants/shadow_offset_x", 1); + +value_control->set_custom_constants/shadow_offset_y(1); +//value_control->set("custom_constants/shadow_offset_y", 1); + +value_control->set_custom_constants/shadow_as_outline(1); +//value_control->set("custom_constants/shadow_as_outline", 1); + +value_control->set_align(1); +//value_control->set("align", 1); + +//value_control property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.h b/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.h new file mode 100644 index 000000000..0bf6f25b3 --- /dev/null +++ b/modules/material_maker/editor/widgets/gradient_editor/gradient_editor.h @@ -0,0 +1,121 @@ +#ifndef GRADIENT_EDITOR_H +#define GRADIENT_EDITOR_H + + +class GradientEditor : public Control { + GDCLASS(GradientEditor, Control); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + bool get_embedded() const; + void set_embedded(const bool val); + + UndoRedo get_*_undo_redo(); + void set_*_undo_redo(const UndoRedo &val); + + PoolRealArray get__saved_points(); + void set__saved_points(const PoolRealArray &val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + class GradientCursor { + public: + + Color get_color(); + void set_color(const Color &val); + + bool get_sliding() const; + void set_sliding(const bool val); + + void _ready(); + void _draw(); + void _gui_input(const Variant &ev); + float get_cursor_position(); + void set_color(const Variant &c); + static bool sort(const Variant &a, const Variant & b); + bool can_drop_data(const Variant &_position, const Variant & data); + void drop_data(const Variant &_position, const Variant & data); + + GradientCursor(); + ~GradientCursor(); + + protected: + static void _bind_methods(); + + extends Control; + Color color = ; + bool sliding = false; + onready var label : Label = get_parent().get_node("Value"); + const WIDTH : int = 10; +}; + + void _init(); + void ignore_changes(const Variant &val); + void save_color_state(); + void undo_redo_save_color_state(); + void set_undo_redo(const UndoRedo &ur); + void set_value(const Variant &v); + void update_cursors(); + void update_value(); + void add_cursor(const Variant &x, const Variant & color); + void _gui_input(const Variant &ev); + void select_color(const Variant &cursor, const Variant & position); + Array get_sorted_cursors(); + void generate_preview_image(); + Color get_gradient_color(const Variant &x); + void update_preview(); + void _on_Interpolation_item_selected(const Variant &ID); + void on_resized(); + + GradientEditor(); + ~GradientEditor(); + + protected: + static void _bind_methods(); + + //tool + Variant = null; + // setget set_value + Variant = null; + //export + bool embedded = true; + UndoRedo *_undo_redo = null; + signal updated(value); + PoolRealArray _saved_points = PoolRealArray(); + //func get_gradient_from_data(data): + // if typeof(data) == TYPE_ARRAY: + // return data + // elif typeof(data) == TYPE_DICTIONARY: + // if data.has("parameters") and data.parameters.has("gradient"): + // return data.parameters.gradient + // if data.has("type") and data.type == "Gradient": + // return data + // return null + //func get_drag_data(_position : Vector2): + // var data = 0//MMType.serialize_value(value) + // var preview = ColorRect.new() + // preview.rect_size = Vector2(64, 24) + // preview.material = $Gradient.material + // set_drag_preview(preview) + // return data + // + //func can_drop_data(_position : Vector2, data) -> bool: + // return get_gradient_from_data(data) != null + // + //func drop_data(_position : Vector2, data) -> void: + // var gradient = get_gradient_from_data(data) + // //if gradient != null: + // //set_value(MMType.deserialize_value(gradient)) + Variant ; + // Calculating a color from the gradient and generating the shader +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.cpp b/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.cpp new file mode 100644 index 000000000..142ae1044 --- /dev/null +++ b/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.cpp @@ -0,0 +1,42 @@ + +#include "gradient_popup.h" + + + + //tool; + signal updated(value); + + void GradientPopup::init(const Variant &value, const Variant & graph_node, const Variant & undo_redo) { + $Panel/Control.set_undo_redo(undo_redo); + $Panel/Control.graph_node = graph_node; + $Panel/Control.set_value(value); +} + + + void GradientPopup::_on_Control_updated(const Variant &value) { + emit_signal("updated", value); +} + + + void GradientPopup::_on_GradientPopup_popup_hide() { + queue_free(); +} + +} + + GradientPopup::GradientPopup() { + } + + GradientPopup::~GradientPopup() { + } + + + static void GradientPopup::_bind_methods() { + ClassDB::bind_method(D_METHOD("init", "value", " graph_node", " undo_redo"), &GradientPopup::init); + ClassDB::bind_method(D_METHOD("_on_Control_updated", "value"), &GradientPopup::_on_Control_updated); + ClassDB::bind_method(D_METHOD("_on_GradientPopup_popup_hide"), &GradientPopup::_on_GradientPopup_popup_hide); + + } + + + diff --git a/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.ctscn b/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.ctscn new file mode 100644 index 000000000..e03f703e7 --- /dev/null +++ b/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.ctscn @@ -0,0 +1,325 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.gd +Popup *gradientpopup = memnew(Popup); +gradientpopup->set_name("GradientPopup"); + +gradientpopup->set_name("GradientPopup"); +//gradientpopup->set("name", GradientPopup)); + +gradientpopup->set_filename("res://addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.tscn"); +//gradientpopup->set("filename", "res://addons/mat_maker_gd/widgets/gradient_editor/gradient_popup.tscn"); + +gradientpopup->set_margin_right(632); +//gradientpopup->set("margin_right", 632); + +gradientpopup->set_margin_bottom(49); +//gradientpopup->set("margin_bottom", 49); + +gradientpopup->set_rect_size(Vector2(632, 49)); +//gradientpopup->set("rect_size", Vector2(632, 49)); + +gradientpopup->set_size_flags_horizontal(0); +//gradientpopup->set("size_flags_horizontal", 0); + +gradientpopup->set_size_flags_vertical(0); +//gradientpopup->set("size_flags_vertical", 0); + + + +Panel *panel_gradientpopup = memnew(Panel); +panel_gradientpopup->set_name("Panel"); +gradientpopup->add_child(panel_gradientpopup); + +panel_gradientpopup->set_name("Panel"); +//panel_gradientpopup->set("name", Panel)); + +//panel_gradientpopup property owner TYPE_OBJECT value: GradientPopup:[Popup:51440] + +panel_gradientpopup->set_margin_right(632); +//panel_gradientpopup->set("margin_right", 632); + +panel_gradientpopup->set_margin_bottom(49); +//panel_gradientpopup->set("margin_bottom", 49); + +panel_gradientpopup->set_rect_size(Vector2(632, 49)); +//panel_gradientpopup->set("rect_size", Vector2(632, 49)); + +//panel_gradientpopup property custom_styles/panel TYPE_OBJECT value: [StyleBoxFlat:51436] +Ref panel_gradientpopup_prop_custom_styles/panel; +panel_gradientpopup_prop_custom_styles/panel.instance(); +panel_gradientpopup->set_custom_styles/panel(panel_gradientpopup_prop_custom_styles/panel); +//panel_gradientpopup->set("custom_styles/panel", panel_gradientpopup_prop_custom_styles/panel); + + + +//Script: res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.gd +Control *control_panel_gradientpopup = memnew(Control); +control_panel_gradientpopup->set_name("Control"); +panel_gradientpopup->add_child(control_panel_gradientpopup); + +control_panel_gradientpopup->set_name("Control"); +//control_panel_gradientpopup->set("name", Control)); + +control_panel_gradientpopup->set_filename("res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn"); +//control_panel_gradientpopup->set("filename", "res://addons/mat_maker_gd/widgets/gradient_editor/gradient_editor.tscn"); + +//control_panel_gradientpopup property owner TYPE_OBJECT value: GradientPopup:[Popup:51440] + +control_panel_gradientpopup->set_anchor_right(1); +//control_panel_gradientpopup->set("anchor_right", 1); + +control_panel_gradientpopup->set_anchor_bottom(1); +//control_panel_gradientpopup->set("anchor_bottom", 1); + +control_panel_gradientpopup->set_margin_left(10); +//control_panel_gradientpopup->set("margin_left", 10); + +control_panel_gradientpopup->set_margin_top(10); +//control_panel_gradientpopup->set("margin_top", 10); + +control_panel_gradientpopup->set_margin_right(-10); +//control_panel_gradientpopup->set("margin_right", -10); + +control_panel_gradientpopup->set_margin_bottom(-10); +//control_panel_gradientpopup->set("margin_bottom", -10); + +control_panel_gradientpopup->set_rect_position(Vector2(10, 10)); +//control_panel_gradientpopup->set("rect_position", Vector2(10, 10)); + +control_panel_gradientpopup->set_rect_global_position(Vector2(10, 10)); +//control_panel_gradientpopup->set("rect_global_position", Vector2(10, 10)); + +control_panel_gradientpopup->set_rect_min_size(Vector2(120, 32)); +//control_panel_gradientpopup->set("rect_min_size", Vector2(120, 32)); + +control_panel_gradientpopup->set_focus_mode(1); +//control_panel_gradientpopup->set("focus_mode", 1); + +control_panel_gradientpopup->set_embedded(False); +//control_panel_gradientpopup->set("embedded", False); + + + +ColorRect *background_control_panel_gradientpopup = memnew(ColorRect); +background_control_panel_gradientpopup->set_name("Background"); +control_panel_gradientpopup->add_child(background_control_panel_gradientpopup); + +background_control_panel_gradientpopup->set_name("Background"); +//background_control_panel_gradientpopup->set("name", Background)); + +//background_control_panel_gradientpopup property owner TYPE_OBJECT value: Control:[Control:51442] + +//background_control_panel_gradientpopup property material TYPE_OBJECT value: [ShaderMaterial:19166] +Ref background_control_panel_gradientpopup_prop_material; +background_control_panel_gradientpopup_prop_material.instance(); +background_control_panel_gradientpopup->set_material(background_control_panel_gradientpopup_prop_material); +//background_control_panel_gradientpopup->set("material", background_control_panel_gradientpopup_prop_material); + +background_control_panel_gradientpopup->set_anchor_right(1); +//background_control_panel_gradientpopup->set("anchor_right", 1); + +background_control_panel_gradientpopup->set_margin_left(4); +//background_control_panel_gradientpopup->set("margin_left", 4); + +background_control_panel_gradientpopup->set_margin_right(-4); +//background_control_panel_gradientpopup->set("margin_right", -4); + +background_control_panel_gradientpopup->set_margin_bottom(15); +//background_control_panel_gradientpopup->set("margin_bottom", 15); + +background_control_panel_gradientpopup->set_rect_position(Vector2(4, 0)); +//background_control_panel_gradientpopup->set("rect_position", Vector2(4, 0)); + +background_control_panel_gradientpopup->set_rect_global_position(Vector2(4, 0)); +//background_control_panel_gradientpopup->set("rect_global_position", Vector2(4, 0)); + +background_control_panel_gradientpopup->set_rect_size(Vector2(0, 15)); +//background_control_panel_gradientpopup->set("rect_size", Vector2(0, 15)); + +background_control_panel_gradientpopup->set_rect_min_size(Vector2(112, 17)); +//background_control_panel_gradientpopup->set("rect_min_size", Vector2(112, 17)); + +background_control_panel_gradientpopup->set_mouse_filter(2); +//background_control_panel_gradientpopup->set("mouse_filter", 2); + +//background_control_panel_gradientpopup property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +TextureRect *gradient_control_panel_gradientpopup = memnew(TextureRect); +gradient_control_panel_gradientpopup->set_name("Gradient"); +control_panel_gradientpopup->add_child(gradient_control_panel_gradientpopup); + +gradient_control_panel_gradientpopup->set_name("Gradient"); +//gradient_control_panel_gradientpopup->set("name", Gradient)); + +//gradient_control_panel_gradientpopup property owner TYPE_OBJECT value: Control:[Control:51442] + +gradient_control_panel_gradientpopup->set_anchor_right(1); +//gradient_control_panel_gradientpopup->set("anchor_right", 1); + +gradient_control_panel_gradientpopup->set_margin_left(4); +//gradient_control_panel_gradientpopup->set("margin_left", 4); + +gradient_control_panel_gradientpopup->set_margin_right(-4); +//gradient_control_panel_gradientpopup->set("margin_right", -4); + +gradient_control_panel_gradientpopup->set_margin_bottom(15); +//gradient_control_panel_gradientpopup->set("margin_bottom", 15); + +gradient_control_panel_gradientpopup->set_rect_position(Vector2(4, 0)); +//gradient_control_panel_gradientpopup->set("rect_position", Vector2(4, 0)); + +gradient_control_panel_gradientpopup->set_rect_global_position(Vector2(4, 0)); +//gradient_control_panel_gradientpopup->set("rect_global_position", Vector2(4, 0)); + +gradient_control_panel_gradientpopup->set_rect_size(Vector2(0, 15)); +//gradient_control_panel_gradientpopup->set("rect_size", Vector2(0, 15)); + +gradient_control_panel_gradientpopup->set_rect_min_size(Vector2(112, 17)); +//gradient_control_panel_gradientpopup->set("rect_min_size", Vector2(112, 17)); + +gradient_control_panel_gradientpopup->set_mouse_filter(2); +//gradient_control_panel_gradientpopup->set("mouse_filter", 2); + +//gradient_control_panel_gradientpopup property theme TYPE_OBJECT value: [Theme:19167] +Ref gradient_control_panel_gradientpopup_prop_theme; +gradient_control_panel_gradientpopup_prop_theme.instance(); +gradient_control_panel_gradientpopup->set_theme(gradient_control_panel_gradientpopup_prop_theme); +//gradient_control_panel_gradientpopup->set("theme", gradient_control_panel_gradientpopup_prop_theme); + +//gradient_control_panel_gradientpopup property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +OptionButton *interpolation_control_panel_gradientpopup = memnew(OptionButton); +interpolation_control_panel_gradientpopup->set_name("Interpolation"); +control_panel_gradientpopup->add_child(interpolation_control_panel_gradientpopup); + +interpolation_control_panel_gradientpopup->set_name("Interpolation"); +//interpolation_control_panel_gradientpopup->set("name", Interpolation)); + +//interpolation_control_panel_gradientpopup property owner TYPE_OBJECT value: Control:[Control:51442] + +interpolation_control_panel_gradientpopup->set_margin_left(0.418457); +//interpolation_control_panel_gradientpopup->set("margin_left", 0.418457); + +interpolation_control_panel_gradientpopup->set_margin_top(-2.90374); +//interpolation_control_panel_gradientpopup->set("margin_top", -2.90374); + +interpolation_control_panel_gradientpopup->set_margin_right(73.418503); +//interpolation_control_panel_gradientpopup->set("margin_right", 73.418503); + +interpolation_control_panel_gradientpopup->set_margin_bottom(19.0963); +//interpolation_control_panel_gradientpopup->set("margin_bottom", 19.0963); + +interpolation_control_panel_gradientpopup->set_rect_position(Vector2(0.418457, -2.90374)); +//interpolation_control_panel_gradientpopup->set("rect_position", Vector2(0.418457, -2.90374)); + +interpolation_control_panel_gradientpopup->set_rect_global_position(Vector2(0.418457, -2.90374)); +//interpolation_control_panel_gradientpopup->set("rect_global_position", Vector2(0.418457, -2.90374)); + +interpolation_control_panel_gradientpopup->set_rect_size(Vector2(73.000046, 22.00004)); +//interpolation_control_panel_gradientpopup->set("rect_size", Vector2(73.000046, 22.00004)); + +interpolation_control_panel_gradientpopup->set_rect_scale(Vector2(0.5, 0.5)); +//interpolation_control_panel_gradientpopup->set("rect_scale", Vector2(0.5, 0.5)); + +//interpolation_control_panel_gradientpopup property icon TYPE_OBJECT value: [AtlasTexture:19168] +Ref interpolation_control_panel_gradientpopup_prop_icon; +interpolation_control_panel_gradientpopup_prop_icon.instance(); +interpolation_control_panel_gradientpopup->set_icon(interpolation_control_panel_gradientpopup_prop_icon); +//interpolation_control_panel_gradientpopup->set("icon", interpolation_control_panel_gradientpopup_prop_icon); + +//interpolation_control_panel_gradientpopup property items TYPE_ARRAY value: [, [AtlasTexture:19169], False, 0, Null, , [AtlasTexture:19168], False, 1, Null, , [AtlasTexture:19170], False, 2, Null, , [AtlasTexture:19171], False, 3, Null] + +interpolation_control_panel_gradientpopup->set_selected(1); +//interpolation_control_panel_gradientpopup->set("selected", 1); + + + +PopupMenu *popupmenu_interpolation_control_panel_gradientpopup = memnew(PopupMenu); +popupmenu_interpolation_control_panel_gradientpopup->set_name("PopupMenu"); +interpolation_control_panel_gradientpopup->add_child(popupmenu_interpolation_control_panel_gradientpopup); + +popupmenu_interpolation_control_panel_gradientpopup->set_name("PopupMenu"); +//popupmenu_interpolation_control_panel_gradientpopup->set("name", PopupMenu)); + +popupmenu_interpolation_control_panel_gradientpopup->set_input_pass_on_modal_close_click(False); +//popupmenu_interpolation_control_panel_gradientpopup->set("input_pass_on_modal_close_click", False); + +//popupmenu_interpolation_control_panel_gradientpopup property items TYPE_ARRAY value: [, [AtlasTexture:19169], 2, False, False, 0, 0, Null, , False, , [AtlasTexture:19168], 2, True, False, 1, 0, Null, , False, , [AtlasTexture:19170], 2, False, False, 2, 0, Null, , False, , [AtlasTexture:19171], 2, False, False, 3, 0, Null, , False] + +popupmenu_interpolation_control_panel_gradientpopup->set_allow_search(True); +//popupmenu_interpolation_control_panel_gradientpopup->set("allow_search", True); + + + +Timer *timer_popupmenu_interpolation_control_panel_gradientpopup = memnew(Timer); +timer_popupmenu_interpolation_control_panel_gradientpopup->set_name("Timer"); +popupmenu_interpolation_control_panel_gradientpopup->add_child(timer_popupmenu_interpolation_control_panel_gradientpopup); + +timer_popupmenu_interpolation_control_panel_gradientpopup->set_name("Timer"); +//timer_popupmenu_interpolation_control_panel_gradientpopup->set("name", Timer)); + +timer_popupmenu_interpolation_control_panel_gradientpopup->set_wait_time(0.3); +//timer_popupmenu_interpolation_control_panel_gradientpopup->set("wait_time", 0.3); + +timer_popupmenu_interpolation_control_panel_gradientpopup->set_one_shot(True); +//timer_popupmenu_interpolation_control_panel_gradientpopup->set("one_shot", True); + + + +Label *value_control_panel_gradientpopup = memnew(Label); +value_control_panel_gradientpopup->set_name("Value"); +control_panel_gradientpopup->add_child(value_control_panel_gradientpopup); + +value_control_panel_gradientpopup->set_name("Value"); +//value_control_panel_gradientpopup->set("name", Value)); + +//value_control_panel_gradientpopup property owner TYPE_OBJECT value: Control:[Control:51442] + +value_control_panel_gradientpopup->set_anchor_right(1); +//value_control_panel_gradientpopup->set("anchor_right", 1); + +value_control_panel_gradientpopup->set_margin_top(-1); +//value_control_panel_gradientpopup->set("margin_top", -1); + +value_control_panel_gradientpopup->set_margin_bottom(14); +//value_control_panel_gradientpopup->set("margin_bottom", 14); + +value_control_panel_gradientpopup->set_rect_position(Vector2(0, -1)); +//value_control_panel_gradientpopup->set("rect_position", Vector2(0, -1)); + +value_control_panel_gradientpopup->set_rect_global_position(Vector2(0, -1)); +//value_control_panel_gradientpopup->set("rect_global_position", Vector2(0, -1)); + +value_control_panel_gradientpopup->set_rect_size(Vector2(0, 15)); +//value_control_panel_gradientpopup->set("rect_size", Vector2(0, 15)); + +value_control_panel_gradientpopup->set_custom_colors/font_color(Color(1, 1, 1, 1)); +//value_control_panel_gradientpopup->set("custom_colors/font_color", Color(1, 1, 1, 1)); + +value_control_panel_gradientpopup->set_custom_colors/font_color_shadow(Color(0, 0, 0, 1)); +//value_control_panel_gradientpopup->set("custom_colors/font_color_shadow", Color(0, 0, 0, 1)); + +value_control_panel_gradientpopup->set_custom_constants/shadow_offset_x(1); +//value_control_panel_gradientpopup->set("custom_constants/shadow_offset_x", 1); + +value_control_panel_gradientpopup->set_custom_constants/shadow_offset_y(1); +//value_control_panel_gradientpopup->set("custom_constants/shadow_offset_y", 1); + +value_control_panel_gradientpopup->set_custom_constants/shadow_as_outline(1); +//value_control_panel_gradientpopup->set("custom_constants/shadow_as_outline", 1); + +value_control_panel_gradientpopup->set_align(1); +//value_control_panel_gradientpopup->set("align", 1); + +//value_control_panel_gradientpopup property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.h b/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.h new file mode 100644 index 000000000..9e5687a6f --- /dev/null +++ b/modules/material_maker/editor/widgets/gradient_editor/gradient_popup.h @@ -0,0 +1,25 @@ +#ifndef GRADIENT_POPUP_H +#define GRADIENT_POPUP_H + + +class GradientPopup : public Popup { + GDCLASS(GradientPopup, Popup); + + public: + + void init(const Variant &value, const Variant & graph_node, const Variant & undo_redo); + void _on_Control_updated(const Variant &value); + void _on_GradientPopup_popup_hide(); + + GradientPopup(); + ~GradientPopup(); + + protected: + static void _bind_methods(); + + //tool + signal updated(value); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.cpp b/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.cpp new file mode 100644 index 000000000..16330899d --- /dev/null +++ b/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.cpp @@ -0,0 +1,98 @@ + +#include "image_picker_button.h" + + +Variant ImagePickerButton::get_Variant() { + return Variant; +} + +void ImagePickerButton::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + Variant = ""; + signal on_file_selected(f); + + void ImagePickerButton::_ready() { + texture_normal = ImageTexture.new(); +} + + + void ImagePickerButton::do_set_image_path(const Variant &path) { + + if (path == null) { + return; +} + + image_path = path; + texture_normal.load(image_path); +} + + + void ImagePickerButton::set_image_path(const Variant &path) { + do_set_image_path(path); + emit_signal("on_file_selected", path); +} + + + void ImagePickerButton::_on_ImagePicker_pressed() { + //var dialog = preload("res://addons/mat_maker_gd/windows/file_dialog/file_dialog.tscn").instance(); + add_child(dialog); + dialog.rect_min_size = Vector2(500, 500); + dialog.access = FileDialog.ACCESS_FILESYSTEM; + dialog.mode = FileDialog.MODE_OPEN_FILE; + dialog.add_filter("*.bmp;BMP Image"); + dialog.add_filter("*.exr;EXR Image"); + dialog.add_filter("*.hdr;Radiance HDR Image"); + dialog.add_filter("*.jpg,*.jpeg;JPEG Image"); + dialog.add_filter("*.png;PNG Image"); + dialog.add_filter("*.svg;SVG Image"); + dialog.add_filter("*.tga;TGA Image"); + dialog.add_filter("*.webp;WebP Image"); + Variant = dialog.select_files(); + + while (files is GDScriptFunctionState) { + files = yield(files, "completed"); +} + + + if (files.size() > 0) { + set_image_path(files[0]); +} + +} + + + void ImagePickerButton::on_drop_image_file(const String &file_name) { + set_image_path(file_name); +} + +} + + ImagePickerButton::ImagePickerButton() { + = ""; + } + + ImagePickerButton::~ImagePickerButton() { + } + + + static void ImagePickerButton::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &ImagePickerButton::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &ImagePickerButton::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("_ready"), &ImagePickerButton::_ready); + ClassDB::bind_method(D_METHOD("do_set_image_path", "path"), &ImagePickerButton::do_set_image_path); + ClassDB::bind_method(D_METHOD("set_image_path", "path"), &ImagePickerButton::set_image_path); + ClassDB::bind_method(D_METHOD("_on_ImagePicker_pressed"), &ImagePickerButton::_on_ImagePicker_pressed); + ClassDB::bind_method(D_METHOD("on_drop_image_file", "file_name"), &ImagePickerButton::on_drop_image_file); + + } + + + diff --git a/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.ctscn b/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.ctscn new file mode 100644 index 000000000..461b5a3b9 --- /dev/null +++ b/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.ctscn @@ -0,0 +1,46 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.gd +TextureButton *imagepicker = memnew(TextureButton); +imagepicker->set_name("ImagePicker"); + +imagepicker->set_name("ImagePicker"); +//imagepicker->set("name", ImagePicker)); + +imagepicker->set_filename("res://addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.tscn"); +//imagepicker->set("filename", "res://addons/mat_maker_gd/widgets/image_picker_button/image_picker_button.tscn"); + +imagepicker->set_margin_right(64); +//imagepicker->set("margin_right", 64); + +imagepicker->set_margin_bottom(64); +//imagepicker->set("margin_bottom", 64); + +imagepicker->set_rect_size(Vector2(64, 64)); +//imagepicker->set("rect_size", Vector2(64, 64)); + +imagepicker->set_rect_min_size(Vector2(64, 64)); +//imagepicker->set("rect_min_size", Vector2(64, 64)); + +imagepicker->set_rect_clip_content(True); +//imagepicker->set("rect_clip_content", True); + +//imagepicker property texture_normal TYPE_OBJECT value: [ImageTexture:46513] +Ref imagepicker_prop_texture_normal; +imagepicker_prop_texture_normal.instance(); +imagepicker->set_texture_normal(imagepicker_prop_texture_normal); +//imagepicker->set("texture_normal", imagepicker_prop_texture_normal); + +imagepicker->set_expand(True); +//imagepicker->set("expand", True); + +imagepicker->set_stretch_mode(5); +//imagepicker->set("stretch_mode", 5); + +//imagepicker property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.h b/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.h new file mode 100644 index 000000000..c1aca9980 --- /dev/null +++ b/modules/material_maker/editor/widgets/image_picker_button/image_picker_button.h @@ -0,0 +1,31 @@ +#ifndef IMAGE_PICKER_BUTTON_H +#define IMAGE_PICKER_BUTTON_H + + +class ImagePickerButton : public TextureButton { + GDCLASS(ImagePickerButton, TextureButton); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + void _ready(); + void do_set_image_path(const Variant &path); + void set_image_path(const Variant &path); + void _on_ImagePicker_pressed(); + void on_drop_image_file(const String &file_name); + + ImagePickerButton(); + ~ImagePickerButton(); + + protected: + static void _bind_methods(); + + //tool + Variant = ""; + signal on_file_selected(f); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/polygon_edit/control_point.cpp b/modules/material_maker/editor/widgets/polygon_edit/control_point.cpp new file mode 100644 index 000000000..f720188e9 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/control_point.cpp @@ -0,0 +1,90 @@ + +#include "control_point.h" + + +bool ControlPoint::get_moving() const { + return moving; +} + +void ControlPoint::set_moving(const bool val) { +moving = val; +} + + + + //tool; + bool moving = false; + const OFFSET : Vector2 = Vector2(3, 3); + signal moved(index); + signal removed(index); + + void ControlPoint::_draw() { + // var current_theme : Theme = get_node("/root/MainWindow").theme; + // var color : Color = current_theme.get_color("font_color", "Label"); + Color color = Color(1, 1, 1, 1); + draw_rect(Rect2(0, 0, 7, 7), color); +} + + + void ControlPoint::initialize(const Vector2 &p) { + rect_position = get_parent().transform_point(p) - OFFSET; +} + + + void ControlPoint::_on_ControlPoint_gui_input(const Variant &event) { + + if (event is InputEventMouseButton) { + + if (event.button_index == BUTTON_LEFT) { + + if (event.pressed) { + moving = true; +} + + + else { + moving = false; + get_parent().update_controls(); +} + +} + + + else if (event.button_index == BUTTON_RIGHT && event.pressed) { + emit_signal("removed", get_index()); +} + +} + + + else if (moving && event is InputEventMouseMotion) { + rect_position += event.relative; + emit_signal("moved", get_index()); +} + +} + +} + + ControlPoint::ControlPoint() { + moving = false; + } + + ControlPoint::~ControlPoint() { + } + + + static void ControlPoint::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_moving"), &ControlPoint::get_moving); + ClassDB::bind_method(D_METHOD("set_moving", "value"), &ControlPoint::set_moving); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "moving"), "set_moving", "get_moving"); + + + ClassDB::bind_method(D_METHOD("_draw"), &ControlPoint::_draw); + ClassDB::bind_method(D_METHOD("initialize", "p"), &ControlPoint::initialize); + ClassDB::bind_method(D_METHOD("_on_ControlPoint_gui_input", "event"), &ControlPoint::_on_ControlPoint_gui_input); + + } + + + diff --git a/modules/material_maker/editor/widgets/polygon_edit/control_point.ctscn b/modules/material_maker/editor/widgets/polygon_edit/control_point.ctscn new file mode 100644 index 000000000..998fd10b6 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/control_point.ctscn @@ -0,0 +1,43 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/polygon_edit/control_point.gd +Control *controlpoint = memnew(Control); +controlpoint->set_name("ControlPoint"); + +controlpoint->set_name("ControlPoint"); +//controlpoint->set("name", ControlPoint)); + +controlpoint->set_filename("res://addons/mat_maker_gd/widgets/polygon_edit/control_point.tscn"); +//controlpoint->set("filename", "res://addons/mat_maker_gd/widgets/polygon_edit/control_point.tscn"); + +controlpoint->set_margin_left(56.986401); +//controlpoint->set("margin_left", 56.986401); + +controlpoint->set_margin_top(33.8615); +//controlpoint->set("margin_top", 33.8615); + +controlpoint->set_margin_right(63.986401); +//controlpoint->set("margin_right", 63.986401); + +controlpoint->set_margin_bottom(40.8615); +//controlpoint->set("margin_bottom", 40.8615); + +controlpoint->set_rect_position(Vector2(56.986401, 33.8615)); +//controlpoint->set("rect_position", Vector2(56.986401, 33.8615)); + +controlpoint->set_rect_global_position(Vector2(56.986401, 33.8615)); +//controlpoint->set("rect_global_position", Vector2(56.986401, 33.8615)); + +controlpoint->set_rect_size(Vector2(7, 7)); +//controlpoint->set("rect_size", Vector2(7, 7)); + +controlpoint->set_rect_min_size(Vector2(7, 7)); +//controlpoint->set("rect_min_size", Vector2(7, 7)); + +//controlpoint property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/polygon_edit/control_point.h b/modules/material_maker/editor/widgets/polygon_edit/control_point.h new file mode 100644 index 000000000..b8a51b3e4 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/control_point.h @@ -0,0 +1,31 @@ +#ifndef CONTROL_POINT_H +#define CONTROL_POINT_H + + +class ControlPoint : public Control { + GDCLASS(ControlPoint, Control); + + public: + + bool get_moving() const; + void set_moving(const bool val); + + void _draw(); + void initialize(const Vector2 &p); + void _on_ControlPoint_gui_input(const Variant &event); + + ControlPoint(); + ~ControlPoint(); + + protected: + static void _bind_methods(); + + //tool + bool moving = false; + const OFFSET : Vector2 = Vector2(3, 3); + signal moved(index); + signal removed(index); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.cpp b/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.cpp new file mode 100644 index 000000000..bf072e3c6 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.cpp @@ -0,0 +1,122 @@ + +#include "polygon_dialog.h" + + +bool PolygonDialog::get_closed() const { + return closed; +} + +void PolygonDialog::set_closed(const bool val) { +closed = val; +} + + +PoolVector2Array PolygonDialog::get_previous_points() { + return previous_points; +} + +void PolygonDialog::set_previous_points(const PoolVector2Array &val) { +previous_points = val; +} + + +Variant PolygonDialog::get_Variant() { + return Variant; +} + +void PolygonDialog::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + //export ; + // setget set_closed; + bool closed = true; + PoolVector2Array previous_points = ; + Variant ; + signal polygon_changed(polygon); + + void PolygonDialog::set_closed(const bool c) { + closed = c; + window_title = "Edit polygon" if closed else "Edit polyline"; + $VBoxContainer/EditorContainer/PolygonEditor.set_closed(closed); +} + + + void PolygonDialog::_on_CurveDialog_popup_hide() { + // emit_signal("return_polygon", null); + queue_free(); + pass; +} + + + void PolygonDialog::_on_OK_pressed() { + emit_signal("polygon_changed", polygon); + polygon.polygon_changed(); + queue_free(); +} + + + void PolygonDialog::_on_Cancel_pressed() { + polygon.set_points(previous_points); + emit_signal("polygon_changed", polygon); + queue_free(); +} + + + void PolygonDialog::edit_polygon(const Variant &poly) { + polygon = poly; + previous_points = polygon.points; + $VBoxContainer/EditorContainer/PolygonEditor.set_polygon(polygon); + popup_centered(); +} + + //var result = yield(self, "return_polygon"); + //queue_free(); + //return result; + + void PolygonDialog::_on_PolygonEditor_value_changed(const Variant &value) { + emit_signal("polygon_changed", value); +} + +} + + PolygonDialog::PolygonDialog() { + closed = true; + previous_points = ; + ; + } + + PolygonDialog::~PolygonDialog() { + } + + + static void PolygonDialog::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_closed"), &PolygonDialog::get_closed); + ClassDB::bind_method(D_METHOD("set_closed", "value"), &PolygonDialog::set_closed); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "closed"), "set_closed", "get_closed"); + + + ClassDB::bind_method(D_METHOD("get_previous_points"), &PolygonDialog::get_previous_points); + ClassDB::bind_method(D_METHOD("set_previous_points", "value"), &PolygonDialog::set_previous_points); + ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR2_ARRAY, "previous_points"), "set_previous_points", "get_previous_points"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &PolygonDialog::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &PolygonDialog::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("set_closed", "c"), &PolygonDialog::set_closed, true); + ClassDB::bind_method(D_METHOD("_on_CurveDialog_popup_hide"), &PolygonDialog::_on_CurveDialog_popup_hide); + ClassDB::bind_method(D_METHOD("_on_OK_pressed"), &PolygonDialog::_on_OK_pressed); + ClassDB::bind_method(D_METHOD("_on_Cancel_pressed"), &PolygonDialog::_on_Cancel_pressed); + ClassDB::bind_method(D_METHOD("edit_polygon", "poly"), &PolygonDialog::edit_polygon); + ClassDB::bind_method(D_METHOD("_on_PolygonEditor_value_changed", "value"), &PolygonDialog::_on_PolygonEditor_value_changed); + + } + + + diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.ctscn b/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.ctscn new file mode 100644 index 000000000..8c30e732a --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.ctscn @@ -0,0 +1,325 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.gd +WindowDialog *polygondialog = memnew(WindowDialog); +polygondialog->set_name("PolygonDialog"); + +polygondialog->set_name("PolygonDialog"); +//polygondialog->set("name", PolygonDialog)); + +polygondialog->set_filename("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.tscn"); +//polygondialog->set("filename", "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.tscn"); + +polygondialog->set_anchor_right(1); +//polygondialog->set("anchor_right", 1); + +polygondialog->set_anchor_bottom(1); +//polygondialog->set("anchor_bottom", 1); + +polygondialog->set_margin_left(307); +//polygondialog->set("margin_left", 307); + +polygondialog->set_margin_top(151); +//polygondialog->set("margin_top", 151); + +polygondialog->set_margin_right(-508); +//polygondialog->set("margin_right", -508); + +polygondialog->set_margin_bottom(-70); +//polygondialog->set("margin_bottom", -70); + +polygondialog->set_rect_position(Vector2(307, 151)); +//polygondialog->set("rect_position", Vector2(307, 151)); + +polygondialog->set_rect_global_position(Vector2(307, 151)); +//polygondialog->set("rect_global_position", Vector2(307, 151)); + +polygondialog->set_rect_size(Vector2(0, 1)); +//polygondialog->set("rect_size", Vector2(0, 1)); + +polygondialog->set_window_title("Edit polygon"); +//polygondialog->set("window_title", "Edit polygon"); + +//polygondialog property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +TextureButton *texturebutton_polygondialog = memnew(TextureButton); +texturebutton_polygondialog->set_name("TextureButton"); +polygondialog->add_child(texturebutton_polygondialog); + +texturebutton_polygondialog->set_name("TextureButton"); +//texturebutton_polygondialog->set("name", TextureButton)); + + + +VBoxContainer *vboxcontainer_polygondialog = memnew(VBoxContainer); +vboxcontainer_polygondialog->set_name("VBoxContainer"); +polygondialog->add_child(vboxcontainer_polygondialog); + +vboxcontainer_polygondialog->set_name("VBoxContainer"); +//vboxcontainer_polygondialog->set("name", VBoxContainer)); + +//vboxcontainer_polygondialog property owner TYPE_OBJECT value: PolygonDialog:[WindowDialog:42399] + +vboxcontainer_polygondialog->set_anchor_right(1); +//vboxcontainer_polygondialog->set("anchor_right", 1); + +vboxcontainer_polygondialog->set_anchor_bottom(1); +//vboxcontainer_polygondialog->set("anchor_bottom", 1); + +vboxcontainer_polygondialog->set_margin_left(5); +//vboxcontainer_polygondialog->set("margin_left", 5); + +vboxcontainer_polygondialog->set_margin_top(5); +//vboxcontainer_polygondialog->set("margin_top", 5); + +vboxcontainer_polygondialog->set_margin_right(-5); +//vboxcontainer_polygondialog->set("margin_right", -5); + +vboxcontainer_polygondialog->set_margin_bottom(-5); +//vboxcontainer_polygondialog->set("margin_bottom", -5); + +vboxcontainer_polygondialog->set_rect_position(Vector2(5, 5)); +//vboxcontainer_polygondialog->set("rect_position", Vector2(5, 5)); + +vboxcontainer_polygondialog->set_rect_global_position(Vector2(5, 5)); +//vboxcontainer_polygondialog->set("rect_global_position", Vector2(5, 5)); + +//vboxcontainer_polygondialog property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +MarginContainer *editorcontainer_vboxcontainer_polygondialog = memnew(MarginContainer); +editorcontainer_vboxcontainer_polygondialog->set_name("EditorContainer"); +vboxcontainer_polygondialog->add_child(editorcontainer_vboxcontainer_polygondialog); + +editorcontainer_vboxcontainer_polygondialog->set_name("EditorContainer"); +//editorcontainer_vboxcontainer_polygondialog->set("name", EditorContainer)); + +//editorcontainer_vboxcontainer_polygondialog property owner TYPE_OBJECT value: PolygonDialog:[WindowDialog:42399] + +editorcontainer_vboxcontainer_polygondialog->set_margin_right(455); +//editorcontainer_vboxcontainer_polygondialog->set("margin_right", 455); + +editorcontainer_vboxcontainer_polygondialog->set_margin_bottom(457); +//editorcontainer_vboxcontainer_polygondialog->set("margin_bottom", 457); + +editorcontainer_vboxcontainer_polygondialog->set_rect_size(Vector2(455, 457)); +//editorcontainer_vboxcontainer_polygondialog->set("rect_size", Vector2(455, 457)); + +editorcontainer_vboxcontainer_polygondialog->set_rect_clip_content(True); +//editorcontainer_vboxcontainer_polygondialog->set("rect_clip_content", True); + +editorcontainer_vboxcontainer_polygondialog->set_size_flags_horizontal(3); +//editorcontainer_vboxcontainer_polygondialog->set("size_flags_horizontal", 3); + +editorcontainer_vboxcontainer_polygondialog->set_size_flags_vertical(3); +//editorcontainer_vboxcontainer_polygondialog->set("size_flags_vertical", 3); + +editorcontainer_vboxcontainer_polygondialog->set_custom_constants/margin_right(4); +//editorcontainer_vboxcontainer_polygondialog->set("custom_constants/margin_right", 4); + +editorcontainer_vboxcontainer_polygondialog->set_custom_constants/margin_top(4); +//editorcontainer_vboxcontainer_polygondialog->set("custom_constants/margin_top", 4); + +editorcontainer_vboxcontainer_polygondialog->set_custom_constants/margin_left(4); +//editorcontainer_vboxcontainer_polygondialog->set("custom_constants/margin_left", 4); + +editorcontainer_vboxcontainer_polygondialog->set_custom_constants/margin_bottom(4); +//editorcontainer_vboxcontainer_polygondialog->set("custom_constants/margin_bottom", 4); + + + +//Script: res://addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.gd +Control *polygoneditor_editorcontainer_vboxcontainer_polygondialog = memnew(Control); +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_name("PolygonEditor"); +editorcontainer_vboxcontainer_polygondialog->add_child(polygoneditor_editorcontainer_vboxcontainer_polygondialog); + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_name("PolygonEditor"); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("name", PolygonEditor)); + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_filename("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.tscn"); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("filename", "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.tscn"); + +//polygoneditor_editorcontainer_vboxcontainer_polygondialog property owner TYPE_OBJECT value: PolygonDialog:[WindowDialog:42399] + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_margin_left(4); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("margin_left", 4); + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_margin_top(4); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("margin_top", 4); + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_margin_right(451); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("margin_right", 451); + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_margin_bottom(453); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("margin_bottom", 453); + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_rect_position(Vector2(4, 4)); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("rect_position", Vector2(4, 4)); + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_rect_global_position(Vector2(4, 4)); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("rect_global_position", Vector2(4, 4)); + +polygoneditor_editorcontainer_vboxcontainer_polygondialog->set_rect_size(Vector2(447, 449)); +//polygoneditor_editorcontainer_vboxcontainer_polygondialog->set("rect_size", Vector2(447, 449)); + +//polygoneditor_editorcontainer_vboxcontainer_polygondialog property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +HSeparator *hseparator_vboxcontainer_polygondialog = memnew(HSeparator); +hseparator_vboxcontainer_polygondialog->set_name("HSeparator"); +vboxcontainer_polygondialog->add_child(hseparator_vboxcontainer_polygondialog); + +hseparator_vboxcontainer_polygondialog->set_name("HSeparator"); +//hseparator_vboxcontainer_polygondialog->set("name", HSeparator)); + +//hseparator_vboxcontainer_polygondialog property owner TYPE_OBJECT value: PolygonDialog:[WindowDialog:42399] + +hseparator_vboxcontainer_polygondialog->set_margin_top(461); +//hseparator_vboxcontainer_polygondialog->set("margin_top", 461); + +hseparator_vboxcontainer_polygondialog->set_margin_right(455); +//hseparator_vboxcontainer_polygondialog->set("margin_right", 455); + +hseparator_vboxcontainer_polygondialog->set_margin_bottom(465); +//hseparator_vboxcontainer_polygondialog->set("margin_bottom", 465); + +hseparator_vboxcontainer_polygondialog->set_rect_position(Vector2(0, 461)); +//hseparator_vboxcontainer_polygondialog->set("rect_position", Vector2(0, 461)); + +hseparator_vboxcontainer_polygondialog->set_rect_global_position(Vector2(0, 461)); +//hseparator_vboxcontainer_polygondialog->set("rect_global_position", Vector2(0, 461)); + +hseparator_vboxcontainer_polygondialog->set_rect_size(Vector2(455, 4)); +//hseparator_vboxcontainer_polygondialog->set("rect_size", Vector2(455, 4)); + + + +HBoxContainer *hboxcontainer_vboxcontainer_polygondialog = memnew(HBoxContainer); +hboxcontainer_vboxcontainer_polygondialog->set_name("HBoxContainer"); +vboxcontainer_polygondialog->add_child(hboxcontainer_vboxcontainer_polygondialog); + +hboxcontainer_vboxcontainer_polygondialog->set_name("HBoxContainer"); +//hboxcontainer_vboxcontainer_polygondialog->set("name", HBoxContainer)); + +//hboxcontainer_vboxcontainer_polygondialog property owner TYPE_OBJECT value: PolygonDialog:[WindowDialog:42399] + +hboxcontainer_vboxcontainer_polygondialog->set_margin_top(469); +//hboxcontainer_vboxcontainer_polygondialog->set("margin_top", 469); + +hboxcontainer_vboxcontainer_polygondialog->set_margin_right(455); +//hboxcontainer_vboxcontainer_polygondialog->set("margin_right", 455); + +hboxcontainer_vboxcontainer_polygondialog->set_margin_bottom(489); +//hboxcontainer_vboxcontainer_polygondialog->set("margin_bottom", 489); + +hboxcontainer_vboxcontainer_polygondialog->set_rect_position(Vector2(0, 469)); +//hboxcontainer_vboxcontainer_polygondialog->set("rect_position", Vector2(0, 469)); + +hboxcontainer_vboxcontainer_polygondialog->set_rect_global_position(Vector2(0, 469)); +//hboxcontainer_vboxcontainer_polygondialog->set("rect_global_position", Vector2(0, 469)); + +hboxcontainer_vboxcontainer_polygondialog->set_rect_size(Vector2(455, 20)); +//hboxcontainer_vboxcontainer_polygondialog->set("rect_size", Vector2(455, 20)); + + + +Control *control_hboxcontainer_vboxcontainer_polygondialog = memnew(Control); +control_hboxcontainer_vboxcontainer_polygondialog->set_name("Control"); +hboxcontainer_vboxcontainer_polygondialog->add_child(control_hboxcontainer_vboxcontainer_polygondialog); + +control_hboxcontainer_vboxcontainer_polygondialog->set_name("Control"); +//control_hboxcontainer_vboxcontainer_polygondialog->set("name", Control)); + +//control_hboxcontainer_vboxcontainer_polygondialog property owner TYPE_OBJECT value: PolygonDialog:[WindowDialog:42399] + +control_hboxcontainer_vboxcontainer_polygondialog->set_margin_right(327); +//control_hboxcontainer_vboxcontainer_polygondialog->set("margin_right", 327); + +control_hboxcontainer_vboxcontainer_polygondialog->set_margin_bottom(20); +//control_hboxcontainer_vboxcontainer_polygondialog->set("margin_bottom", 20); + +control_hboxcontainer_vboxcontainer_polygondialog->set_rect_size(Vector2(327, 20)); +//control_hboxcontainer_vboxcontainer_polygondialog->set("rect_size", Vector2(327, 20)); + +control_hboxcontainer_vboxcontainer_polygondialog->set_size_flags_horizontal(3); +//control_hboxcontainer_vboxcontainer_polygondialog->set("size_flags_horizontal", 3); + + + +Button *ok_hboxcontainer_vboxcontainer_polygondialog = memnew(Button); +ok_hboxcontainer_vboxcontainer_polygondialog->set_name("OK"); +hboxcontainer_vboxcontainer_polygondialog->add_child(ok_hboxcontainer_vboxcontainer_polygondialog); + +ok_hboxcontainer_vboxcontainer_polygondialog->set_name("OK"); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("name", OK)); + +//ok_hboxcontainer_vboxcontainer_polygondialog property owner TYPE_OBJECT value: PolygonDialog:[WindowDialog:42399] + +ok_hboxcontainer_vboxcontainer_polygondialog->set_margin_left(331); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("margin_left", 331); + +ok_hboxcontainer_vboxcontainer_polygondialog->set_margin_right(391); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("margin_right", 391); + +ok_hboxcontainer_vboxcontainer_polygondialog->set_margin_bottom(20); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("margin_bottom", 20); + +ok_hboxcontainer_vboxcontainer_polygondialog->set_rect_position(Vector2(331, 0)); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("rect_position", Vector2(331, 0)); + +ok_hboxcontainer_vboxcontainer_polygondialog->set_rect_global_position(Vector2(331, 0)); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("rect_global_position", Vector2(331, 0)); + +ok_hboxcontainer_vboxcontainer_polygondialog->set_rect_size(Vector2(60, 20)); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("rect_size", Vector2(60, 20)); + +ok_hboxcontainer_vboxcontainer_polygondialog->set_rect_min_size(Vector2(60, 0)); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("rect_min_size", Vector2(60, 0)); + +ok_hboxcontainer_vboxcontainer_polygondialog->set_text("OK"); +//ok_hboxcontainer_vboxcontainer_polygondialog->set("text", "OK"); + + + +Button *cancel_hboxcontainer_vboxcontainer_polygondialog = memnew(Button); +cancel_hboxcontainer_vboxcontainer_polygondialog->set_name("Cancel"); +hboxcontainer_vboxcontainer_polygondialog->add_child(cancel_hboxcontainer_vboxcontainer_polygondialog); + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_name("Cancel"); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("name", Cancel)); + +//cancel_hboxcontainer_vboxcontainer_polygondialog property owner TYPE_OBJECT value: PolygonDialog:[WindowDialog:42399] + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_margin_left(395); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("margin_left", 395); + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_margin_right(455); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("margin_right", 455); + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_margin_bottom(20); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("margin_bottom", 20); + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_rect_position(Vector2(395, 0)); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("rect_position", Vector2(395, 0)); + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_rect_global_position(Vector2(395, 0)); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("rect_global_position", Vector2(395, 0)); + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_rect_size(Vector2(60, 20)); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("rect_size", Vector2(60, 20)); + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_rect_min_size(Vector2(60, 0)); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("rect_min_size", Vector2(60, 0)); + +cancel_hboxcontainer_vboxcontainer_polygondialog->set_text("Cancel"); +//cancel_hboxcontainer_vboxcontainer_polygondialog->set("text", "Cancel"); + + + + +} diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.h b/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.h new file mode 100644 index 000000000..f13396142 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_dialog.h @@ -0,0 +1,45 @@ +#ifndef POLYGON_DIALOG_H +#define POLYGON_DIALOG_H + + +class PolygonDialog : public WindowDialog { + GDCLASS(PolygonDialog, WindowDialog); + + public: + + bool get_closed() const; + void set_closed(const bool val); + + PoolVector2Array get_previous_points(); + void set_previous_points(const PoolVector2Array &val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + void set_closed(const bool c = true); + void _on_CurveDialog_popup_hide(); + void _on_OK_pressed(); + void _on_Cancel_pressed(); + void edit_polygon(const Variant &poly); + void _on_PolygonEditor_value_changed(const Variant &value); + + PolygonDialog(); + ~PolygonDialog(); + + protected: + static void _bind_methods(); + + //tool + //export + // setget set_closed + bool closed = true; + PoolVector2Array previous_points = ; + Variant ; + signal polygon_changed(polygon); + //var result = yield(self, "return_polygon") + //queue_free() + //return result +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.cpp b/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.cpp new file mode 100644 index 000000000..cc49e9bcb --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.cpp @@ -0,0 +1,106 @@ + +#include "polygon_edit.h" + + +Variant PolygonEdit::get_Variant() { + return Variant; +} + +void PolygonEdit::set_Variant(const Variant &val) { +Variant = val; +} + + +bool PolygonEdit::get_closed() const { + return closed; +} + +void PolygonEdit::set_closed(const bool val) { +closed = val; +} + + +Variant PolygonEdit::get_Variant() { + return Variant; +} + +void PolygonEdit::set_Variant(const Variant &val) { +Variant = val; +} + + + + //tool; + //var MMPolygon = preload("res://addons/mat_maker_gd/nodes/bases/polygon_base.gd"); + //export ; + // setget set_closed; + bool closed = true; + // setget set_value; + Variant = null; + signal updated(polygon); + + void PolygonEdit::set_closed(const bool c) { + closed = c; + $PolygonView.set_closed(c); +} + + + void PolygonEdit::set_value(const Variant &v) { + value = v; + $PolygonView.set_polygon(value); + $PolygonView.update(); +} + + + void PolygonEdit::_on_PolygonEdit_pressed() { + //var dialog = preload("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_dialog.tscn").instance(); + dialog.set_closed(closed); + add_child(dialog); + dialog.connect("polygon_changed", self, "on_value_changed"); + dialog.edit_polygon(value); +} + + + void PolygonEdit::on_value_changed(const Variant &v) { + //set_value(v); + emit_signal("updated", v); + $PolygonView.update(); +} + +} + + PolygonEdit::PolygonEdit() { + //var MMPolygon = preload("res://addons/mat_maker_gd/nodes/bases/polygon_base.gd"); + closed = true; + = null; + } + + PolygonEdit::~PolygonEdit() { + } + + + static void PolygonEdit::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &PolygonEdit::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &PolygonEdit::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_closed"), &PolygonEdit::get_closed); + ClassDB::bind_method(D_METHOD("set_closed", "value"), &PolygonEdit::set_closed); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "closed"), "set_closed", "get_closed"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &PolygonEdit::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &PolygonEdit::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("set_closed", "c"), &PolygonEdit::set_closed, true); + ClassDB::bind_method(D_METHOD("set_value", "v"), &PolygonEdit::set_value); + ClassDB::bind_method(D_METHOD("_on_PolygonEdit_pressed"), &PolygonEdit::_on_PolygonEdit_pressed); + ClassDB::bind_method(D_METHOD("on_value_changed", "v"), &PolygonEdit::on_value_changed); + + } + + + diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.ctscn b/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.ctscn new file mode 100644 index 000000000..5b3b8af3a --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.ctscn @@ -0,0 +1,78 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.gd +Button *polygonedit = memnew(Button); +polygonedit->set_name("PolygonEdit"); + +polygonedit->set_name("PolygonEdit"); +//polygonedit->set("name", PolygonEdit)); + +polygonedit->set_filename("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.tscn"); +//polygonedit->set("filename", "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_edit.tscn"); + +polygonedit->set_anchor_left(1); +//polygonedit->set("anchor_left", 1); + +polygonedit->set_anchor_right(1); +//polygonedit->set("anchor_right", 1); + +polygonedit->set_anchor_bottom(1); +//polygonedit->set("anchor_bottom", 1); + +polygonedit->set_margin_left(-1280); +//polygonedit->set("margin_left", -1280); + +polygonedit->set_margin_right(-1248); +//polygonedit->set("margin_right", -1248); + +polygonedit->set_margin_bottom(-688); +//polygonedit->set("margin_bottom", -688); + +polygonedit->set_rect_position(Vector2(-1280, 0)); +//polygonedit->set("rect_position", Vector2(-1280, 0)); + +polygonedit->set_rect_global_position(Vector2(-1280, 0)); +//polygonedit->set("rect_global_position", Vector2(-1280, 0)); + +polygonedit->set_rect_size(Vector2(32, 20)); +//polygonedit->set("rect_size", Vector2(32, 20)); + +polygonedit->set_rect_min_size(Vector2(32, 32)); +//polygonedit->set("rect_min_size", Vector2(32, 32)); + +polygonedit->set_focus_mode(1); +//polygonedit->set("focus_mode", 1); + +//polygonedit property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + +//Script: res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd +Control *polygonview_polygonedit = memnew(Control); +polygonview_polygonedit->set_name("PolygonView"); +polygonedit->add_child(polygonview_polygonedit); + +polygonview_polygonedit->set_name("PolygonView"); +//polygonview_polygonedit->set("name", PolygonView)); + +polygonview_polygonedit->set_filename("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.tscn"); +//polygonview_polygonedit->set("filename", "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.tscn"); + +//polygonview_polygonedit property owner TYPE_OBJECT value: PolygonEdit:[Button:42430] + +polygonview_polygonedit->set_anchor_right(1); +//polygonview_polygonedit->set("anchor_right", 1); + +polygonview_polygonedit->set_anchor_bottom(1); +//polygonview_polygonedit->set("anchor_bottom", 1); + +polygonview_polygonedit->set_mouse_filter(2); +//polygonview_polygonedit->set("mouse_filter", 2); + +//polygonview_polygonedit property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.h b/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.h new file mode 100644 index 000000000..854a11ac6 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_edit.h @@ -0,0 +1,41 @@ +#ifndef POLYGON_EDIT_H +#define POLYGON_EDIT_H + + +class PolygonEdit : public Control { + GDCLASS(PolygonEdit, Control); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + bool get_closed() const; + void set_closed(const bool val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + void set_closed(const bool c = true); + void set_value(const Variant &v); + void _on_PolygonEdit_pressed(); + void on_value_changed(const Variant &v); + + PolygonEdit(); + ~PolygonEdit(); + + protected: + static void _bind_methods(); + + //tool + Variant = preload("res://addons/mat_maker_gd/nodes/bases/polygon_base.gd"); + //export + // setget set_closed + bool closed = true; + // setget set_value + Variant = null; + signal updated(polygon); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.cpp b/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.cpp new file mode 100644 index 000000000..70b30709b --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.cpp @@ -0,0 +1,111 @@ + +#include "polygon_editor.h" + + + + //tool; + signal value_changed(value); + + void PolygonEditor::_ready() { + update_controls(); +} + + + void PolygonEditor::set_polygon(const Variant &p) { + polygon = p; + update(); + update_controls(); +} + + + void PolygonEditor::update_controls() { + + for (c in get_children()) { + c.queue_free(); +} + + + if (!polygon) { + return; +} + + + for (i in polygon.points.size()) { + Variant = polygon.points[i]; + //var control_point = preload("res://addons/mat_maker_gd/widgets/polygon_edit/control_point.tscn").instance(); + add_child(control_point); + control_point.initialize(p); + control_point.rect_position = transform_point(p)-control_point.OFFSET; + control_point.connect("moved", self, "_on_ControlPoint_moved"); + control_point.connect("removed", self, "_on_ControlPoint_removed"); +} + + emit_signal("value_changed", polygon); +} + + + void PolygonEditor::_on_ControlPoint_moved(const Variant &index) { + Variant = get_child(index); + polygon.points[index] = reverse_transform_point(control_point.rect_position+control_point.OFFSET); + update(); + emit_signal("value_changed", polygon); +} + + + void PolygonEditor::_on_ControlPoint_removed(const Variant &index) { + + if (polygon.remove_point(index)) { + update(); + update_controls(); +} + +} + + + void PolygonEditor::_on_PolygonEditor_gui_input(const Variant &event) { + + if (!polygon) { + return; +} + + + if (event is InputEventMouseButton) { + + if (event.button_index == BUTTON_LEFT && event.doubleclick) { + Variant = reverse_transform_point(get_local_mouse_position()); + polygon.add_point(new_point_position.x, new_point_position.y, closed); + update_controls(); +} + +} + +} + + + void PolygonEditor::_on_resize() { + ._on_resize(); + update_controls(); +} + +} + + PolygonEditor::PolygonEditor() { + } + + PolygonEditor::~PolygonEditor() { + } + + + static void PolygonEditor::_bind_methods() { + ClassDB::bind_method(D_METHOD("_ready"), &PolygonEditor::_ready); + ClassDB::bind_method(D_METHOD("set_polygon", "p"), &PolygonEditor::set_polygon); + ClassDB::bind_method(D_METHOD("update_controls"), &PolygonEditor::update_controls); + ClassDB::bind_method(D_METHOD("_on_ControlPoint_moved", "index"), &PolygonEditor::_on_ControlPoint_moved); + ClassDB::bind_method(D_METHOD("_on_ControlPoint_removed", "index"), &PolygonEditor::_on_ControlPoint_removed); + ClassDB::bind_method(D_METHOD("_on_PolygonEditor_gui_input", "event"), &PolygonEditor::_on_PolygonEditor_gui_input); + ClassDB::bind_method(D_METHOD("_on_resize"), &PolygonEditor::_on_resize); + + } + + + diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.ctscn b/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.ctscn new file mode 100644 index 000000000..19b671253 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.ctscn @@ -0,0 +1,43 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.gd +Control *polygoneditor = memnew(Control); +polygoneditor->set_name("PolygonEditor"); + +polygoneditor->set_name("PolygonEditor"); +//polygoneditor->set("name", PolygonEditor)); + +polygoneditor->set_filename("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.tscn"); +//polygoneditor->set("filename", "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_editor.tscn"); + +polygoneditor->set_anchor_right(1); +//polygoneditor->set("anchor_right", 1); + +polygoneditor->set_anchor_bottom(1); +//polygoneditor->set("anchor_bottom", 1); + +polygoneditor->set_margin_left(10); +//polygoneditor->set("margin_left", 10); + +polygoneditor->set_margin_top(10); +//polygoneditor->set("margin_top", 10); + +polygoneditor->set_margin_right(-10); +//polygoneditor->set("margin_right", -10); + +polygoneditor->set_margin_bottom(-10); +//polygoneditor->set("margin_bottom", -10); + +polygoneditor->set_rect_position(Vector2(10, 10)); +//polygoneditor->set("rect_position", Vector2(10, 10)); + +polygoneditor->set_rect_global_position(Vector2(10, 10)); +//polygoneditor->set("rect_global_position", Vector2(10, 10)); + +//polygoneditor property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.h b/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.h new file mode 100644 index 000000000..8d8d3bb15 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_editor.h @@ -0,0 +1,29 @@ +#ifndef POLYGON_EDITOR_H +#define POLYGON_EDITOR_H + + +class PolygonEditor : public "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd" { + GDCLASS(PolygonEditor, "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd"); + + public: + + void _ready(); + void set_polygon(const Variant &p); + void update_controls(); + void _on_ControlPoint_moved(const Variant &index); + void _on_ControlPoint_removed(const Variant &index); + void _on_PolygonEditor_gui_input(const Variant &event); + void _on_resize(); + + PolygonEditor(); + ~PolygonEditor(); + + protected: + static void _bind_methods(); + + //tool + signal value_changed(value); +}; + + +#endif diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_view.cpp b/modules/material_maker/editor/widgets/polygon_edit/polygon_view.cpp new file mode 100644 index 000000000..fb64011d3 --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_view.cpp @@ -0,0 +1,171 @@ + +#include "polygon_view.h" + + +Variant PolygonView::get_Variant() { + return Variant; +} + +void PolygonView::set_Variant(const Variant &val) { +Variant = val; +} + + +Variant PolygonView::get_Variant() { + return Variant; +} + +void PolygonView::set_Variant(const Variant &val) { +Variant = val; +} + + +Vector2 PolygonView::get_draw_size() { + return draw_size; +} + +void PolygonView::set_draw_size(const Vector2 &val) { +draw_size = val; +} + + +Vector2 PolygonView::get_draw_offset() { + return draw_offset; +} + +void PolygonView::set_draw_offset(const Vector2 &val) { +draw_offset = val; +} + + +bool PolygonView::get_closed() const { + return closed; +} + +void PolygonView::set_closed(const bool val) { +closed = val; +} + + + + //tool; + //var MMPolygon = preload("res://addons/mat_maker_gd/nodes/bases/polygon_base.gd"); + //: MMPolygon; + Variant ; + Vector2 draw_size = Vector2(1, 1); + Vector2 draw_offset = Vector2(0, 0); + bool closed = true; + + void PolygonView::set_closed(const bool c) { + closed = c; + update(); +} + + + void PolygonView::_ready() { + // polygon = MMPolygon.new(); + connect("resized", self, "_on_resize"); + _on_resize(); +} + + + Vector2 PolygonView::transform_point(const Vector2 &p) { + return draw_offset+p*draw_size; +} + + + Vector2 PolygonView::reverse_transform_point(const Vector2 &p) { + return (p-draw_offset)/draw_size; +} + + + void PolygonView::set_polygon(const Variant &val) { + polygon = val; + update(); +} + + + void PolygonView::_draw() { + + if (!polygon) { + return; +} + + // var current_theme : Theme = get_node("/root/MainWindow").theme; + // var bg = current_theme.get_stylebox("panel", "Panel").bg_color; + // var fg = current_theme.get_color("font_color", "Label"); + // var axes_color : Color = bg.linear_interpolate(fg, 0.25); + // var curve_color : Color = bg.linear_interpolate(fg, 0.75); + Color axes_color = Color(0.9, 0.9, 0.9, 1); + Color curve_color = Color(1, 1, 1, 1); + draw_rect(Rect2(draw_offset, draw_size), axes_color, false); + Vector2 tp = transform_point(polygon.points[polygon.points.size()-1 if closed else 0]); + + for (p in polygon.points) { + Variant = transform_point(p); + draw_line(tp, tnp, curve_color); + tp = tnp; +} + +} + + + void PolygonView::_on_resize() { + float ds = min(rect_size.x, rect_size.y); + draw_size = Vector2(ds, ds); + draw_offset = 0.5*(rect_size-draw_size); + update(); +} + +} + + PolygonView::PolygonView() { + //var MMPolygon = preload("res://addons/mat_maker_gd/nodes/bases/polygon_base.gd"); + ; + draw_size = Vector2(1, 1); + draw_offset = Vector2(0, 0); + closed = true; + } + + PolygonView::~PolygonView() { + } + + + static void PolygonView::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_Variant"), &PolygonView::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &PolygonView::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_Variant"), &PolygonView::get_Variant); + ClassDB::bind_method(D_METHOD("set_Variant", "value"), &PolygonView::set_Variant); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "Variant", PROPERTY_HINT_RESOURCE_TYPE, "Variant"), "set_Variant", "get_Variant"); + + + ClassDB::bind_method(D_METHOD("get_draw_size"), &PolygonView::get_draw_size); + ClassDB::bind_method(D_METHOD("set_draw_size", "value"), &PolygonView::set_draw_size); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "draw_size"), "set_draw_size", "get_draw_size"); + + + ClassDB::bind_method(D_METHOD("get_draw_offset"), &PolygonView::get_draw_offset); + ClassDB::bind_method(D_METHOD("set_draw_offset", "value"), &PolygonView::set_draw_offset); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "draw_offset"), "set_draw_offset", "get_draw_offset"); + + + ClassDB::bind_method(D_METHOD("get_closed"), &PolygonView::get_closed); + ClassDB::bind_method(D_METHOD("set_closed", "value"), &PolygonView::set_closed); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "closed"), "set_closed", "get_closed"); + + + ClassDB::bind_method(D_METHOD("set_closed", "c"), &PolygonView::set_closed, true); + ClassDB::bind_method(D_METHOD("_ready"), &PolygonView::_ready); + ClassDB::bind_method(D_METHOD("transform_point", "p"), &PolygonView::transform_point); + ClassDB::bind_method(D_METHOD("reverse_transform_point", "p"), &PolygonView::reverse_transform_point); + ClassDB::bind_method(D_METHOD("set_polygon", "val"), &PolygonView::set_polygon); + ClassDB::bind_method(D_METHOD("_draw"), &PolygonView::_draw); + ClassDB::bind_method(D_METHOD("_on_resize"), &PolygonView::_on_resize); + + } + + + diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_view.ctscn b/modules/material_maker/editor/widgets/polygon_edit/polygon_view.ctscn new file mode 100644 index 000000000..d78064c7a --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_view.ctscn @@ -0,0 +1,31 @@ + +void construct() { + +//Script: res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.gd +Control *polygonview = memnew(Control); +polygonview->set_name("PolygonView"); + +polygonview->set_name("PolygonView"); +//polygonview->set("name", PolygonView)); + +polygonview->set_filename("res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.tscn"); +//polygonview->set("filename", "res://addons/mat_maker_gd/widgets/polygon_edit/polygon_view.tscn"); + +polygonview->set_margin_right(64); +//polygonview->set("margin_right", 64); + +polygonview->set_margin_bottom(64); +//polygonview->set("margin_bottom", 64); + +polygonview->set_rect_size(Vector2(64, 64)); +//polygonview->set("rect_size", Vector2(64, 64)); + +polygonview->set_mouse_filter(2); +//polygonview->set("mouse_filter", 2); + +//polygonview property __meta__ TYPE_DICTIONARY value: {_edit_use_anchors_:False} + + + + +} diff --git a/modules/material_maker/editor/widgets/polygon_edit/polygon_view.h b/modules/material_maker/editor/widgets/polygon_edit/polygon_view.h new file mode 100644 index 000000000..64d08efcd --- /dev/null +++ b/modules/material_maker/editor/widgets/polygon_edit/polygon_view.h @@ -0,0 +1,49 @@ +#ifndef POLYGON_VIEW_H +#define POLYGON_VIEW_H + + +class PolygonView : public Control { + GDCLASS(PolygonView, Control); + + public: + + Variant get_Variant(); + void set_Variant(const Variant &val); + + Variant get_Variant(); + void set_Variant(const Variant &val); + + Vector2 get_draw_size(); + void set_draw_size(const Vector2 &val); + + Vector2 get_draw_offset(); + void set_draw_offset(const Vector2 &val); + + bool get_closed() const; + void set_closed(const bool val); + + void set_closed(const bool c = true); + void _ready(); + Vector2 transform_point(const Vector2 &p); + Vector2 reverse_transform_point(const Vector2 &p); + void set_polygon(const Variant &val); + void _draw(); + void _on_resize(); + + PolygonView(); + ~PolygonView(); + + protected: + static void _bind_methods(); + + //tool + Variant = preload("res://addons/mat_maker_gd/nodes/bases/polygon_base.gd"); + //: MMPolygon + Variant ; + Vector2 draw_size = Vector2(1, 1); + Vector2 draw_offset = Vector2(0, 0); + bool closed = true; +}; + + +#endif