示例#1
0
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());
	}
}
示例#2
0
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());
}
示例#3
0
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);
	}
}
示例#4
0
void ProjectExportDialog::_delete_preset_confirm() {

	int idx = presets->get_current();
	_edit_preset(-1);
	EditorExport::get_singleton()->remove_export_preset(idx);
	_update_presets();
}
示例#5
0
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);
}
示例#6
0
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());
	}
}
示例#7
0
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());
}
示例#8
0
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);
}
示例#9
0
void ProjectExportDialog::_update_parameters(const String &p_edited_property) {

	_edit_preset(presets->get_current());
}
示例#10
0
void ProjectExportDialog::_update_current_preset() {

	_edit_preset(presets->get_current());
}