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 ProjectExportDialog::_delete_preset_confirm() { int idx = presets->get_current(); parameters->edit(NULL); //to avoid crash _edit_preset(-1); EditorExport::get_singleton()->remove_export_preset(idx); _update_presets(); _edit_preset(presets->get_current()); }
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::_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::_patch_deleted() { Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current()); ERR_FAIL_COND(current.is_null()); Vector<String> patches = current->get_patches(); if (patch_index < patches.size()) { current->remove_patch(patch_index); _edit_preset(presets->get_current()); } }
void ProjectExportDialog::_patch_selected(const String &p_path) { Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current()); ERR_FAIL_COND(current.is_null()); Vector<String> patches = current->get_patches(); if (patch_index >= patches.size()) { current->add_patch(ProjectSettings::get_singleton()->get_resource_path().path_to(p_path) + "*"); } else { String enabled = patches[patch_index].ends_with("*") ? String("*") : String(); current->set_patch(patch_index, ProjectSettings::get_singleton()->get_resource_path().path_to(p_path) + enabled); } _edit_preset(presets->get_current()); }
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); }
void ProjectExportDialog::_update_parameters(const String &p_edited_property) { _edit_preset(presets->get_current()); }
void ProjectExportDialog::_update_current_preset() { _edit_preset(presets->get_current()); }