From ac11417f9e3102289249f9066b6d62680447690a Mon Sep 17 00:00:00 2001 From: jyamihud Date: Thu, 26 Nov 2020 15:30:34 +0000 Subject: [PATCH] Add 'troubleshooter/troubleshooter.py' --- troubleshooter/troubleshooter.py | 309 +++++++++++++++++++++++++++++++ 1 file changed, 309 insertions(+) create mode 100644 troubleshooter/troubleshooter.py diff --git a/troubleshooter/troubleshooter.py b/troubleshooter/troubleshooter.py new file mode 100644 index 0000000..89261f1 --- /dev/null +++ b/troubleshooter/troubleshooter.py @@ -0,0 +1,309 @@ +# THIS FILE IS A PART OF VCStudio +# PYTHON 3 + +import os +w, h = os.get_terminal_size() + +from settings import settings +from settings import talk +from troubleshooter import fix + +commands = [] +def completer(text, state): + options = [i for i in commands if i.startswith(text)] + if state < len(options): + return options[state] + else: + return None + +try: + import readline + readline.parse_and_bind("tab: complete") + readline.set_completer(completer) +except: + print("NO TABS, SORRY!") + + +def cls(): + #cleaning the terminal + os.system("clear") + + global w + global h + + w, h = os.get_terminal_size() + if (w % 2) == 0: + w = w - 1 + + +def output(form, text=""): + #Basically a fancy print() function + while len(text) < w: + text = text + " " + + print(form + text) + +# COFIGURING LANGUAGE +def lang_setting(): + + + + title = "TYPE YOUR LANGUAGE AND HIT ENTER" + + while True: + + cls() + + #getting the configuration + language = settings.read("Language") + + # Testing if I cal load the language file. + try: + open("settings/languages/"+language+".data") + return + except: + pass + + talk.alert("Select Language. Look in console.") + + # Getting list of available languages + all_langs = settings.list_languages() + + # Make them auto-comelitable + global commands + commands = [] + for lang in all_langs: + commands.append(lang) + + # Counting them + len_langs = len(all_langs) + + + + + output("\033[1;44m") + + #Title + + output("\033[1;44m", \ + " " * int(round((w-len(title))/2)) \ + + title + \ + " " * int((w-len(title))/2) \ + ) + + output("\033[1;44m") + + for raws in range(int((h-5-len_langs)/2)): + output("\033[1;40m") + + for lang in all_langs: + + output("\033[1;40m", \ + " " * int(round((w-len(lang))/2)) \ + + lang + \ + " " * int((w-len(lang))/2) \ + ) + + + for raws in range(int((h-5-len_langs)/2)): + output("\033[1;40m") + + + + print("\033[1;m") + + # Trying to write language setting. + command = input(":") + if command != "": + if command not in all_langs: + title = "THERE IS NO " + command + " FILE" + else: + settings.write("Language",command) + return + + +lang_setting() + + + +def modules_test(Modules, title, setting): + + + # TESTING THAT MODULES ARE INSTALLED CORRECTLY + + + + cls() + + import time # IK it's crazy but user needs to understand what's + # going on. So there be some delay between them. + + + + + title = talk.text(title) + + + def drawmodules(): + + cls() + + + output("\033[1;44m") + + output("\033[1;44m", \ + " " * int((w-len(title))/2) \ + + title + \ + " " * int((w-len(title))/2) \ + ) + + output("\033[1;44m") + + for raws in range(int((h-5-len(Modules))/2)): + output("\033[1;40m") + + for mod2 in Modules: + + if Modules[mod2] == None: + + ans = mod2 + + output("\033[1;40m", " "+ans) + + elif Modules[mod2] == True: + ans = mod2 + " "*int(w/2-len(mod2)) + talk.text("checked") + + output("\033[1;42m", " "+ans) + else: + + ans = mod2 + " "*int(w/2-len(mod2)) + talk.text("failed") + + output("\033[1;41m", " "+ans) + + + for raws in range(int((h-6-len(Modules))/2)): + output("\033[1;40m") + + errors = 0 + for mod in Modules: + + drawmodules() + + try: + try: + + exec( "import " + mod) + Modules[mod] = True + + except: + Modules[mod] = False + errors = errors + 1 + + except: + pass + time.sleep(0.1) + + + drawmodules() + + if errors: + + global commands + commands = ["Fix"] + + talk.alert(talk.text("missingmodulenotification")) + + title = str(errors)+" "+talk.text("missingmoduleserror") + + output("\033[1;40m\033[1;31m", \ + " " * int((w-len(title))/2) \ + + title + \ + " " * int((w-len(title))/2) \ + ) + + #fix thing + print("\033[1;m") + command = input(":") + + if command == "Fix": + fix.autofix(Modules) + + else: + #if no errors + settings.write(setting, "Checked-by-troubleshooter") + + print("\033[1;m") + + +if not settings.read("Python-is-good"): + + Modules = { + "os":None, + "gi":None, + "gi.repository.Gtk":None, + "gi.repository.GLib":None, + "cairo":None, + "PIL":None, + "PIL.Image":None, + "subprocess":None, + "datetime":None, + "sys":None, + "urllib":None, + "urllib3":None, + "socket":None, + "readline":None + } + + modules_test(Modules, "checkingpythonmodules", "Python-is-good") + +if not settings.read("VCStudio-is-good"): + + OwnModules = { + "settings.settings":None, + "settings.talk":None, + "troubleshooter.troubleshooter":None, + "troubleshooter.fix":None, + "project_manager.pm_console":None, + "project_manager.pm_gtk":None, + "project_manager.pm_project":None, + "project_manager.pm_mainLayer":None, + "UI.UI_color":None, + "UI.UI_elements":None, + "UI.UI_testing":None, + } + + modules_test(OwnModules, "checkingpartsoftheprogramm", "VCStudio-is-good") + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +