Skip to content

Commit

Permalink
add setting json
Browse files Browse the repository at this point in the history
  • Loading branch information
wikm360 committed Oct 22, 2024
1 parent 5c6d322 commit 4a9e7ec
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 4 deletions.
77 changes: 73 additions & 4 deletions GUI-ver/GUI.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,22 @@
from collections import deque
import time
import checkver
import json

class XrayClientUI:
def __init__(self, page: ft.Page):
self.page = page
self.backend = XrayBackend()
self.page.title = "XC (Xray-Client)"
self.page.theme_mode = ft.ThemeMode.DARK
self.page.theme_mode = self.read_settinng("theme")
self.backend.log_callback = self.log
self.page.padding = 20
self.selected_config = None
self.real_delay_stat = None
self.ping_all_button = None
self.close_event = self.backend.close_event
self.cancel_real_delay_stat = "0"
self.ping_type = "Tcping"
self.ping_type = self.read_settinng("ping")
self.run_mode = "proxy" # Default mode
self.tabs = ft.Tabs(
selected_index=0,
Expand All @@ -29,6 +30,72 @@ def __init__(self, page: ft.Page):
)
self.log_buffer = deque(maxlen=1000) # Limit log entries
self.create_ui()

def read_settinng (type , e) :
default_settings = {"ping": "Tcping", "theme": "dark"}
if os.path.exists("./setting.json"):
with open("./setting.json", "r") as file:
f = file.read()
if f.strip():
try:
data = json.loads(f)
ping = data.get("ping", default_settings["ping"])
theme = data.get("theme", default_settings["theme"])
except json.JSONDecodeError:

print("Error decoding JSON, using default settings.")
ping = default_settings["ping"]
theme = default_settings["theme"]
else:

print("File is empty, using default settings.")
ping = default_settings["ping"]
theme = default_settings["theme"]
with open("./setting.json" , "w") as file :
data = json.dumps(default_settings , indent=4)
file.write(data)
else:
print("File not found, using default settings.")
ping = default_settings["ping"]
theme = default_settings["theme"]
with open("./setting.json" , "w") as file :
data = json.dumps(default_settings , indent=4)
file.write(data)
if type == "ping" :
return ping
else :
if theme == "dark" :
return ft.ThemeMode.DARK
else :
return ft.ThemeMode.LIGHT

def write_setting(type , value , e=None):
default_settings = {"ping": "Tcping", "theme": "dark"}
if os.path.exists("./setting.json"):
with open("./setting.json", "r") as file:
f = file.read()

if f.strip():
try:
data = json.loads(f)
except json.JSONDecodeError:
print("Error decoding JSON, using default settings.")
data = default_settings
else:
print("File is empty, using default settings.")
data = default_settings
else:
print("File not found, using default settings.")
data = default_settings

if type == "ping":
data["ping"] = value
elif type == "theme":
data["theme"] = value

with open("./setting.json", "w") as file:
json_data = json.dumps(data, indent=4)
file.write(json_data)

def check_for_updates(self):
def run_update_check():
Expand Down Expand Up @@ -441,22 +508,24 @@ def read_xray_logs(self):

def change_theme(self, e):
selected_theme = e.control.value
# change theme
if selected_theme == "Dark":
self.page.theme_mode = ft.ThemeMode.DARK
self.write_setting("theme" , "dark")
else:
self.page.theme_mode = ft.ThemeMode.LIGHT
self.write_setting("theme" , "light")
self.page.update()
self.refresh_profile_tab(profile="all")
print(f"Theme changed to: {selected_theme}")

def change_ping_type(self, e):
selected_ping_type = e.control.value
# select ping type
if selected_ping_type == "Real-delay":
self.ping_type = "Real-delay"
self.write_setting("ping" , "Real-delay")
else:
self.ping_type = "Tcping"
self.write_setting("ping" , "Tcping")
print(f"Ping type changed to: {self.ping_type}")

def log(self, message):
Expand Down
Empty file added setting.json
Empty file.

0 comments on commit 4a9e7ec

Please sign in to comment.