mirror of
https://github.com/TheFunny/ArisuAutoSweeper
synced 2025-12-16 13:25:13 +00:00
103 lines
4.9 KiB
Python
103 lines
4.9 KiB
Python
import customtkinter
|
|
import json
|
|
from MCE.custom_widgets.ctk_scrollable_dropdown import CTkScrollableDropdown
|
|
import os
|
|
from tkinter import END
|
|
|
|
class InputHelper(customtkinter.CTk):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.create_tabview()
|
|
self.create_invite_student_widgets()
|
|
self.create_lessons_widgets()
|
|
|
|
|
|
def create_tabview(self):
|
|
self.tabview = customtkinter.CTkTabview(master=self)
|
|
self.tabview.grid(row=0, column=0)
|
|
|
|
self.cafe_tab = self.tabview.add("Cafe") # add tab at the end
|
|
self.lessons_tab = self.tabview.add("Lessons") # add tab at the end
|
|
self.tabview.set("Cafe") # set currently visible
|
|
|
|
def create_invite_student_widgets(self):
|
|
self.invitation_label = customtkinter.CTkLabel(master=self.cafe_tab, text="Copy and paste this in AAS Invitation Settings:")
|
|
self.invitation_label.grid(row=0, column=0, padx=60)
|
|
|
|
self.invitation_entry = customtkinter.CTkEntry(master=self.cafe_tab, width=500)
|
|
self.invitation_entry.grid(row=1, column=0)
|
|
|
|
self.invite_copy_button = customtkinter.CTkButton(master=self.cafe_tab, text="Copy", width=40, command=lambda : self.copy_entry(self.invitation_entry, self.invite_copy_button))
|
|
self.invite_copy_button.grid(row=1, column=3, padx=5)
|
|
|
|
self.invite_clear_button = customtkinter.CTkButton(master=self.cafe_tab, text="Clear", width=40, fg_color="crimson", command=lambda : self.invitation_entry.delete(0, END))
|
|
self.invite_clear_button.grid(row=1, column=4, padx=5)
|
|
|
|
self.invite_frame = customtkinter.CTkFrame(master=self.cafe_tab, fg_color="transparent")
|
|
self.invite_frame.grid(row=2, column=0, padx=20, pady=20)
|
|
|
|
self.server_dropdown = customtkinter.CTkOptionMenu(master=self.invite_frame, values=self.find_json_files("MCE/student_list"), command=self.switch_server, width=40)
|
|
self.server_dropdown.grid(row=0, column=0)
|
|
|
|
self.student_entry = customtkinter.CTkComboBox(master=self.invite_frame, width=300)
|
|
self.student_entry.grid(row=0, column=1, padx=(50,0))
|
|
|
|
self.student_dropdown = CTkScrollableDropdown(self.student_entry, width=300, height=550, autocomplete=True, command=lambda choice: self.insert(choice, self.invitation_entry), values=[""])
|
|
self.server_dropdown.set("EN")
|
|
self.switch_server("EN")
|
|
|
|
def create_lessons_widgets(self):
|
|
self.lessons_label = customtkinter.CTkLabel(master=self.lessons_tab, text="Copy and paste this in AAS Lessons Settings:")
|
|
self.lessons_label.grid(row=0, column=0, padx=60)
|
|
|
|
self.lessons_entry = customtkinter.CTkEntry(master=self.lessons_tab, width=500)
|
|
self.lessons_entry.grid(row=1, column=0)
|
|
|
|
self.lessons_copy_button = customtkinter.CTkButton(master=self.lessons_tab, text="Copy", width=40, command=lambda : self.copy_entry(self.lessons_entry, self.lessons_copy_button))
|
|
self.lessons_copy_button.grid(row=1, column=1, padx=5)
|
|
|
|
self.lessons_clear_button = customtkinter.CTkButton(master=self.lessons_tab, text="Clear", width=40, fg_color="crimson", command=lambda : self.lessons_entry.delete(0, END))
|
|
self.lessons_clear_button.grid(row=1, column=2, padx=5)
|
|
|
|
self.lessons_buttons_frame = customtkinter.CTkFrame(master=self.lessons_tab, fg_color="transparent")
|
|
self.lessons_buttons_frame.grid(row=2, column=0, padx=20, pady=20)
|
|
|
|
for i in range(9):
|
|
self.lesson_button = customtkinter.CTkButton(master=self.lessons_buttons_frame, text=str(i+1), command=lambda choice=str(i+1): self.insert(choice, self.lessons_entry), width=40)
|
|
self.lesson_button.grid(row=0, column=i, padx=5)
|
|
|
|
|
|
def find_json_files(self,folder_path):
|
|
json_files = []
|
|
for root, dirs, files in os.walk(folder_path):
|
|
for file in files:
|
|
if file.endswith(".json"):
|
|
json_files.append(os.path.splitext(file)[0])
|
|
return json_files
|
|
|
|
def switch_server(self, server):
|
|
with open(f"MCE/student_list/{server}.json", "r") as f:
|
|
student_list = json.load(f)
|
|
self.student_dropdown.configure(values=student_list)
|
|
|
|
def insert(self, value, entry):
|
|
entry.insert(index=END, string=value + " > ")
|
|
|
|
def copy_entry(self, entry, button):
|
|
text_to_copy = entry.get()
|
|
|
|
# Check if there is text to copy
|
|
if text_to_copy:
|
|
# Clear the clipboard and set the new text
|
|
self.clipboard_clear()
|
|
self.clipboard_append(text_to_copy)
|
|
self.update() # This is necessary on some systems to update the clipboard
|
|
button_color = button.cget("fg_color")
|
|
button.configure(fg_color="green")
|
|
self.after(2000, lambda : button.configure(fg_color=['#3B8ED0', '#1F6AA5']))
|
|
|
|
if __name__ == "__main__":
|
|
app = InputHelper()
|
|
app.title("Input Helper")
|
|
app.mainloop()
|