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

EAPI=8

DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..13} )

inherit distutils-r1

DESCRIPTION="A simple, lightweight GTK4-based GUI for NetworkManager using nmcli"
HOMEPAGE="https://github.com/s-adi-dev/nmgui"
SRC_URI="https://github.com/s-adi-dev/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"

DEPEND="
	>=dev-lang/python-3.10
	dev-python/pygobject[${PYTHON_USEDEP}]
	gui-libs/gtk:4
	net-misc/networkmanager
"

RDEPEND="${DEPEND}
	dev-python/python-nmcli[${PYTHON_USEDEP}]
"

BDEPEND="
	dev-python/setuptools[${PYTHON_USEDEP}]
"

src_prepare() {
	default
	
	# Fix all relative imports to use absolute imports from the app package
	find app -name "*.py" -exec sed -i 's/^from network_service import/from app.network_service import/g' {} \;
	find app -name "*.py" -exec sed -i 's/^from models import/from app.models import/g' {} \;
	find app -name "*.py" -exec sed -i 's/^from ui\./from app.ui./g' {} \;
	find app -name "*.py" -exec sed -i 's/^import ui\./import app.ui./g' {} \;
	find app -name "*.py" -exec sed -i 's/^import models/import app.models/g' {} \;
	find app -name "*.py" -exec sed -i 's/^import network_service/import app.network_service/g' {} \;
	
	# Ensure main.py has a main function and proper if __name__ == "__main__" block
	if ! grep -q "def main" app/main.py; then
		echo "def main():" >> app/main.py
		echo "    pass" >> app/main.py
	fi
	
	# Create a simple wrapper script
	cat > nmgui_wrapper.py << EOF
#!/usr/bin/env python3
import sys
import os
sys.path.insert(0, os.path.dirname(__file__))

if __name__ == "__main__":
    from app.main import *
    
    # Try to run the original main logic
    try:
        if 'main' in globals():
            main()
        else:
            # Fallback: execute the main.py file directly
            exec(open(os.path.join(os.path.dirname(__file__), 'app', 'main.py')).read())
    except Exception as e:
        print(f"Error running nmgui: {e}")
        sys.exit(1)
EOF
	
	# Create a proper setup.py
	cat > setup.py << EOF
from setuptools import setup, find_packages

setup(
    name="nmgui",
    version="${PV}",
    packages=find_packages(),
    package_data={
        "app": ["*.py"],
        "app.ui": ["*.py", "*.ui", "*.glade", "*.xml"],
    },
    scripts=["nmgui_wrapper.py"],
    entry_points={
        "console_scripts": [
            "nmgui=nmgui_wrapper:main",
        ],
    },
    install_requires=[
        "pygobject",
        "nmcli",
    ],
)
EOF

	# Create __init__.py files
	touch app/__init__.py
	touch app/ui/__init__.py
}

src_install() {
	distutils-r1_src_install
	
	# Install desktop file if it exists
	if [[ -f "${S}/nmgui.desktop" ]]; then
		domenu "${S}/nmgui.desktop"
	fi
}

pkg_postinst() {
	elog "nmgui requires NetworkManager to be running to function properly."
	elog "Make sure you have NetworkManager enabled:"
	elog "  rc-update add NetworkManager default"
	elog "  systemctl enable NetworkManager"
}