#!/usr/bin/python3
"""Menüdeki "Uygulamalar": katalog onay listesi; değişiklik pkexec ile Konsole'da uygulanır."""
import json
import shlex
import subprocess
import sys

KATALOG = "/usr/share/mhmt/uygulamalar/katalog.json"


def main():
    with open(KATALOG, encoding="utf-8") as f:
        gruplar = json.load(f)["gruplar"]
    durum = json.loads(subprocess.run(["mhmt-uygulama", "liste", "--json"], stdout=subprocess.PIPE,
                                      universal_newlines=True, check=True).stdout)
    var = {i for i, d in durum.items() if d != "kurulu değil"}
    satirlar = []
    for g in gruplar:
        for o in g["ogeler"]:
            kaynak = "Flatpak" if "flatpak" in o else "Debian"
            etiket = f"{g['ad']} › {o['ad']} [{kaynak}] — {o['aciklama']}"
            satirlar += [o["id"], etiket, "on" if o["id"] in var else "off"]
    r = subprocess.run(["kdialog", "--title", "Uygulamalar", "--geometry", "760x640",
                        "--checklist", "Kurulu olmasını istediğin uygulamaları işaretle.\n"
                        "İşareti kaldırılan uygulama kaldırılır. [Flatpak] olanlar internetten iner."]
                       + satirlar, stdout=subprocess.PIPE, universal_newlines=True)
    if r.returncode != 0:
        return 0
    secili = set(shlex.split(r.stdout))
    kur = sorted(secili - var)
    kaldir = sorted(var - secili)
    if not kur and not kaldir:
        return 0
    adimlar = []
    if kur:
        adimlar.append("mhmt-uygulama kur -y " + " ".join(kur))
    if kaldir:
        adimlar.append("mhmt-uygulama kaldir -y " + " ".join(kaldir))
    betik = "; ".join(adimlar) + "; echo; echo 'Bitti. Pencereyi kapatabilirsin.'"
    subprocess.run(["konsole", "--hold", "-e", "pkexec", "/bin/sh", "-c", betik])
    return 0


if __name__ == "__main__":
    sys.exit(main())
