void ColorPicker::_preset_input(const InputEvent &ev) { if (ev.type == InputEvent::MOUSE_BUTTON) { const InputEventMouseButton &bev = ev.mouse_button; if (bev.pressed && bev.button_index==BUTTON_LEFT) { int index = bev.x/(preset->get_size().x/presets.size()); set_color(presets[index]); } else if (bev.pressed && bev.button_index==BUTTON_RIGHT) { int index = bev.x/(preset->get_size().x/presets.size()); presets.erase(presets[index]); _update_presets(); bt_add_preset->show(); } _update_color(); emit_signal("color_changed", color); } else if (ev.type == InputEvent::MOUSE_MOTION) { const InputEventMouse &mev = ev.mouse_motion; int index = mev.x * presets.size(); if( preset->get_size().x != 0 ) { index /= preset->get_size().x; } if (index<0 || index >= presets.size()) return; preset->set_tooltip("Color: #"+presets[index].to_html(presets[index].a<1)+"\n" "LMB: Set color\n" "RMB: Remove preset"); } }
void ColorPicker::_preset_input(const Ref<InputEvent> &ev) { Ref<InputEventMouseButton> bev = ev; if (bev.is_valid()) { if (bev->is_pressed() && bev->get_button_index() == BUTTON_LEFT) { int index = bev->get_position().x / (preset->get_size().x / presets.size()); set_pick_color(presets[index]); } else if (bev->is_pressed() && bev->get_button_index() == BUTTON_RIGHT) { int index = bev->get_position().x / (preset->get_size().x / presets.size()); presets.erase(presets[index]); _update_presets(); bt_add_preset->show(); } _update_color(); emit_signal("color_changed", color); } Ref<InputEventMouseMotion> mev = ev; if (mev.is_valid()) { int index = mev->get_position().x * presets.size(); if (preset->get_size().x != 0) { index /= preset->get_size().x; } if (index < 0 || index >= presets.size()) return; preset->set_tooltip("Color: #" + presets[index].to_html(presets[index].a < 1) + "\n" "LMB: Set color\n" "RMB: Remove preset"); } }
void ProjectExportDialog::popup_export() { add_preset->get_popup()->clear(); for (int i = 0; i < EditorExport::get_singleton()->get_export_platform_count(); i++) { Ref<EditorExportPlatform> plat = EditorExport::get_singleton()->get_export_platform(i); add_preset->get_popup()->add_icon_item(plat->get_logo(), plat->get_name()); } _update_presets(); if (presets->get_current() >= 0) { _edit_preset(presets->get_current()); // triggers rescan for templates if newly installed } // Restore valid window bounds or pop up at default size. if (EditorSettings::get_singleton()->has_setting("interface/dialogs/export_bounds")) { popup(EditorSettings::get_singleton()->get("interface/dialogs/export_bounds")); } else { Size2 popup_size = Size2(900, 700) * editor_get_scale(); Size2 window_size = get_viewport_rect().size; popup_size.x = MIN(window_size.x * 0.8, popup_size.x); popup_size.y = MIN(window_size.y * 0.8, popup_size.y); popup_centered(popup_size); } }
void ProjectExportDialog::_delete_preset_confirm() { int idx = presets->get_current(); _edit_preset(-1); EditorExport::get_singleton()->remove_export_preset(idx); _update_presets(); }
void ProjectExportDialog::_delete_preset_confirm() { int idx = presets->get_current(); parameters->edit(NULL); //to avoid crash EditorExport::get_singleton()->remove_export_preset(idx); _update_presets(); _edit_preset(-1); }
void ProjectExportDialog::drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) { if (p_from == presets) { Dictionary d = p_data; int from_pos = d["preset"]; int to_pos = -1; if (presets->get_item_at_position(p_point, true) >= 0) { to_pos = presets->get_item_at_position(p_point, true); } if (to_pos == -1 && !presets->is_pos_at_end_of_items(p_point)) return; if (to_pos == from_pos) return; else if (to_pos > from_pos) { to_pos--; } Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_preset(from_pos); EditorExport::get_singleton()->remove_export_preset(from_pos); EditorExport::get_singleton()->add_export_preset(preset, to_pos); _update_presets(); if (to_pos >= 0) _edit_preset(to_pos); else _edit_preset(presets->get_item_count() - 1); } else if (p_from == patches) { Dictionary d = p_data; if (!d.has("type") || String(d["type"]) != "export_patch") return; int from_pos = d["patch"]; TreeItem *item = patches->get_item_at_position(p_point); if (!item) return; int to_pos = item->get_cell_mode(0) == TreeItem::CELL_MODE_CHECK ? int(item->get_metadata(0)) : -1; if (to_pos == from_pos) return; else if (to_pos > from_pos) { to_pos--; } Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_preset(presets->get_current()); String patch = preset->get_patch(from_pos); preset->remove_patch(from_pos); preset->add_patch(patch, to_pos); _edit_preset(presets->get_current()); } }
void ColorPicker::add_preset(const Color &p_color) { if (presets.find(p_color)) { presets.move_to_back(presets.find(p_color)); } else { presets.push_back(p_color); } _update_presets(); if (presets.size() == 10) bt_add_preset->hide(); }
void ProjectExportDialog::_duplicate_preset() { Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current()); if (current.is_null()) return; Ref<EditorExportPreset> preset = current->get_platform()->create_preset(); ERR_FAIL_COND(!preset.is_valid()); String name = current->get_name() + "" + itos(1); bool make_runnable = true; int attempt = 2; while (true) { bool valid = true; for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) { Ref<EditorExportPreset> p = EditorExport::get_singleton()->get_export_preset(i); if (p->get_platform() == preset->get_platform() && p->is_runnable()) { make_runnable = false; } if (p->get_name() == name) { valid = false; break; } } if (valid) break; attempt++; name = current->get_name() + " " + itos(attempt); } preset->set_name(name); if (make_runnable) preset->set_runnable(make_runnable); preset->set_export_filter(current->get_export_filter()); preset->set_include_filter(current->get_include_filter()); preset->set_exclude_filter(current->get_exclude_filter()); Vector<String> list = current->get_patches(); for (int i = 0; i < list.size(); i++) { preset->add_patch(list[i]); } preset->set_custom_features(current->get_custom_features()); for (const List<PropertyInfo>::Element *E = current->get_properties().front(); E; E = E->next()) { preset->set(E->get().name, current->get(E->get().name)); } EditorExport::get_singleton()->add_export_preset(preset); _update_presets(); _edit_preset(EditorExport::get_singleton()->get_export_preset_count() - 1); }
void ProjectExportDialog::_name_changed(const String &p_string) { if (updating) return; Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current()); ERR_FAIL_COND(current.is_null()); current->set_name(p_string); _update_presets(); }
void ProjectExportDialog::_export_path_changed(const StringName &p_property, const Variant &p_value, const String &p_field, bool p_changing) { if (updating) return; Ref<EditorExportPreset> current = get_current_preset(); ERR_FAIL_COND(current.is_null()); current->set_export_path(p_value); _update_presets(); }
void ProjectExportDialog::popup_export() { add_preset->get_popup()->clear(); for (int i = 0; i < EditorExport::get_singleton()->get_export_platform_count(); i++) { Ref<EditorExportPlatform> plat = EditorExport::get_singleton()->get_export_platform(i); add_preset->get_popup()->add_icon_item(plat->get_logo(), plat->get_name()); } _update_presets(); // Restore valid window bounds or pop up at default size. if (EditorSettings::get_singleton()->has("interface/dialogs/export_bounds")) { popup(EditorSettings::get_singleton()->get("interface/dialogs/export_bounds")); } else { popup_centered_ratio(); } }
void ProjectExportDialog::_runnable_pressed() { if (updating) return; Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current()); ERR_FAIL_COND(current.is_null()); if (runnable->is_pressed()) { for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) { Ref<EditorExportPreset> p = EditorExport::get_singleton()->get_export_preset(i); if (p->get_platform() == current->get_platform()) { p->set_runnable(current == p); } } } else { current->set_runnable(false); } _update_presets(); }
void ProjectExportDialog::_add_preset(int p_platform) { Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_platform(p_platform)->create_preset(); ERR_FAIL_COND(!preset.is_valid()); String name = EditorExport::get_singleton()->get_export_platform(p_platform)->get_name(); bool make_runnable = true; int attempt = 1; while (true) { bool valid = true; for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) { Ref<EditorExportPreset> p = EditorExport::get_singleton()->get_export_preset(i); if (p->get_platform() == preset->get_platform() && p->is_runnable()) { make_runnable = false; } if (p->get_name() == name) { valid = false; break; } } if (valid) break; attempt++; name = EditorExport::get_singleton()->get_export_platform(p_platform)->get_name() + " " + itos(attempt); } preset->set_name(name); if (make_runnable) preset->set_runnable(make_runnable); EditorExport::get_singleton()->add_export_preset(preset); _update_presets(); _edit_preset(EditorExport::get_singleton()->get_export_preset_count() - 1); }