示例#1
0
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");
	}
}
示例#2
0
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");
	}
}
示例#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::_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);
}
示例#6
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());
	}
}
示例#7
0
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();
}
示例#8
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);
}
示例#9
0
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();
}
示例#10
0
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();
}
示例#11
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();

	// 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();
	}
}
示例#12
0
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();
}
示例#13
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);
}