Get color constructor from ColorPicker

This commit is contained in:
MarianoGNU 2016-01-26 19:10:56 -03:00
parent 5d3fb49826
commit c927409f25
2 changed files with 43 additions and 13 deletions

View file

@ -122,7 +122,7 @@ void ColorPicker::_value_changed(double) {
update_material(uv_material,color);
update_material(w_material,color);
html->set_text(color.to_html(edit_alpha && color.a<1));
c_text->set_text(color.to_html(edit_alpha && color.a<1));
sample->update();
@ -153,9 +153,18 @@ void ColorPicker::_update_color() {
scroll[i]->set_val(color.components[i]*255);
}
html->set_text(color.to_html(edit_alpha && color.a<1));
html->grab_focus();
html->select();
if (text_is_constructor) {
String t = "Color("+String::num(color.r)+","+String::num(color.g)+","+String::num(color.b);
if (edit_alpha && color.a<1)
t+=(","+String::num(color.a)+")") ;
else
t+=")";
c_text->set_text(t);
} else {
c_text->set_text(color.to_html(edit_alpha && color.a<1));
}
c_text->grab_focus();
c_text->select();
sample->update();
updating=false;
@ -175,6 +184,21 @@ void ColorPicker::_update_presets()
preset->set_texture(t);
}
void ColorPicker::_text_type_toggled()
{
if (!get_tree()->is_editor_hint())
return;
text_is_constructor = !text_is_constructor;
if (text_is_constructor) {
text_type->set_text("");
text_type->set_icon(get_icon("Script", "EditorIcons"));
} else {
text_type->set_text("#");
text_type->set_icon(NULL);
}
_update_color();
}
Color ColorPicker::get_color() const {
return color;
@ -366,6 +390,7 @@ void ColorPicker::_bind_methods() {
ObjectTypeDB::bind_method(_MD("add_preset"), &ColorPicker::add_preset);
ObjectTypeDB::bind_method(_MD("_value_changed"),&ColorPicker::_value_changed);
ObjectTypeDB::bind_method(_MD("_html_entered"),&ColorPicker::_html_entered);
ObjectTypeDB::bind_method(_MD("_text_type_toggled"),&ColorPicker::_text_type_toggled);
ObjectTypeDB::bind_method(_MD("_add_preset_pressed"), &ColorPicker::_add_preset_pressed);
ObjectTypeDB::bind_method(_MD("_screen_pick_pressed"), &ColorPicker::_screen_pick_pressed);
ObjectTypeDB::bind_method(_MD("_sample_draw"),&ColorPicker::_sample_draw);
@ -383,6 +408,7 @@ ColorPicker::ColorPicker() :
updating=true;
edit_alpha=true;
text_is_constructor = false;
raw_mode_enabled=false;
changing_color=false;
screen=NULL;
@ -492,14 +518,16 @@ ColorPicker::ColorPicker() :
btn_mode->connect("toggled", this, "set_raw_mode");
hhb->add_child(btn_mode);
vbr->add_child(hhb);
html_num = memnew( Label );
hhb->add_child(html_num);
text_type = memnew( Button );
text_type->set_flat(true);
text_type->connect("pressed", this, "_text_type_toggled");
hhb->add_child(text_type);
html = memnew( LineEdit );
hhb->add_child(html);
html->connect("text_entered",this,"_html_entered");
html_num->set_text("#");
html->set_h_size_flags(SIZE_EXPAND_FILL);
c_text = memnew( LineEdit );
hhb->add_child(c_text);
c_text->connect("text_entered",this,"_html_entered");
text_type->set_text("#");
c_text->set_h_size_flags(SIZE_EXPAND_FILL);
_update_controls();

View file

@ -62,10 +62,11 @@ private:
HSlider *scroll[4];
SpinBox *values[4];
Label *labels[4];
Label *html_num;
LineEdit *html;
Button *text_type;
LineEdit *c_text;
bool edit_alpha;
Size2i ms;
bool text_is_constructor;
Color color;
bool raw_mode_enabled;
@ -78,6 +79,7 @@ private:
void _update_controls();
void _update_color();
void _update_presets();
void _text_type_toggled();
void _sample_draw();
void _hsv_draw(int p_wich,Control *c);