2023-02-18 20:15:31 +00:00
|
|
|
import json
|
|
|
|
import os
|
2023-02-15 23:19:12 +00:00
|
|
|
import tkinter as tk
|
2023-02-18 20:15:31 +00:00
|
|
|
from tkinter import ttk
|
|
|
|
|
|
|
|
path = "data/terrain.json"
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-15 23:19:12 +00:00
|
|
|
class TerrainsPage(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.activeTerrain = None
|
|
|
|
|
|
|
|
self.terrainKey = tk.StringVar()
|
|
|
|
self.terrainName = tk.StringVar()
|
|
|
|
|
|
|
|
self.terrainSelector = ttk.Combobox(self, textvariable=self.terrainKey)
|
|
|
|
self.loadTerrains()
|
|
|
|
|
|
|
|
self.terrainSelector.grid(column=1, row=1, sticky="ew")
|
|
|
|
self.terrainSelector.bind("<<ComboboxSelected>>", self.setActiveTerrain)
|
|
|
|
|
|
|
|
if len(self.terrains) == 0:
|
|
|
|
self.terrainSelector.state(["readonly"])
|
2023-02-14 19:54:53 +00:00
|
|
|
|
2023-02-18 20:15:31 +00:00
|
|
|
tk.Button(self, text="New Terrain", command=self.createTerrain).grid(column=4, row=1, sticky="ew")
|
|
|
|
|
|
|
|
tk.Label(self, text="Name:").grid(column=1, row=3)
|
|
|
|
tk.Entry(self, textvariable=self.terrainName).grid(column=2, row=3, sticky="ew")
|
|
|
|
|
|
|
|
tk.Button(self, text="Save", command=self.saveTerrain).grid(column=2, row=6)
|
|
|
|
|
|
|
|
def createTerrain(self):
|
|
|
|
self.activeTerrain = None
|
|
|
|
self.terrainSelector.selection_clear()
|
|
|
|
self.terrainName.set("")
|
|
|
|
|
|
|
|
def loadTerrains(self):
|
|
|
|
self.terrains = {}
|
|
|
|
self.terrainSelector["values"] = []
|
|
|
|
if os.path.exists(path):
|
|
|
|
file = open(path, "r")
|
|
|
|
self.terrains = json.loads(file.read())
|
|
|
|
file.close()
|
|
|
|
self.terrainSelector["values"] = list(self.terrains.keys())
|
|
|
|
|
|
|
|
def saveTerrain(self):
|
|
|
|
key = self.terrainKey.get()
|
|
|
|
name = self.terrainName.get()
|
|
|
|
|
|
|
|
if name != "":
|
|
|
|
self.loadTerrains()
|
|
|
|
terrain = {
|
|
|
|
"name": name
|
|
|
|
}
|
|
|
|
|
|
|
|
if key != "" and key != name:
|
|
|
|
del self.terrains[key]
|
|
|
|
self.terrainKey.set(name)
|
|
|
|
|
|
|
|
self.terrains[name] = terrain
|
|
|
|
|
|
|
|
file = open(path, "w")
|
|
|
|
file.write(json.dumps(self.terrains))
|
|
|
|
file.close()
|
|
|
|
self.loadTerrains()
|
|
|
|
|
|
|
|
def setActiveTerrain(self, event):
|
|
|
|
if self.terrainKey.get() != "":
|
|
|
|
self.activeTerrain = self.terrains[self.terrainKey.get()]
|
|
|
|
self.terrainName.set(self.activeTerrain["name"])
|
|
|
|
|
|
|
|
else:
|
|
|
|
self.terrainSelector.selection_clear()
|