#!/usr/bin/env python3
import os
import sys
import shutil
import traceback
import threading
import PyQt5.QtWidgets as QtWidgets

homePath = os.getenv("HOME")
if not os.path.exists("{}/.config/gx-env/".format(homePath)):
    os.makedirs("{}/.config/gx-env/".format(homePath))

def Save():
    try:
        if allCommandAddNoSandbox.isChecked() and not os.path.exists("{}/.config/gx-env/nosandbox".format(homePath)):
            os.mknod("{}/.config/gx-env/nosandbox".format(homePath))
        if not allCommandAddNoSandbox.isChecked() and os.path.exists("{}/.config/gx-env/nosandbox".format(homePath)):
            os.remove("{}/.config/gx-env/nosandbox".format(homePath))
        os.system("pkexec env `gx-env-show-env-list` gx-env-run")
        QtWidgets.QMessageBox.information(window, "提示", "设置完成!")
        
    except:
        traceback.print_exc()
        QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())

app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
widget = QtWidgets.QWidget()
layout = QtWidgets.QGridLayout()
sparkStoreRun = QtWidgets.QPushButton("打开星火应用商店")
gdebiRun = QtWidgets.QPushButton("安装 deb 包")
xfce4TerminalRun = QtWidgets.QPushButton("终端")
xfce4TerminalRootRun = QtWidgets.QPushButton("终端(root)")
sparkStoreRun.clicked.connect(lambda: threading.Thread(target=os.system, args=["gx-env-run-root spark-store --no-sandbox ; gx-env-load-desktop"]).start())
gdebiRun.clicked.connect(lambda: threading.Thread(target=os.system, args=["gx-env-run-root gdebi-gtk ; gx-env-load-desktop"]).start())
xfce4TerminalRun.clicked.connect(lambda: threading.Thread(target=os.system, args=["gx-env-run xfce4-terminal"]).start())
xfce4TerminalRootRun.clicked.connect(lambda: threading.Thread(target=os.system, args=["gx-env-run-root xfce4-terminal ; gx-env-load-desktop"]).start())
allCommandAddNoSandbox = QtWidgets.QCheckBox("程序默认添加 --no-sandbox 参数")
allCommandAddNoSandbox.setChecked(os.path.exists("{}/.config/gx-env/nosandbox".format(homePath)))
runMoreProgram = QtWidgets.QPushButton("运行更多")
runMoreProgram.clicked.connect(lambda: threading.Thread(target=os.system, args=["gx-env-run-gui"]).start())
refreshDesktop = QtWidgets.QPushButton("刷新启动器图标")
refreshDesktop.clicked.connect(lambda: threading.Thread(target=os.system, args=["gx-env-load-desktop"]).start())
saveButton = QtWidgets.QPushButton("保存")
saveButton.clicked.connect(Save)
layout.addWidget(sparkStoreRun, 0, 0)
layout.addWidget(gdebiRun, 0, 1)
layout.addWidget(xfce4TerminalRun, 0, 2)
layout.addWidget(xfce4TerminalRootRun, 0, 3)
layout.addWidget(xfce4TerminalRootRun, 0, 3)
layout.addWidget(runMoreProgram, 0, 4)
layout.addWidget(refreshDesktop, 0, 5)
layout.addWidget(allCommandAddNoSandbox, 1, 0, 1, 5)
layout.addWidget(saveButton, 1, 5)
widget.setLayout(layout)
window.setCentralWidget(widget)
window.show()
sys.exit(app.exec_())