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

EAPI=8

PYTHON_COMPAT=( python3_{11..14} )
inherit flag-o-matic meson python-single-r1 xdg

COMMIT_HASH="22534d16c317ee11714ef7221f9b635df233be9b"
MAN_DATE="2004-11-26"
DESCRIPTION="Diagram/flowchart creation program"
HOMEPAGE="https://wiki.gnome.org/Apps/Dia"
SRC_URI="https://gitlab.gnome.org/GNOME/${PN}/-/archive/${COMMIT_HASH}/${PN}-${COMMIT_HASH}.tar.bz2"
SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/dia-0.98-patches.tar.xz"
S="${WORKDIR}/${PN}-${COMMIT_HASH}"

LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
IUSE="doc pdf python wmf xslt X"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"

DEPEND="
	>=dev-libs/glib-2.76:2
	>=dev-libs/libxml2-2.14:=
	>=media-libs/graphene-1.10
	x11-libs/cairo
	x11-libs/gdk-pixbuf:2
	>=x11-libs/gtk+-3.24:3[X?]
	x11-libs/pango
	pdf? ( >=app-text/poppler-21.03.0:=[cxx] )
	python? ( ${PYTHON_DEPS} )
	wmf? ( media-libs/libemf )
	xslt? ( dev-libs/libxslt )
"
RDEPEND="
	${DEPEND}
	python? ( $(python_gen_cond_dep 'dev-python/pygobject[${PYTHON_USEDEP}]') )
"
BDEPEND="
	dev-util/desktop-file-utils
	dev-util/glib-utils
	sys-devel/gettext
	virtual/pkgconfig
	doc? (
		app-text/docbook-xml-dtd
		app-text/docbook-xsl-stylesheets
		dev-libs/libxslt
	)
"

PATCHES=(
	"${WORKDIR}"/dia-0.98-patches/${PN}-0.98-revert_xpm_replacement.patch
	"${WORKDIR}"/dia-0.98-patches/${PN}-0.98-use_gtkfontbutton.patch
	"${WORKDIR}"/dia-0.98-patches/${PN}-0.98-deps_optional.patch
)

pkg_setup() {
	use python && python-single-r1_pkg_setup
}

src_prepare() {
	default

	# avoid doc in /usr/share/dia/help
	# do not build pdf with dblatex
	sed -e "s:^helpdir =.*$:helpdir = datadir / 'doc' / '${PF}' / 'html':" \
		-e "/^dblatex = /s:find_program(.*):disabler():" \
		-i doc/meson.build || die
	sed -e "/.*helpdir =.*$/s:\"help\":\"../doc/${PF}/html\":" \
		-i app/commands.c || die

	# use local docbook
	sed -e "s:^DB2MAN =.*$:DB2MAN = '${EPREFIX}/usr/share/sgml/docbook/xsl-stylesheets/manpages/docbook.xsl':" \
		-i doc/meson.build || die
}

src_configure() {
	use pdf && append-cxxflags -std=c++20

	# 'if(n)def GDK_WINDOWING_X11' for clipboard and font context
	use X || append-cppflags -DGENTOO_GTK_HIDE_X11

	local emesonargs=(
		$(meson_feature doc)
		-Dpdf=$(usex pdf true false)
		-Dpython=$(usex python true false)
		# from tests/meson.build "Most of these tests are currently broken"
		-Dtests=false
		-Dwmf=$(usex wmf true false)
		-Dxslt=$(usex xslt true false)
	)
	meson_src_configure
}

src_install() {
	meson_src_install

	use doc || newman "${FILESDIR}"/${PN}-${MAN_DATE}.1 ${PN}.1

	if use python; then
		python_fix_shebang "${ED}"/usr/share/dia
		python_optimize "${ED}"/usr/share/dia
	fi
}