g
This commit is contained in:
jimbohimself 2025-02-21 16:23:18 -08:00
parent ee9e2c1de3
commit 37f33f49ca

190
customtk.py Normal file
View File

@ -0,0 +1,190 @@
from os.path import isfile, join, exists
import customtkinter
from CTkMessagebox import CTkMessagebox
from subfiles import helpers, install, savetools, themes, comunic
import json
from subprocess import Popen, PIPE
import threading
from pathlib import Path
from sys import platform
from hashlib import sha256
from os import listdir
from os.path import isfile, join, exists
import shutil
from websockets.sync.client import connect
customtkinter.set_appearance_mode("System")
customtkinter.set_window_scaling(1)
customtkinter.set_widget_scaling(1)
def placeholder():
print("placeholder called")
pass
class menuTools:
def sideButtons(self, buttonList, frame):
for button in buttonList.keys():
sideButton = customtkinter.CTkButton(frame, height=28, hover_color=self.theme["highlight_color"],
border_color=self.theme["highlight_color"],
border_width=(self.x * .001),
fg_color="transparent",
text=button,
command=buttonList[button])
sideButton.pack(pady=(self.y * .01), side="top", anchor="nw")
def labelDown(self, labelList, frame, column):
newFrame=customtkinter.CTkFrame(frame, fg_color="transparent")
newFrame.grid(row=0, column=3, sticky="nswe")
i=1
l = []
for labelText in labelList:
label = customtkinter.CTkLabel(newFrame, textvariable=labelText, height=28, text_color="white")
l.append(label)
for g in l:
g.pack(anchor='nw')
i+=1
class menus():
def serverMenu(self):
helpers.removeChildren(self.mainFrame)
topFrame = customtkinter.CTkFrame(self.mainFrame, fg_color=self.theme["bg_deep"], corner_radius=10, height=(self.y * .80), width=(self.x * (.70)),
)
topFrame.pack(pady=(self.y * .10))
topFrame.grid_propagate(0)
sideFrame = customtkinter.CTkFrame(topFrame, width=(self.x * .7 * .25), height=self.y*.8, fg_color=self.theme['bg_deep'])
sideFrame.grid(row=0, column=0, sticky="ns")
borderFrame=customtkinter.CTkFrame(topFrame, width=(self.x * .7 * .01), height=(self.y*.8), fg_color=self.theme['bg_color'])
borderFrame.grid(row=0, column=1, sticky="ns")
sideFrame.grid_propagate(1)
buttonList = {
"Start Server" : lambda: placeholder(),
"Open Server Location": lambda: helpers.openLocation(self, comunic.getSnPath('sngconfig.json'))
}
menuTools.sideButtons(self, buttonList=buttonList, frame=sideFrame)
self.logArea = customtkinter.CTkTextbox(topFrame, width=(self.x * .7 * .74))
self.logArea.grid(row=0, column=2, sticky="ns")
def updateMenu(self):
helpers.removeChildren(self.mainFrame)
topFrame = customtkinter.CTkFrame(self.mainFrame, fg_color=self.theme["bg_deep"], corner_radius=10, height=(self.y * .80), width=(self.x * (.70)),
)
topFrame.pack(pady=(self.y * .10))
topFrame.grid_propagate(0)
sideFrame = customtkinter.CTkFrame(topFrame, width=(self.x * .7 * .25), height=self.y*.8, fg_color=self.theme['bg_deep'])
sideFrame.grid(row=0, column=0, sticky="ns")
borderFrame=customtkinter.CTkFrame(topFrame, width=(self.x * .7 * .01), height=(self.y*.8), fg_color=self.theme['bg_color'])
borderFrame.grid(row=0, column=1, sticky="ns")
sideFrame.grid_propagate(1)
self.versions = [
customtkinter.StringVar(),
customtkinter.StringVar()
]
buttonList = {
"Open Client Location" : lambda: placeholder(),
"Open Server Location": lambda: helpers.openLocation(self, comunic.getSnPath(self.configFile)),
"Update Client" : lambda: comunic.downloadLatestDll(self, comunic.getSnPath(self.configFile))
}
menuTools.sideButtons(self, buttonList=buttonList, frame=sideFrame)
self.versions[0].set("Checking Server Version")
self.versions[1].set("Checking Client Version")
helpers.bgThread(comunic.getLatestVersions, [self, 'tempFile.json', self.versions])
menuTools.labelDown(self, labelList=self.versions, frame=topFrame, column=3)
class main():
def __init__(self, configFile):
self.configFile = configFile
self.debug = False
self.root = customtkinter.CTk()
self.x=750
self.y=500
self.theme = themes.getThemes(self)["black_orange"]
print()
for lib in [helpers, install, savetools]:
lib.check()
self.rightFrame = customtkinter.CTkScrollableFrame(self.root,
orientation="vertical",
width=(self.x * .20),
height=(self.y * 1),
fg_color=self.theme["fg_color"],
bg_color=self.theme["bg_color"],
corner_radius=0
)
buttonList = {
"Server" : lambda: menus.serverMenu(self),
"Inventory Management": lambda: placeholder(),
"Server Settings": lambda: placeholder(),
"Client" : lambda: placeholder(),
"Scripts" : lambda: placeholder(),
"Script Store": lambda: placeholder(),
"Inline Scripting" : lambda: placeholder(),
"Metadata" : lambda: placeholder(),
"Arsenal Management": lambda: placeholder(),
"Weapon Upgrades" : lambda: placeholder(),
"Client Settings": lambda: placeholder(),
"Updates": lambda: menus.updateMenu(self),
"GUI Settings" : lambda: placeholder()
}
menuTools.sideButtons(self, buttonList, self.rightFrame)
self.rightFrame.grid(row=0, column=0)
self.mainFrame = customtkinter.CTkScrollableFrame(self.root,
width=(self.x * (1-.20)),
height=(self.y * 1),
fg_color=self.theme["bg_color"],
bg_color=self.theme["bg_color"],
corner_radius=0)
self.mainFrame.grid(row=0, column=1)
self.root.title("SpaceNinGui CustomTK 1.0.0")
self.root.geometry(f"{str(self.x)}x{str(self.y)}")
self.root.resizable(width=False, height=False)
self.root.mainloop()
if __name__ == "__main__":
if isfile('sngconfig.json'):
main('sngconfig.json')
else:
pass