Upload files to "subfiles"
This commit is contained in:
		
							parent
							
								
									bf1ea6b0f8
								
							
						
					
					
						commit
						d80a137ba6
					
				@ -3,16 +3,21 @@
 | 
				
			|||||||
import requests 
 | 
					import requests 
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
from hashlib import sha256
 | 
					from hashlib import sha256
 | 
				
			||||||
 | 
					from pathlib import Path
 | 
				
			||||||
 | 
					from shutil import copyfileobj
 | 
				
			||||||
from . import helpers, savetools
 | 
					from . import helpers, savetools
 | 
				
			||||||
from websockets.sync.client import connect
 | 
					from websockets.sync.client import connect
 | 
				
			||||||
from subprocess import Popen, PIPE
 | 
					from subprocess import Popen, PIPE
 | 
				
			||||||
from sys import platform
 | 
					from sys import platform
 | 
				
			||||||
from os import listdir
 | 
					from os import listdir
 | 
				
			||||||
from os.path import isfile, join, exists
 | 
					from os.path import isfile, join, exists
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
from pathlib import Path
 | 
					from pathlib import Path
 | 
				
			||||||
import subprocess
 | 
					import subprocess
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def startClient(self, id):
 | 
				
			||||||
 | 
					    cmd = f"steam://rungameid/{id}"
 | 
				
			||||||
 | 
					    Popen(['steam', cmd])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def downloadLatestDll(self, filepath):
 | 
					def downloadLatestDll(self, filepath):
 | 
				
			||||||
    x = requests.get('https://openwf.io/supplementals/client%20drop-in/meta')
 | 
					    x = requests.get('https://openwf.io/supplementals/client%20drop-in/meta')
 | 
				
			||||||
@ -22,6 +27,7 @@ def downloadLatestDll(self, filepath):
 | 
				
			|||||||
    hashofdll = sha256()
 | 
					    hashofdll = sha256()
 | 
				
			||||||
    hashofdll.update(content)# 
 | 
					    hashofdll.update(content)# 
 | 
				
			||||||
    if hashofdll.hexdigest() == meta['sha256']:
 | 
					    if hashofdll.hexdigest() == meta['sha256']:
 | 
				
			||||||
 | 
					        print(filepath)
 | 
				
			||||||
        with open(filepath + "dwmapi.dll", "wb") as out_file:
 | 
					        with open(filepath + "dwmapi.dll", "wb") as out_file:
 | 
				
			||||||
            out_file.write(content)
 | 
					            out_file.write(content)
 | 
				
			||||||
            helpers.messageBox(self=self,title="Bootstrapper Downloaded", message="Bootstrapper Downloaded!", type="info")
 | 
					            helpers.messageBox(self=self,title="Bootstrapper Downloaded", message="Bootstrapper Downloaded!", type="info")
 | 
				
			||||||
@ -58,46 +64,46 @@ def getLatestVersions(self, cacheFile, value):
 | 
				
			|||||||
    value[0].set("Latest Server Version: " + server)
 | 
					    value[0].set("Latest Server Version: " + server)
 | 
				
			||||||
    value[1].set("Latest Client Version: " + client)
 | 
					    value[1].set("Latest Client Version: " + client)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def startServer(self, cd, logArea): # To my knowledge, running the server in the main thread would stall the gui, fuck that lol
 | 
				
			||||||
 | 
					    logmax = helpers.getLogMax(self, self.configFile)
 | 
				
			||||||
 | 
					    logarr=[]
 | 
				
			||||||
 | 
					    def mongo():
 | 
				
			||||||
 | 
					        sysctl = Popen(['systemctl', 'start', 'mongodb'])
 | 
				
			||||||
 | 
					        sysctl.wait()# 
 | 
				
			||||||
def serverBackground(self, cd, logArea): # To my knowledge, running the server in the main thread would stall the gui, fuck that lol
 | 
					    def execute(cd):
 | 
				
			||||||
     logmax = helpers.getLogMax()
 | 
					        popen = Popen(['npm', 'run', 'dev'], stdin=PIPE, stdout=PIPE, universal_newlines=True, cwd=cd, preexec_fn=os.setsid)
 | 
				
			||||||
     logarr=[]
 | 
					        self.popenThreads.append(popen)
 | 
				
			||||||
     def mongo():
 | 
					        for stdout_line in iter(popen.stdout.readline, ""):
 | 
				
			||||||
         sysctl = Popen(['systemctl', 'start', 'mongodb'])
 | 
					            yield stdout_line 
 | 
				
			||||||
         sysctl.wait()# 
 | 
					        popen.stdout.close()
 | 
				
			||||||
     def execute(cd):
 | 
					        return_code = popen.wait()
 | 
				
			||||||
         popen = Popen(['npm', 'run', 'dev'], stdin=PIPE, stdout=PIPE, universal_newlines=True, cwd=cd)
 | 
					        if return_code:
 | 
				
			||||||
         for stdout_line in iter(popen.stdout.readline, ""):
 | 
					            raise subprocess.CalledProcessError(return_code)# 
 | 
				
			||||||
             yield stdout_line 
 | 
					    def start(cd, logArea):
 | 
				
			||||||
         popen.stdout.close()
 | 
					        for path in execute(cd):
 | 
				
			||||||
         return_code = popen.wait()
 | 
					            if len(logarr) < logmax:
 | 
				
			||||||
         if return_code:
 | 
					                logarr.append(path)
 | 
				
			||||||
             raise subprocess.CalledProcessError(return_code)# 
 | 
					            else:
 | 
				
			||||||
     if platform == "linux":
 | 
					                logarr.pop(0)
 | 
				
			||||||
         helpers.messageBox(self, title="MongoDB", message="The mongodb server is required to start SNS\nYou will need to give sudo permission for this.", type="info")
 | 
					                logarr.append(path)
 | 
				
			||||||
         mongo()
 | 
					            if logArea:
 | 
				
			||||||
     
 | 
					                logArea.configure(state="normal")
 | 
				
			||||||
     for path in execute(cd):
 | 
					                logArea.delete(1.0, "end")
 | 
				
			||||||
         if len(logarr) < logmax:
 | 
					            for element in logarr:
 | 
				
			||||||
             logarr.append(path)
 | 
					                logArea.insert("end", element)
 | 
				
			||||||
         else:
 | 
					            logArea.configure(state="disabled")
 | 
				
			||||||
             logarr.pop(0)
 | 
					        
 | 
				
			||||||
             logarr.append(path)
 | 
					    if platform == "linux":
 | 
				
			||||||
         if logArea:
 | 
					        if not self.popenThreads:
 | 
				
			||||||
             logArea.configure(state="normal")
 | 
					            helpers.messageBox(self, title="MongoDB", message="The mongodb server is required to start SNS\nYou will need to give sudo permission for this.", type="info")
 | 
				
			||||||
             logArea.delete(1.0, "end")
 | 
					            mongo()
 | 
				
			||||||
             for element in logarr:
 | 
					            start(cd, logArea)
 | 
				
			||||||
                 pass
 | 
					        else:
 | 
				
			||||||
             logArea.configure(state="disabled")
 | 
					            helpers.messageBox(self, title="Already Running!", message="The Server is already running!", type="info")
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
def getClientResponse():
 | 
					def getClientResponse():
 | 
				
			||||||
    try: 
 | 
					    try: 
 | 
				
			||||||
        with connect("ws://localhost:61558") as websocket:
 | 
					        with connect("ws://localhost:6155") as websocket:
 | 
				
			||||||
            message = json.loads(websocket.recv())
 | 
					            message = json.loads(websocket.recv())
 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        message=False
 | 
					        message=False
 | 
				
			||||||
@ -110,24 +116,27 @@ def checkForClient(clientpath):
 | 
				
			|||||||
    else: 
 | 
					    else: 
 | 
				
			||||||
        return False
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def runPluto(name, plutolist, conffile):
 | 
					def runPluto(self, name, runningList):
 | 
				
			||||||
    openwfpath = helpers.getclientpath(conffile) + "/OpenWF/scripts/"
 | 
					    openwfpath = self.clientPath + "/OpenWF/scripts/"
 | 
				
			||||||
    onlyfiles = [f for f in listdir(openwfpath) if isfile(join(openwfpath, f))]
 | 
					    onlyfiles = [f for f in listdir(openwfpath) if isfile(join(openwfpath, f))]
 | 
				
			||||||
    if helpers.getclientresponse():
 | 
					    print("called " + name)
 | 
				
			||||||
 | 
					    if getClientResponse():
 | 
				
			||||||
        running = []
 | 
					        running = []
 | 
				
			||||||
        print(helpers.getclientresponse()["running_scripts"])
 | 
					        print(getClientResponse()["running_scripts"])
 | 
				
			||||||
        if name in running:
 | 
					        if name in running:
 | 
				
			||||||
            requests.get(url=("http://localhost:61558/stop_script?OpenWF/scripts/" + name))
 | 
					            requests.get(url=("http://localhost:6155/stop_script?OpenWF/scripts/" + name))
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            requests.get(url=("http://localhost:61558/start_script?OpenWF/scripts/" + name))
 | 
					            requests.get(url=("http://localhost:6155/start_script?OpenWF/scripts/" + name))
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        for script in helpers.getclientresponse()["running_scripts"]:
 | 
					        for script in getClientesponse()["running_scripts"]:
 | 
				
			||||||
            running.append(script.removeprefix("OpenWF/scripts/"))# 
 | 
					            running.append(script.removeprefix("OpenWF/scripts/"))# 
 | 
				
			||||||
        for file in onlyfiles:
 | 
					        for file in onlyfiles:
 | 
				
			||||||
            if file in running:
 | 
					            if file in running:
 | 
				
			||||||
                if plutolist[file]: plutolist[file].set("Running")
 | 
					                if runningList[file]: runningList[file].set(True)
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                if plutolist[file]: plutolist[file].set("Not Running")
 | 
					                if runningList[file]: runningList[file].set(False)
 | 
				
			||||||
 | 
					    else: 
 | 
				
			||||||
 | 
					        if runningList[name]: runningList[name].set(False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def getSnPath(file):
 | 
					def getSnPath(file):
 | 
				
			||||||
    if Path(file).is_file():
 | 
					    if Path(file).is_file():
 | 
				
			||||||
@ -137,14 +146,61 @@ def getSnPath(file):
 | 
				
			|||||||
    else: 
 | 
					    else: 
 | 
				
			||||||
        return False
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def openClientLogs(self, platform):
 | 
				
			||||||
 | 
					    if platform=="linux":
 | 
				
			||||||
 | 
					        print("ok")
 | 
				
			||||||
 | 
					        helpers.messageBox(self, "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def pushWeapon(self, string, slot): 
 | 
				
			||||||
 | 
					    if type(string) is list:
 | 
				
			||||||
 | 
					        i=0
 | 
				
			||||||
 | 
					        for part in string:
 | 
				
			||||||
 | 
					            print(i)
 | 
				
			||||||
 | 
					            pluto = f"gRegion:GetLocalPlayerAvatar():InventoryControl():RemoveItem({slot[i]}, true) gRegion:GetLocalPlayerAvatar():GiveItem(Type(\"{part}\"), true)"
 | 
				
			||||||
 | 
					            requests.get(f"http://localhost:61558/start_script_inline?{pluto}")
 | 
				
			||||||
 | 
					            if slot[i] == 3:
 | 
				
			||||||
 | 
					                level = f"gRegion:GetLocalPlayerAvatar():InventoryControl():GetActivePowerSuit():SetXP(1600000)"
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                level = f"gRegion:GetLocalPlayerAvatar():InventoryControl():GetWeaponInHand({slot[i]}):SetXP(1600000)"
 | 
				
			||||||
 | 
					            requests.get(f"http://localhost:61558/start_script_inline?{level}")
 | 
				
			||||||
 | 
					            i+=1
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        pluto = f"gRegion:GetLocalPlayerAvatar():InventoryControl():RemoveItem({slot}, true) gRegion:GetLocalPlayerAvatar():GiveItem(Type(\"{string}\"), true) gRegion:GetLocalPlayerAvatar():InventoryControl():GetWeaponInHand({slot}):SetXP(1600000)"
 | 
				
			||||||
 | 
					        requests.get(f"http://localhost:61558/start_script_inline?{pluto}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def pushInline(self, Area): 
 | 
				
			||||||
 | 
					    #format
 | 
				
			||||||
 | 
					    formatted = Area.get(0.0, "end").replace("\n", ' ')
 | 
				
			||||||
 | 
					    requests.get(f"http://localhost:61558/start_script_inline?{formatted}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def getWarframeExports(self, path):
 | 
				
			||||||
 | 
					    exportList = {
 | 
				
			||||||
 | 
					        "weapons":"https://raw.githubusercontent.com/calamity-inc/warframe-public-export/refs/heads/senpai/ExportWeapons_en.json",
 | 
				
			||||||
 | 
					        "powersuits":"https://raw.githubusercontent.com/calamity-inc/warframe-public-export/refs/heads/senpai/ExportWarframes_en.json"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    for export in exportList.keys():
 | 
				
			||||||
 | 
					        helpers.folderExist(path)
 | 
				
			||||||
 | 
					        with open(path + f"{export}.json", "wb") as out_file:
 | 
				
			||||||
 | 
					            content = requests.get(exportList[export], stream=True).content
 | 
				
			||||||
 | 
					            out_file.write(content)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					def getWarframeExportsPlus(self, path):
 | 
				
			||||||
 | 
					    exportList = {
 | 
				
			||||||
 | 
					        "weapons":"https://raw.githubusercontent.com/calamity-inc/warframe-public-export-plus/refs/heads/senpai/ExportWeapons.json",
 | 
				
			||||||
 | 
					        "powersuits":"https://raw.githubusercontent.com/calamity-inc/warframe-public-export-plus/refs/heads/senpai/ExportWarframes.json"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    for export in exportList.keys():
 | 
				
			||||||
 | 
					        helpers.folderExist((path+"/plus/").replace("//", "/"))
 | 
				
			||||||
 | 
					        with open((path + f"/plus/{export}.json").replace('//', '/'), "wb") as out_file:
 | 
				
			||||||
 | 
					            content = requests.get(exportList[export], stream=True).content
 | 
				
			||||||
 | 
					            out_file.write(content)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def getIconDownload(self, path, savePath):
 | 
				
			||||||
 | 
					    if not exists("./cache/items/icons" + savePath.rsplit('/', 1)[0]):
 | 
				
			||||||
 | 
					        Path("./cache/items/icons" + savePath.rsplit('/', 1)[0]).mkdir(parents=True, exist_ok=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with open("./cache/items/icons" + savePath, "wb+") as out_file:
 | 
				
			||||||
 | 
					        print(f"https://browse.wf{savePath}")
 | 
				
			||||||
 | 
					        out_file.write(requests.get(f"https://browse.wf{savePath}").content)       
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        print(f"Saved {path} Icon")
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@ -1,12 +1,24 @@
 | 
				
			|||||||
from CTkMessagebox import CTkMessagebox
 | 
					from CTkMessagebox import CTkMessagebox
 | 
				
			||||||
import threading
 | 
					import threading
 | 
				
			||||||
from .savetools import loadFile
 | 
					from .savetools import loadFile
 | 
				
			||||||
 | 
					from pathlib import Path
 | 
				
			||||||
 | 
					from .comunic import getIconDownload
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import signal
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
 | 
					from PIL import Image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try: 
 | 
					try: 
 | 
				
			||||||
    from os import startfile 
 | 
					    from os import startfile 
 | 
				
			||||||
except:
 | 
					except:
 | 
				
			||||||
    from os import system
 | 
					    from os import system
 | 
				
			||||||
from sys import platform
 | 
					from sys import platform
 | 
				
			||||||
 | 
					def killPopen(popen): #jesus
 | 
				
			||||||
 | 
					    os.kill(os.getpgid(popen.pid), signal.SIGTERM)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def folderExist(path):
 | 
				
			||||||
 | 
					    Path(path).mkdir(parents=True, exist_ok=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def check():
 | 
					def check():
 | 
				
			||||||
    print("Save Good")
 | 
					    print("Save Good")
 | 
				
			||||||
@ -17,7 +29,6 @@ def removeChildren(frame):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def bgThread(func, args):
 | 
					def bgThread(func, args):
 | 
				
			||||||
    th = threading.Thread(target=func, args=args)
 | 
					    th = threading.Thread(target=func, args=args)
 | 
				
			||||||
    th.daemon = True
 | 
					 | 
				
			||||||
    th.start()
 | 
					    th.start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def openLocation(self, location):
 | 
					def openLocation(self, location):
 | 
				
			||||||
@ -26,8 +37,7 @@ def openLocation(self, location):
 | 
				
			|||||||
    elif platform == "windows":
 | 
					    elif platform == "windows":
 | 
				
			||||||
        startfile(foldername)
 | 
					        startfile(foldername)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def messageBox(self, title, message, type): #type will be implemented at a later point when required. for now, just fill it in irregardless. 
 | 
				
			||||||
def messageBox(self, title, message, type): #type will be implemented at a later point when required 
 | 
					 | 
				
			||||||
    CTkMessagebox(title=title, message=message)
 | 
					    CTkMessagebox(title=title, message=message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def getLogMax(self, save):
 | 
					def getLogMax(self, save):
 | 
				
			||||||
@ -42,17 +52,89 @@ def isNumber(data):
 | 
				
			|||||||
        return False
 | 
					        return False
 | 
				
			||||||
    return True
 | 
					    return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def formatExportWeapons(self, file1):
 | 
				
			||||||
 | 
					    log = open("log.txt", "a")
 | 
				
			||||||
 | 
					    testfile = open("test1.json", 'w')
 | 
				
			||||||
 | 
					    if open(file1):
 | 
				
			||||||
 | 
					            print("opened")
 | 
				
			||||||
 | 
					    with open(file1, 'r') as file:
 | 
				
			||||||
 | 
					            data=json.load(file)["ExportWeapons"]
 | 
				
			||||||
 | 
					    redund = []
 | 
				
			||||||
 | 
					    for diction in range(len(data)):
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            for key in list(data[diction].keys()):
 | 
				
			||||||
 | 
					                    if key not in ["name", "slot", "uniqueName"]:
 | 
				
			||||||
 | 
					                            del data[diction][key]
 | 
				
			||||||
 | 
					                            print("deleted " + str(data[diction]["name"] + ' ' + key))
 | 
				
			||||||
 | 
					            if 'slot' not in data[diction].keys():
 | 
				
			||||||
 | 
					                    redund.append(diction)
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					    i=0
 | 
				
			||||||
 | 
					    for diction in redund:
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            i+=1
 | 
				
			||||||
 | 
					            print("Removed Unneeded Modular " + str(data[diction-i]["name"]), file=log)
 | 
				
			||||||
 | 
					            del data[diction-i]
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def sortFunc(e):
 | 
				
			||||||
 | 
					            return e["name"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    data.sort(key=sortFunc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    json.dump(data, testfile, indent=2)
 | 
				
			||||||
 | 
					    return data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def formatExportPowersuits(self, file1):
 | 
				
			||||||
 | 
					    log = open("log.txt", "a")
 | 
				
			||||||
 | 
					    testfile = open("test2.json", 'w')
 | 
				
			||||||
 | 
					    if open(file1):
 | 
				
			||||||
 | 
					            print("opened")
 | 
				
			||||||
 | 
					    with open(file1, 'r') as file:
 | 
				
			||||||
 | 
					            data=json.load(file)["ExportWarframes"]
 | 
				
			||||||
 | 
					    redund = []
 | 
				
			||||||
 | 
					    for diction in range(len(data)):
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            for key in list(data[diction].keys()):
 | 
				
			||||||
 | 
					                    if key not in ["name", "productCategory", "uniqueName"]:
 | 
				
			||||||
 | 
					                            del data[diction][key]
 | 
				
			||||||
 | 
					                            print("deleted " + str(data[diction]["name"] + ' ' + key))
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def sortFunc(e):
 | 
				
			||||||
 | 
					            return e["name"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    data.sort(key=sortFunc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    json.dump(data, testfile, indent=2)
 | 
				
			||||||
 | 
					    return data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def formatExportPlus(self, file1):
 | 
				
			||||||
 | 
					    with open(file1, 'r') as file:
 | 
				
			||||||
 | 
					        data=json.load(file)
 | 
				
			||||||
 | 
					    write = False
 | 
				
			||||||
 | 
					    for item in data.keys():
 | 
				
			||||||
 | 
					        print(data[item])
 | 
				
			||||||
 | 
					        if type(data[item]) is dict:   
 | 
				
			||||||
 | 
					            icon = data[item]["icon"]
 | 
				
			||||||
 | 
					            print(data[item])
 | 
				
			||||||
 | 
					            data[item] = icon
 | 
				
			||||||
 | 
					            write=True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if write == True: 
 | 
				
			||||||
 | 
					        with open(file1, 'w') as file:
 | 
				
			||||||
 | 
					            json.dump(data, file, indent=2)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def getIcon(self, path, savePath):
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        image = Image.open("./cache/items/icons" + savePath)
 | 
				
			||||||
 | 
					        return image
 | 
				
			||||||
 | 
					    except:
 | 
				
			||||||
 | 
					        getIconDownload(self, path, savePath)
 | 
				
			||||||
 | 
					        return Image.open("./cache/items/icons" + savePath)
 | 
				
			||||||
#Old Helper options, left here for future reference. Shitty code, but it works, and it may be useful in the future
 | 
					#Old Helper options, left here for future reference. Shitty code, but it works, and it may be useful in the future
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# def getlogmax():
 | 
					# def getlogmax():
 | 
				
			||||||
#     file = 'sngconfig.json'
 | 
					#     file = 'sngconfig.json'
 | 
				
			||||||
#     if Path(file).is_file():
 | 
					#     if Path(file).is_file():
 | 
				
			||||||
@ -66,6 +148,7 @@ def isNumber(data):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# def check4sn(configfile):
 | 
					# def check4sn(configfile):
 | 
				
			||||||
#     file = helpers.getsnpath(configfile) + "package.json"
 | 
					#     file = helpers.getsnpath(configfile) + "package.json"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#     if Path(file).is_file():
 | 
					#     if Path(file).is_file():
 | 
				
			||||||
#         with open(file) as f:
 | 
					#         with open(file) as f:
 | 
				
			||||||
#             d = json.load(f)
 | 
					#             d = json.load(f)
 | 
				
			||||||
 | 
				
			|||||||
@ -10,13 +10,46 @@ def loadFile(self, file1):
 | 
				
			|||||||
        data = json.load(file)
 | 
					        data = json.load(file)
 | 
				
			||||||
    return data
 | 
					    return data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Data should be recived in [[data, position], [data, position]] format
 | 
					def saveFile(self, newData, file):
 | 
				
			||||||
def saveFile(self, fileP, data):
 | 
					    with open(file, "r") as file1:
 | 
				
			||||||
    with open(fileP, 'r') as file:
 | 
					        data = json.load(file1)
 | 
				
			||||||
        data = json.load(file)
 | 
					    def anotherRecusion(data, newData):
 | 
				
			||||||
    for subData in data:
 | 
					        if type(data) is dict:
 | 
				
			||||||
        data[subData[1]] = subData[0]
 | 
					            for key in newData:
 | 
				
			||||||
    with open(fileP, 'w'):
 | 
					                match data[key]:
 | 
				
			||||||
        json.dump(file, indent=2)
 | 
					                    case str():
 | 
				
			||||||
 | 
					                        data[key]=newData[key].get()
 | 
				
			||||||
 | 
					                    case bool():
 | 
				
			||||||
 | 
					                        data[key]=newData[key].get()
 | 
				
			||||||
 | 
					                    case int():
 | 
				
			||||||
 | 
					                        data[key]=int(newData[key].get())
 | 
				
			||||||
 | 
					                    case dict():
 | 
				
			||||||
 | 
					                        data[key] = anotherRecusion(data[key], newData[key])
 | 
				
			||||||
 | 
					                    case list():
 | 
				
			||||||
 | 
					                        data[key]= anotherRecusion(data[key], newData[key])
 | 
				
			||||||
 | 
					        elif type(data) is list:
 | 
				
			||||||
 | 
					            for key in range(len(newData)):
 | 
				
			||||||
 | 
					                match data[key]:
 | 
				
			||||||
 | 
					                    case str():
 | 
				
			||||||
 | 
					                        data[key]=newData[key].get()
 | 
				
			||||||
 | 
					                    case bool():
 | 
				
			||||||
 | 
					                        data[key]=newData[key].get()
 | 
				
			||||||
 | 
					                    case int():
 | 
				
			||||||
 | 
					                        data[key]=int(newData[key].get())
 | 
				
			||||||
 | 
					                    case dict():
 | 
				
			||||||
 | 
					                        data[key] = anotherRecusion(data[key], newData[key])
 | 
				
			||||||
 | 
					                    case list():
 | 
				
			||||||
 | 
					                        data[key]= anotherRecusion(data[key], newData[key])
 | 
				
			||||||
 | 
					        return data
 | 
				
			||||||
 | 
					    data = anotherRecusion(data, newData)
 | 
				
			||||||
 | 
					    print(data)
 | 
				
			||||||
 | 
					    with open(file, "w") as file1:
 | 
				
			||||||
 | 
					        json.dump(data, file1, indent=2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,38 @@ def getThemes(self):
 | 
				
			|||||||
            "border_color" : "#14213D",
 | 
					            "border_color" : "#14213D",
 | 
				
			||||||
            "highlight_color" : '#FCA311',
 | 
					            "highlight_color" : '#FCA311',
 | 
				
			||||||
            "text_color" : ""
 | 
					            "text_color" : ""
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "kiln" : {
 | 
				
			||||||
 | 
					            "fg_color" : "#5A2901",
 | 
				
			||||||
 | 
					            "bg_color" : "#AE6F3B",
 | 
				
			||||||
 | 
					            "bg_deep" : "#885599",
 | 
				
			||||||
 | 
					            "border_color" : "#AE6F3B",
 | 
				
			||||||
 | 
					            "highlight_color" : '#246868',
 | 
				
			||||||
 | 
					            "text_color" : ""
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "mint_nebula" : {
 | 
				
			||||||
 | 
					            "fg_color" : "#15001F",
 | 
				
			||||||
 | 
					            "bg_color" : "#2F0047",
 | 
				
			||||||
 | 
					            "bg_deep" : "#440066",
 | 
				
			||||||
 | 
					            "border_color" : "#6B3E00",
 | 
				
			||||||
 | 
					            "highlight_color" : '#00683E',
 | 
				
			||||||
 | 
					            "text_color" : ""
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "antimatter" : {
 | 
				
			||||||
 | 
					            "fg_color" : "#13002C",
 | 
				
			||||||
 | 
					            "bg_color" : "#2F036A",
 | 
				
			||||||
 | 
					            "bg_deep" : "#22014E",
 | 
				
			||||||
 | 
					            "border_color" : "#2F026A",
 | 
				
			||||||
 | 
					            "highlight_color" : '#9C8E00',
 | 
				
			||||||
 | 
					            "text_color" : ""
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "fenix" : {
 | 
				
			||||||
 | 
					            "fg_color" : "#451D08",
 | 
				
			||||||
 | 
					            "bg_color" : "#73300D",
 | 
				
			||||||
 | 
					            "bg_deep" : "#73300D",
 | 
				
			||||||
 | 
					            "border_color" : "##A14312",
 | 
				
			||||||
 | 
					            "highlight_color" : '#083045',
 | 
				
			||||||
 | 
					            "text_color" : ""
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return themes
 | 
					    return themes
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user