from doctest import debug from tkinter import messagebox from magictk import mtk from logger.logger import * from logger import config from ui import nav from ui import installer from lib import get_disk from ui.lang import load_lang, l import sys import getpass import platform import ctypes import os import locale import traceback import textwrap nlang = locale.getdefaultlocale()[0].lower() def check_args(arg, check): if len(arg) >= len(check): if (arg[:len(check)] == check): return 1 return 0 DISPERMISSION = 0 DEBUG = 0 NOTRACE = 0 for i in sys.argv[1:]: if (check_args(i, "--lang")): nlang = i.split("=")[-1] if (check_args(i, "--dis-permission-error")): DISPERMISSION = 1 if (check_args(i, "--log-level")): config.LOGLEVEL = i.split("=")[-1] if (check_args(i, "--debug")): DEBUG = 1 if (check_args(i, "--no-trace")): NOTRACE = 1 if (nlang+".toml" not in os.listdir("lang")): nlang = "en_us" def main(): log_init() if (DEBUG == 1): info("[win]< debug mode >") if (NOTRACE == 0): info("[trace]open trace") trace_sys(f"[trace]OS={platform.system()}") trace_sys(f"[trace]VER={platform.version()}") trace_sys(f"[trace]CPU={platform.processor()}") trace_sys(f"[trace]ARCH={str(platform.architecture()[0])}") trace_sys(f"[trace]PYVER={platform.python_version()}") trace_sys(f"[trace]PYIMP={platform.python_implementation()}") load_lang(nlang) disk_res = get_disk.find_hub_disk() errno = disk_res[0] root_disk = disk_res[1] if (errno == 1): messagebox.showerror("Injector Hub Error", root_disk) sys.exit(1) elif (errno == 2): info("[win]cannot find installed disk") if DISPERMISSION == 0: if (platform.system() == "Linux" and getpass.getuser() != "root"): err("permission denied in linux") messagebox.showerror("Injector Hub Error", l("PermissionDeniedLinux")) if (DEBUG == 0): sys.exit(1) else: sys.exit() if (platform.system() == "Windows" and ctypes.windll.shell32.IsUserAnAdmin() == False): err("permission denied in windows") messagebox.showerror("Injector Hub Error", l("PermissionDeniedWin")) if (DEBUG == 0): sys.exit(1) else: sys.exit() nav_list = [ {"icon": "lightning", "frame": installer.installer_ui, "side": "top"} ] else: info(f"[win]found installed disk \"{root_disk}\"") nav_list = [ {"icon": "home-filled", "frame": None, "side": "top"}, {"icon": "dvd", "frame": None, "side": "top"}, {"icon": "plugin", "frame": None, "side": "top"}, {"icon": "setting", "frame": None, "side": "bottom"} ] info("[win]init window") mtk.load_icon_pack("res/icon.pack") main_win = mtk.Tk(title="Injector Hub", w=1000, h=800) main_frame = mtk.Frame(main_win, w=10000) nav.pack_nav(main_win, main_frame, nav_list) main_frame.pack(side="left", fill="both", expand=True) info("[win]mainloop") main_win.mainloop() def run(): try: main() except Exception as exp: err("[errtrace] caught err:"+repr(exp)) for i in traceback.format_exc().split("\n"): firstlen_flag = "* " lastlen = "" for j in textwrap.wrap(i, width=40): err("[errtrace]"+" "+firstlen_flag+" " * (len(lastlen)-len(lastlen.lstrip()))+j) lastlen = " " * (len(lastlen)-len(lastlen.lstrip()))+j firstlen_flag = " " if (DEBUG == 1): raise