Skip to content

Commit 9625df9

Browse files
committed
added themes + bug fixes
1 parent b71237d commit 9625df9

File tree

5 files changed

+183
-10
lines changed

5 files changed

+183
-10
lines changed

client/app/roompicker.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ def __init__(self, loop: asyncio.AbstractEventLoop):
1515
self.loop = loop
1616
self.room_code = None
1717
loop.run_until_complete(server.connect())
18-
customtkinter.set_appearance_mode("System")
19-
customtkinter.set_default_color_theme("blue")
18+
customtkinter.set_appearance_mode("dark")
19+
20+
customtkinter.set_default_color_theme("blue" if read_config()["client"]["theme"] == "Blue" else "sch-theme.json")
2021

2122
super().__init__()
2223

client/app/settings.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ def __init__(self, master):
1111
self.config = read_config()
1212

1313
self.title("SCH - Settings")
14-
self.geometry("400x200")
14+
self.geometry("300x250")
1515
self.resizable(False, False)
1616
self.after(250, lambda: self.iconbitmap(self.config['client']['icon_path']))
1717

18-
self.settings_frame = customtkinter.CTkFrame(self, width=300, height=100, corner_radius=10, fg_color="transparent")
18+
self.settings_frame = customtkinter.CTkFrame(self, width=300, height=150, corner_radius=10, fg_color="transparent")
1919

2020
self.host_input = customtkinter.CTkEntry(self.settings_frame, width=200, height=40, corner_radius=10, placeholder_text="Host:")
2121
self.host_input.insert(0, self.config["server"]["host"])
@@ -26,9 +26,13 @@ def __init__(self, master):
2626
self.nickname_input.insert(0, self.config["client"]["nickname"])
2727
self.nickname_input.pack(pady=5)
2828

29+
self.theme_select = customtkinter.CTkOptionMenu(self.settings_frame, width=200, height=40, corner_radius=10, values=["SCH", "Blue"], command=self.update_theme)
30+
self.theme_select.set(self.config["client"]["theme"])
31+
self.theme_select.pack(pady=5)
32+
2933
self.options_frame = customtkinter.CTkFrame(self.settings_frame, width=300, height=100, corner_radius=10, fg_color="transparent")
3034

31-
self.cancel_btn = customtkinter.CTkButton(self.options_frame, text="Cancel", width=60, height=40, corner_radius=10, fg_color="transparent", border_width=2, command=self.destroy)
35+
self.cancel_btn = customtkinter.CTkButton(self.options_frame, text="Cancel", width=60, height=40, corner_radius=10, fg_color="transparent", text_color="white", hover_color="black", border_width=2, command=self.destroy)
3236
self.cancel_btn.grid(row=0, column=0, padx=5)
3337

3438
self.save_btn = customtkinter.CTkButton(self.options_frame, text="Save", width=60, height=40, corner_radius=10, command=self.save_callback)
@@ -51,12 +55,17 @@ def save_callback(self):
5155
"host": self.host_input.get()
5256
},
5357
client={
54-
"nickname": self.nickname_input.get()
55-
} if self.nickname_input.get() else {
56-
"nickname": ""
58+
"theme": self.theme_select.get(),
59+
"nickname": self.nickname_input.get() if self.nickname_input.get() else ""
5760
})
5861

5962
self.destroy()
63+
64+
def update_theme(self, choice):
65+
if choice == "SCH":
66+
customtkinter.set_default_color_theme("sch-theme.json")
67+
elif choice == "Blue":
68+
customtkinter.set_default_color_theme("blue")
6069

6170
def reload_config(self):
6271
self.config = read_config()

client/config/write.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ def write_default():
66
"host": "ws://sch.nawafdev.com/ws"
77
},
88
"client": {
9-
"icon_path": "assets/icon.ico"
9+
"icon_path": "icon.ico",
10+
"theme": "SCH"
1011
}
1112
}
1213

config.ini

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@ host = ws://sch.nawafdev.com/ws
33

44
[client]
55
icon_path = icon.ico
6-
nickname =
6+
theme = SCH
7+
nickname =
8+

sch-theme.json

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
{
2+
"CTk": {
3+
"fg_color": ["gray95", "gray10"]
4+
},
5+
"CTkToplevel": {
6+
"fg_color": ["gray95", "gray10"]
7+
},
8+
"CTkFrame": {
9+
"corner_radius": 6,
10+
"border_width": 0,
11+
"fg_color": ["gray90", "gray13"],
12+
"top_fg_color": ["gray85", "gray16"],
13+
"border_color": ["gray65", "gray28"]
14+
},
15+
"CTkButton": {
16+
"corner_radius": 6,
17+
"border_width": 0,
18+
"fg_color": ["#F2F3F5", "#E2E4E8"],
19+
"hover_color": ["#BDC0C4", "#A8AEB2"],
20+
"border_color": ["#3E454A", "#949A9F"],
21+
"text_color": ["#272A2A", "#181A1C"],
22+
"text_color_disabled": ["gray74", "gray60"]
23+
},
24+
"CTkLabel": {
25+
"corner_radius": 0,
26+
"fg_color": "transparent",
27+
"text_color": ["gray14", "gray84"]
28+
},
29+
"CTkEntry": {
30+
"corner_radius": 6,
31+
"border_width": 2,
32+
"fg_color": ["#F9F9FA", "#343638"],
33+
"border_color": ["#979DA2", "#565B5E"],
34+
"text_color": ["gray14", "gray84"],
35+
"placeholder_text_color": ["gray52", "gray62"]
36+
},
37+
"CTkOptionMenu": {
38+
"corner_radius": 6,
39+
"fg_color": ["#F2F3F5", "#E2E4E8"],
40+
"button_color": ["#C3C5CB", "#C5C7CE"],
41+
"button_hover_color": ["#C6CACF", "#A8AEB2"],
42+
"text_color": ["#272A2A", "#181A1C"],
43+
"text_color_disabled": ["gray74", "gray60"]
44+
},
45+
46+
47+
48+
49+
50+
"CTkCheckBox": {
51+
"corner_radius": 6,
52+
"border_width": 3,
53+
"fg_color": ["#3a7ebf", "#1f538d"],
54+
"border_color": ["#3E454A", "#949A9F"],
55+
"hover_color": ["#325882", "#14375e"],
56+
"checkmark_color": ["#DCE4EE", "gray90"],
57+
"text_color": ["gray14", "gray84"],
58+
"text_color_disabled": ["gray60", "gray45"]
59+
},
60+
"CTkSwitch": {
61+
"corner_radius": 1000,
62+
"border_width": 3,
63+
"button_length": 0,
64+
"fg_color": ["#939BA2", "#4A4D50"],
65+
"progress_color": ["#3a7ebf", "#1f538d"],
66+
"button_color": ["gray36", "#D5D9DE"],
67+
"button_hover_color": ["gray20", "gray100"],
68+
"text_color": ["gray14", "gray84"],
69+
"text_color_disabled": ["gray60", "gray45"]
70+
},
71+
"CTkRadioButton": {
72+
"corner_radius": 1000,
73+
"border_width_checked": 6,
74+
"border_width_unchecked": 3,
75+
"fg_color": ["#3a7ebf", "#1f538d"],
76+
"border_color": ["#3E454A", "#949A9F"],
77+
"hover_color": ["#325882", "#14375e"],
78+
"text_color": ["gray14", "gray84"],
79+
"text_color_disabled": ["gray60", "gray45"]
80+
},
81+
"CTkProgressBar": {
82+
"corner_radius": 1000,
83+
"border_width": 0,
84+
"fg_color": ["#939BA2", "#4A4D50"],
85+
"progress_color": ["#3a7ebf", "#1f538d"],
86+
"border_color": ["gray", "gray"]
87+
},
88+
"CTkSlider": {
89+
"corner_radius": 1000,
90+
"button_corner_radius": 1000,
91+
"border_width": 6,
92+
"button_length": 0,
93+
"fg_color": ["#939BA2", "#4A4D50"],
94+
"progress_color": ["gray40", "#AAB0B5"],
95+
"button_color": ["#3a7ebf", "#1f538d"],
96+
"button_hover_color": ["#325882", "#14375e"]
97+
},
98+
"CTkComboBox": {
99+
"corner_radius": 6,
100+
"border_width": 2,
101+
"fg_color": ["#F9F9FA", "#343638"],
102+
"border_color": ["#979DA2", "#565B5E"],
103+
"button_color": ["#979DA2", "#565B5E"],
104+
"button_hover_color": ["#6E7174", "#7A848D"],
105+
"text_color": ["gray14", "gray84"],
106+
"text_color_disabled": ["gray50", "gray45"]
107+
},
108+
"CTkScrollbar": {
109+
"corner_radius": 1000,
110+
"border_spacing": 4,
111+
"fg_color": "transparent",
112+
"button_color": ["gray55", "gray41"],
113+
"button_hover_color": ["gray40", "gray53"]
114+
},
115+
"CTkSegmentedButton": {
116+
"corner_radius": 6,
117+
"border_width": 2,
118+
"fg_color": ["#979DA2", "gray29"],
119+
"selected_color": ["#3a7ebf", "#1f538d"],
120+
"selected_hover_color": ["#325882", "#14375e"],
121+
"unselected_color": ["#979DA2", "gray29"],
122+
"unselected_hover_color": ["gray70", "gray41"],
123+
"text_color": ["#DCE4EE", "#DCE4EE"],
124+
"text_color_disabled": ["gray74", "gray60"]
125+
},
126+
"CTkTextbox": {
127+
"corner_radius": 6,
128+
"border_width": 0,
129+
"fg_color": ["gray100", "gray20"],
130+
"border_color": ["#979DA2", "#565B5E"],
131+
"text_color": ["gray14", "gray84"],
132+
"scrollbar_button_color": ["gray55", "gray41"],
133+
"scrollbar_button_hover_color": ["gray40", "gray53"]
134+
},
135+
"CTkScrollableFrame": {
136+
"label_fg_color": ["gray80", "gray21"]
137+
},
138+
"DropdownMenu": {
139+
"fg_color": ["gray90", "gray20"],
140+
"hover_color": ["gray75", "gray28"],
141+
"text_color": ["gray14", "gray84"]
142+
},
143+
"CTkFont": {
144+
"macOS": {
145+
"family": "SF Display",
146+
"size": 13,
147+
"weight": "normal"
148+
},
149+
"Windows": {
150+
"family": "Roboto",
151+
"size": 13,
152+
"weight": "normal"
153+
},
154+
"Linux": {
155+
"family": "Roboto",
156+
"size": 13,
157+
"weight": "normal"
158+
}
159+
}
160+
}

0 commit comments

Comments
 (0)