2023-02-14 19:54:53 +00:00
|
|
|
import json
|
|
|
|
import os
|
2023-02-15 23:19:12 +00:00
|
|
|
import tkinter as tk
|
2023-02-14 19:54:53 +00:00
|
|
|
from tkinter import ttk
|
|
|
|
|
2023-02-15 23:19:12 +00:00
|
|
|
path = "data/team.json"
|
|
|
|
|
|
|
|
class TeamsPage(tk.Frame):
|
2023-02-14 19:54:53 +00:00
|
|
|
def __init__(self, parent, controller):
|
2023-02-15 23:19:12 +00:00
|
|
|
tk.Frame.__init__(self, parent)
|
2023-02-18 20:15:31 +00:00
|
|
|
self.activeTeam = None
|
|
|
|
|
|
|
|
self.teamKey = tk.StringVar()
|
|
|
|
self.teamName = tk.StringVar()
|
|
|
|
self.teamCountry = tk.StringVar()
|
|
|
|
self.teamMembers = []
|
|
|
|
|
|
|
|
self.teamSelector = ttk.Combobox(self, textvariable=self.teamKey)
|
|
|
|
self.loadTeams()
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
self.teamSelector.grid(column=1, row=1, sticky="ew")
|
|
|
|
self.teamSelector.bind("<<ComboboxSelected>>", self.setActiveTeam)
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
if len(self.teams) == 0:
|
|
|
|
self.teamSelector.state(["readonly"])
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
tk.Button(self, text="New Team", command=self.createTeam).grid(column=4, row=1, sticky="ew")
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
tk.Label(self, text="Name:").grid(column=1, row=3)
|
|
|
|
tk.Entry(self, textvariable=self.teamName).grid(column=2, row=3, sticky="ew")
|
|
|
|
tk.Label(self, text="Country:").grid(column=1, row=4)
|
|
|
|
tk.Entry(self, textvariable=self.teamCountry).grid(column=2, row=4, sticky="ew")
|
|
|
|
tk.Label(self, text="Members:").grid(column=1, row=5)
|
|
|
|
self.teamMembersGrid = ttk.Frame(self)
|
|
|
|
self.teamMembersGrid.grid(column=2, row=5)
|
|
|
|
|
|
|
|
tk.Button(self, text="Save", command=self.saveTeam).grid(column=2, row=6)
|
|
|
|
|
|
|
|
def createTeam(self):
|
|
|
|
self.activeTeam = None
|
|
|
|
self.teamSelector.selection_clear()
|
|
|
|
|
|
|
|
self.teamName.set("")
|
|
|
|
self.teamCountry.set("")
|
|
|
|
self.teamMembers = []
|
|
|
|
self.renderTeamMembers()
|
|
|
|
|
|
|
|
def loadTeams(self):
|
|
|
|
self.teams = {}
|
|
|
|
self.teamSelector["values"] = []
|
|
|
|
if os.path.exists(path):
|
|
|
|
file = open(path, "r")
|
|
|
|
self.teams = json.loads(file.read())
|
|
|
|
file.close()
|
|
|
|
self.teamSelector["values"] = list(self.teams.keys())
|
|
|
|
|
|
|
|
def saveTeam(self):
|
|
|
|
key = self.teamKey.get()
|
|
|
|
name = self.teamName.get()
|
|
|
|
country = self.teamCountry.get()
|
|
|
|
members = self.teamMembers
|
|
|
|
|
|
|
|
if name != "" and country != "":
|
|
|
|
self.loadTeams()
|
|
|
|
team = {
|
|
|
|
"name": name,
|
|
|
|
"country": country,
|
|
|
|
"members": members
|
|
|
|
}
|
|
|
|
|
|
|
|
if key != "" and key != name:
|
|
|
|
del self.teams[key]
|
|
|
|
self.teamKey.set(name)
|
|
|
|
|
|
|
|
self.teams[name] = team
|
|
|
|
|
|
|
|
file = open(path, "w")
|
|
|
|
file.write(json.dumps(self.teams))
|
|
|
|
file.close()
|
|
|
|
self.loadTeams()
|
|
|
|
|
|
|
|
def setActiveTeam(self, event):
|
|
|
|
if self.teamKey.get() != "":
|
|
|
|
self.activeTeam = self.teams[self.teamKey.get()]
|
|
|
|
self.teamName.set(self.activeTeam["name"])
|
|
|
|
self.teamCountry.set(self.activeTeam["country"])
|
|
|
|
self.teamMembers = self.activeTeam["members"]
|
|
|
|
|
|
|
|
self.renderTeamMembers()
|
|
|
|
else:
|
|
|
|
self.teamSelector.selection_clear()
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
def renderTeamMembers(self):
|
|
|
|
self.teamMembersGrid.destroy()
|
|
|
|
self.teamMembersGrid = ttk.Frame(self)
|
|
|
|
self.teamMembersGrid.grid(column=2, row=5)
|
|
|
|
|
|
|
|
row = 1
|
|
|
|
for m in self.teamMembers:
|
|
|
|
tk.Label(self.teamMembersGrid, text=m["name"]).grid(column=1, row=row)
|
|
|
|
tk.Label(self.teamMembersGrid, text=m["army"]).grid(column=2, row=row)
|
|
|
|
tk.Button(self.teamMembersGrid, text="X", command=lambda: self.removeTeamMember(m)).grid(column=3, row=row)
|
|
|
|
row += 1
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
self.newTeamMemberName = tk.StringVar()
|
|
|
|
self.newTeamMemberArmy = tk.StringVar()
|
|
|
|
|
|
|
|
tk.Entry(self.teamMembersGrid, textvariable=self.newTeamMemberName).grid(column=1, row=row)
|
|
|
|
tk.Entry(self.teamMembersGrid, textvariable=self.newTeamMemberArmy).grid(column=2, row=row)
|
|
|
|
tk.Button(self.teamMembersGrid, text="+", command=self.addTeamMember).grid(column=3, row=row)
|
|
|
|
|
|
|
|
def addTeamMember(self):
|
|
|
|
name = self.newTeamMemberName.get()
|
|
|
|
army = self.newTeamMemberArmy.get()
|
|
|
|
if name != "" and army != "":
|
|
|
|
self.teamMembers.append({
|
|
|
|
"name": name,
|
|
|
|
"army": army,
|
|
|
|
})
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
self.renderTeamMembers()
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
def removeTeamMember(self, member):
|
|
|
|
self.teamMembers.remove(member)
|
|
|
|
self.renderTeamMembers()
|