# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{11..14} )

inherit desktop optfeature python-single-r1 xdg

DESCRIPTION="Multitrack non-linear video editor"
HOMEPAGE="https://github.com/jliljebl/flowblade https://jliljebl.github.io/flowblade/"
SRC_URI="https://github.com/jliljebl/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P}/flowblade-trunk"

LICENSE="GPL-3+"
SLOT="0"
KEYWORDS="~amd64"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"

RDEPEND="
	${PYTHON_DEPS}
	$(python_gen_cond_dep '
		dev-python/numpy[${PYTHON_USEDEP}]
		dev-python/pillow[${PYTHON_USEDEP}]
		dev-python/pygobject:3[cairo,${PYTHON_USEDEP}]
	')
	gnome-base/librsvg
	media-libs/mlt[ffmpeg,frei0r,gtk,python,sdl,xml,${PYTHON_SINGLE_USEDEP}]
	media-video/ffmpeg
	x11-libs/gdk-pixbuf:2[introspection]
	x11-libs/gtk+:3[introspection]
	x11-libs/pango[introspection]
"

DOCS=(
	AUTHORS
	README
	docs/DEPENDENCIES.md
	docs/INSTALLING.md
	docs/KNOWN_ISSUES.md
	docs/RELEASE_NOTES.md
	docs/SYSTEM_REQUIREMENTS.md
)

src_prepare() {
	# USB jog/shuttle support is optional. Remove this compatibility patch after
	# https://github.com/jliljebl/flowblade/pull/1233 lands in a release.
	local usbhid
	for usbhid in Flowblade/usbhid.py Flowblade/src/usb/usbhid.py; do
		[[ -f ${usbhid} ]] || continue
		grep -q '^import usb1$' "${usbhid}" || continue
		case ${usbhid} in
			Flowblade/usbhid.py)
				eapply "${FILESDIR}/${PN}-optional-usb1-legacy-path.patch"
				;;
			Flowblade/src/usb/usbhid.py)
				eapply "${FILESDIR}/${PN}-optional-usb1-src-path.patch"
				;;
		esac
	done
	eapply "${FILESDIR}/${P}-old-filter-object-compat.patch"

	default

	local shebang_paths=( flowblade )
	[[ -d Flowblade/launch ]] && shebang_paths+=( Flowblade/launch )
	[[ -d Flowblade/src/launch ]] && shebang_paths+=( Flowblade/src/launch )
	python_fix_shebang "${shebang_paths[@]}"
}

src_install() {
	dobin flowblade

	insinto /usr/share/${PN}
	doins -r Flowblade

	domenu installdata/io.github.jliljebl.Flowblade.desktop
	doicon -s 128 installdata/io.github.jliljebl.Flowblade.png
	doman installdata/flowblade.1

	insinto /usr/share/metainfo
	doins installdata/io.github.jliljebl.Flowblade.appdata.xml

	insinto /usr/share/mime/packages
	doins installdata/io.github.jliljebl.Flowblade.xml

	python_optimize "${ED}/usr/share/${PN}/Flowblade"
	einstalldocs
}

pkg_postinst() {
	xdg_pkg_postinst

	optfeature "USB jog/shuttle support" dev-python/libusb1
	optfeature "extra LADSPA audio filters" media-plugins/swh-plugins
	optfeature "additional MLT OpenGL effects" "media-libs/mlt[opengl]"
	optfeature "Blender integration for generated media workflows" media-gfx/blender
}

pkg_postrm() {
	xdg_pkg_postrm
}