Replaced easygui with tkinter to address file prompts appearing beneath game window
Removed easygui from requirements.txt Save directory is no longer stored in save file for privacy
This commit is contained in:
parent
229b10cb91
commit
a27d5beb36
56
aiserver.py
56
aiserver.py
|
@ -5,8 +5,9 @@
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
|
|
||||||
from os import path, getcwd
|
from os import path, getcwd
|
||||||
|
from tkinter import filedialog, messagebox
|
||||||
|
import tkinter as tk
|
||||||
import json
|
import json
|
||||||
import easygui
|
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
|
@ -58,7 +59,7 @@ class vars:
|
||||||
editln = 0 # Which line was last selected in Edit Mode
|
editln = 0 # Which line was last selected in Edit Mode
|
||||||
url = "https://api.inferkit.com/v1/models/standard/generate" # InferKit API URL
|
url = "https://api.inferkit.com/v1/models/standard/generate" # InferKit API URL
|
||||||
apikey = "" # API key to use for InferKit API calls
|
apikey = "" # API key to use for InferKit API calls
|
||||||
savedir = getcwd()+"\stories\\newstory.json"
|
savedir = getcwd()+"\stories"
|
||||||
hascuda = False # Whether torch has detected CUDA on the system
|
hascuda = False # Whether torch has detected CUDA on the system
|
||||||
usegpu = False # Whether to launch pipeline with GPU support
|
usegpu = False # Whether to launch pipeline with GPU support
|
||||||
custmodpth = "" # Filesystem location of custom model to run
|
custmodpth = "" # Filesystem location of custom model to run
|
||||||
|
@ -90,8 +91,16 @@ def getModelSelection():
|
||||||
# If custom model was selected, get the filesystem location and store it
|
# If custom model was selected, get the filesystem location and store it
|
||||||
if(vars.model == "NeoCustom" or vars.model == "GPT2Custom"):
|
if(vars.model == "NeoCustom" or vars.model == "GPT2Custom"):
|
||||||
print("{0}Please choose the folder where pytorch_model.bin is located:{1}\n".format(colors.OKCYAN, colors.ENDC))
|
print("{0}Please choose the folder where pytorch_model.bin is located:{1}\n".format(colors.OKCYAN, colors.ENDC))
|
||||||
path = easygui.diropenbox (default=getcwd())
|
|
||||||
if(path != None):
|
root = tk.Tk()
|
||||||
|
root.attributes("-topmost", True)
|
||||||
|
path = filedialog.askdirectory(
|
||||||
|
initialdir=getcwd(),
|
||||||
|
title="Select Model Folder",
|
||||||
|
)
|
||||||
|
root.destroy()
|
||||||
|
|
||||||
|
if(path != None and path != ""):
|
||||||
# Save directory to vars
|
# Save directory to vars
|
||||||
vars.custmodpth = path
|
vars.custmodpth = path
|
||||||
else:
|
else:
|
||||||
|
@ -143,7 +152,9 @@ if(vars.model == "InferKit"):
|
||||||
vars.apikey = input("Key> ")
|
vars.apikey = input("Key> ")
|
||||||
# Write API key to file
|
# Write API key to file
|
||||||
file = open("client.settings", "w")
|
file = open("client.settings", "w")
|
||||||
|
try:
|
||||||
file.write("{\"apikey\": \""+vars.apikey+"\"}")
|
file.write("{\"apikey\": \""+vars.apikey+"\"}")
|
||||||
|
finally:
|
||||||
file.close()
|
file.close()
|
||||||
else:
|
else:
|
||||||
# Otherwise open it up and get the key
|
# Otherwise open it up and get the key
|
||||||
|
@ -686,9 +697,16 @@ def exitModes():
|
||||||
# Save the story to a file
|
# Save the story to a file
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
def saveRequest():
|
def saveRequest():
|
||||||
path = easygui.filesavebox(default=vars.savedir)
|
root = tk.Tk()
|
||||||
|
root.attributes("-topmost", True)
|
||||||
|
path = filedialog.asksaveasfile(
|
||||||
|
initialdir=vars.savedir,
|
||||||
|
title="Save Story As",
|
||||||
|
filetypes = [("Json", "*.json")]
|
||||||
|
)
|
||||||
|
root.destroy()
|
||||||
|
|
||||||
if(path != None):
|
if(path != None and path != ''):
|
||||||
# Leave Edit/Memory mode before continuing
|
# Leave Edit/Memory mode before continuing
|
||||||
exitModes()
|
exitModes()
|
||||||
# Save path for future saves
|
# Save path for future saves
|
||||||
|
@ -704,19 +722,28 @@ def saveRequest():
|
||||||
js["memory"] = vars.memory
|
js["memory"] = vars.memory
|
||||||
js["authorsnote"] = vars.authornote
|
js["authorsnote"] = vars.authornote
|
||||||
js["actions"] = vars.actions
|
js["actions"] = vars.actions
|
||||||
js["savedir"] = path
|
#js["savedir"] = path.name # For privacy, don't include savedir in save file
|
||||||
# Write it
|
# Write it
|
||||||
file = open(path, "w")
|
file = open(path.name, "w")
|
||||||
|
try:
|
||||||
file.write(json.dumps(js))
|
file.write(json.dumps(js))
|
||||||
|
finally:
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
# Load a stored story from a file
|
# Load a stored story from a file
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
def loadRequest():
|
def loadRequest():
|
||||||
path = easygui.fileopenbox(default=vars.savedir) # Returns None on cancel
|
root = tk.Tk()
|
||||||
|
root.attributes("-topmost", True)
|
||||||
|
path = filedialog.askopenfilename(
|
||||||
|
initialdir=vars.savedir,
|
||||||
|
title="Select Story File",
|
||||||
|
filetypes = [("Json", "*.json")]
|
||||||
|
)
|
||||||
|
root.destroy()
|
||||||
|
|
||||||
if(path != None):
|
if(path != None and path != ''):
|
||||||
# Leave Edit/Memory mode before continuing
|
# Leave Edit/Memory mode before continuing
|
||||||
exitModes()
|
exitModes()
|
||||||
# Read file contents into JSON object
|
# Read file contents into JSON object
|
||||||
|
@ -731,7 +758,7 @@ def loadRequest():
|
||||||
vars.prompt = js["prompt"]
|
vars.prompt = js["prompt"]
|
||||||
vars.memory = js["memory"]
|
vars.memory = js["memory"]
|
||||||
vars.actions = js["actions"]
|
vars.actions = js["actions"]
|
||||||
vars.savedir = js["savedir"]
|
#vars.savedir = js["savedir"] # For privacy, don't include savedir in save file
|
||||||
|
|
||||||
# Try not to break older save files
|
# Try not to break older save files
|
||||||
if("authorsnote" in js):
|
if("authorsnote" in js):
|
||||||
|
@ -747,7 +774,12 @@ def loadRequest():
|
||||||
#==================================================================#
|
#==================================================================#
|
||||||
def newGameRequest():
|
def newGameRequest():
|
||||||
# Ask for confirmation
|
# Ask for confirmation
|
||||||
if(easygui.ccbox("Really start new Story?","Please Confirm")):
|
root = tk.Tk()
|
||||||
|
root.attributes("-topmost", True)
|
||||||
|
confirm = messagebox.askquestion("Confirm New Game", "Really start new Story?")
|
||||||
|
root.destroy()
|
||||||
|
|
||||||
|
if(confirm == "yes"):
|
||||||
# Leave Edit/Memory mode before continuing
|
# Leave Edit/Memory mode before continuing
|
||||||
exitModes()
|
exitModes()
|
||||||
# Clear vars values
|
# Clear vars values
|
||||||
|
|
|
@ -3,5 +3,4 @@ tensorflow-gpu
|
||||||
Flask == 1.1.2
|
Flask == 1.1.2
|
||||||
Flask-SocketIO == 5.0.1
|
Flask-SocketIO == 5.0.1
|
||||||
requests == 2.25.1
|
requests == 2.25.1
|
||||||
easygui == 0.98.2
|
|
||||||
torch == 1.8.1
|
torch == 1.8.1
|
|
@ -1 +1 @@
|
||||||
{"gamestarted": true, "prompt": "Niko the kobold stalked carefully down the alley, his small scaly figure obscured by a dusky cloak that fluttered lightly in the cold winter breeze. Holding up his tail to keep it from dragging in the dirty snow that covered the cobblestone, he waited patiently for the butcher to turn his attention from his stall so that he could pilfer his next meal: a tender-looking", "memory": "Niko is a small red kobold.\nNiko has yellow, reptilian eyes and a long, scaly tail.\nNiko is hungry and looking to steal something to eat.", "authorsnote": "Things are about to get crazy for poor Niko.", "actions": [" chicken. He crouched just slightly as he neared the stall to ensure that no one was watching, not that anyone would be dumb enough to hassle a small kobold. What else was there for a lowly kobold to", " do in a city? All that Niko needed to know was", " where to find the chicken and then how to make off with it.\n\nA soft thud caused Niko to quickly lift his head. Standing behind the stall where the butcher had been cutting his chicken,"], "savedir": ""}
|
{"gamestarted": true, "prompt": "Niko the kobold stalked carefully down the alley, his small scaly figure obscured by a dusky cloak that fluttered lightly in the cold winter breeze. Holding up his tail to keep it from dragging in the dirty snow that covered the cobblestone, he waited patiently for the butcher to turn his attention from his stall so that he could pilfer his next meal: a tender-looking", "memory": "Niko is a small red kobold.\nNiko has yellow, reptilian eyes and a long, scaly tail.\nNiko is hungry and looking to steal something to eat.", "authorsnote": "Things are about to get crazy for poor Niko.", "actions": [" chicken. He crouched just slightly as he neared the stall to ensure that no one was watching, not that anyone would be dumb enough to hassle a small kobold. What else was there for a lowly kobold to", " do in a city? All that Niko needed to know was", " where to find the chicken and then how to make off with it.\n\nA soft thud caused Niko to quickly lift his head. Standing behind the stall where the butcher had been cutting his chicken,"]}
|
Loading…
Reference in New Issue