spaceningui/customtk.py

191 lines
6.3 KiB
Python
Raw Normal View History

2025-02-21 16:23:18 -08:00
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