def newEditedState(self, _): compareNum = self.state.compareNum session = Session.Session(AllSplitNames.Splits()) session.setRun(self.state.game, self.state.category) self.state = State.State(session) self.state.setComparison(compareNum) self.updateWidgets("runChanged", state=self.state)
def setupGui(self): self.root = tk.Tk() self.root.protocol("WM_DELETE_WINDOW", self.root.destroy) self.root.title("Variance Calculator") for i in range(12): self.root.columnconfigure(i, weight=1) self.base = VarianceColumn.VarianceColumn(self.root, "In Order") self.sort = VarianceColumn.VarianceColumn(self.root, "Sorted") self.base.pack(side="left") self.sort.pack(side="right") self.splits = AllSplitNames.Splits() menubar = tk.Menu(self.root, tearoff=False) fileMenu = tk.Menu(self.root, tearoff=False) menubar.add_cascade(label="Run Reference", menu=fileMenu) lambdas = [[ lambda game=game, category=category: self.setRun(game, category) for category in self.splits.getCategories(game) ] for game in self.splits.getGames()] i = 0 for game in self.splits.getGames(): recentMenu = tk.Menu(self.root, tearoff=False) fileMenu.add_cascade(label=game, menu=recentMenu) j = 0 for category in self.splits.getCategories(game): recentMenu.add_command(label=category, command=lambdas[i][j]) j = j + 1 i = i + 1 self.root.configure(bg="black", menu=menubar)
def __init__(self, parent, allowInvalid=False): super().__init__(parent) for i in range(3): self.columnconfigure(i, weight=1) self.game = "" self.category = "" self.splits = AllSplitNames.Splits() self.allowInvalid = allowInvalid self.gameVar = tk.StringVar() self.gameVar.trace('w', self.setGame) gameCombo = ttk.Combobox(self, values=self.splits.getGames(), textvariable=self.gameVar) gameLabel = tk.Label(self, text="Game:") gameCombo.grid(row=0, column=1, columnspan=2, sticky="WE") gameLabel.grid(row=0, column=0, sticky="W") self.cateVar = tk.StringVar() self.cateVar.trace('w', self.setCate) self.cateCombo = ttk.Combobox(self, values=self.splits.getCategories( self.game), textvariable=self.cateVar) cateLabel = tk.Label(self, text="Category:") self.cateCombo.grid(row=1, column=1, columnspan=2, sticky="WE") cateLabel.grid(row=1, column=0, sticky="W")
def __init__(self, master, callback, state): super().__init__(master, callback) self.state = state self.splits = AllSplitNames.Splits() self.editor = MainEditor.Editor(self.window, state.comparesCsv) self.editor.pack() self.editor.saveButton.options["save"] = self.save self.editor.saveButton.options["valid"] = self.validSave
def addRunState(self, retVal): compareNum = self.state.compareNum session = Session.Session(AllSplitNames.Splits()) if retVal["game"] and retVal["category"]: session.setRun(retVal["game"], retVal["category"]) else: session.setRun(self.state.game, self.state.category) self.state = State.State(session) self.state.setComparison(compareNum) self.updateWidgets("runChanged", state=self.state)
def __init__(self,parent,callback): super().__init__(parent,tearoff=False) self.splits = AllSplitNames.Splits() self.fileMenu = tk.Menu(parent, tearoff=False) self.add_cascade(label="Run Reference", menu=self.fileMenu) lambdas = [[lambda game=game, category=category: callback(game,category) for category in self.splits.getCategories(game)] for game in self.splits.getGames()] i = 0 for game in self.splits.getGames(): recentMenu = tk.Menu(parent, tearoff=False) self.fileMenu.add_cascade(label=game,menu=recentMenu) j = 0 for category in self.splits.getCategories(game): recentMenu.add_command(label=category,command=lambdas[i][j]) j = j + 1 i = i + 1
def __init__(self, master, comparisons): super().__init__(master) self.localComparisons = copy.deepcopy(comparisons) self.splits = AllSplitNames.Splits() self.buttonFrame = tk.Frame(self) self.buttonFrame.pack(side="right", fill="y") self.entries = EntryGrid.EntryGrid(self, self.localComparisons, self) self.entries.pack(side="left") self.addSplitButton = tk.Button(self.buttonFrame, text="Add Split", command=self.addSplit) self.addSplitButton.pack(fill="x") self.deleteSplitButton = tk.Button(self.buttonFrame, text="Delete Split", command=self.deleteSplit, state="disabled") self.deleteSplitButton.pack(fill="x") self.addComparisonButton = tk.Button(self.buttonFrame, text="Add Comparison", command=self.addComparison) self.addComparisonButton.pack(fill="x") self.deleteComparisonButton = tk.Button(self.buttonFrame, text="Delete Comparison", command=self.deleteComparison) self.deleteComparisonButton.pack(fill="x") if len(self.entries.comparisons) <= 5: self.deleteComparisonButton["state"] = "disabled" self.saveButton = SaveButton.SaveButton(self.buttonFrame, \ {"save": self.save, \ "valid": self.validSave, \ "invalidMsg": "Current data is invalid."}) self.saveButton.pack(side="bottom", fill="x") self.saveWarning = tk.Label( self.buttonFrame, text= "Warning: some\ncurrent values are\ninvalid. For invalid\nvalues, the most\nrecent valid value\n will be saved.", fg="orange")
def __init__(self, master): super().__init__(master) self.config = rc.getUserConfig() self.splits = AllSplitNames.Splits() self.selection = GameSelector.Selector(self, allowInvalid=True) self.selection.pack(side="top", anchor='w') self.selection.followup = self.updateRows self.oldGame = "" self.oldCategory = "" self.editor = MainEditor.Editor(self, dataManip.newComparisons()) self.editor.pack(side="bottom") self.editor.saveButton.options["save"] = self.save self.editor.saveButton.options["valid"] = self.validSave self.localEntries = EntryGrid.EntryGrid(self.editor, dataManip.newComparisons(), self.editor) self.savedGame = "" self.savedCategory = ""
def __init__(self,parent,content): super().__init__(parent,tearoff=False) self.content = content self.splits = AllSplitNames.Splits() self.fileMenu = tk.Menu(parent, tearoff=False) self.add_cascade(label="Run Reference", menu=self.fileMenu) lambdas = [[[lambda game=game, category=category, name=name: self.setSplit(game,category,name) for name in self.splits.getSplitNames(game,category)] for category in self.splits.getCategories(game)] for game in self.splits.getGames()] i = 0 for game in self.splits.getGames(): recentMenu = tk.Menu(parent, tearoff=False) self.fileMenu.add_cascade(label=game,menu=recentMenu) j = 0 for category in self.splits.getCategories(game): splitsMenu = tk.Menu(parent, tearoff=False) recentMenu.add_cascade(label=category,menu=splitsMenu) k = 0 for name in self.splits.getSplitNames(game,category): splitsMenu.add_command(label=name,command=lambdas[i][j][k]) k = k + 1 j = j + 1 i = i + 1
from util import readConfig as rc from DataClasses import AllSplitNames from DataClasses import PracticeSession from Dialogs import AddRun def setHotkeys(app, state): app.root.bind(state.config["hotkeys"]["split"], app.onSplitEnd) app.root.bind(state.config["hotkeys"]["start"], app.start) app.root.bind(state.config["hotkeys"]["restart"], app.restart) app.root.bind(state.config["hotkeys"]["finish"], app.finish) app.root.bind(state.config["hotkeys"]["save"], app.save) app.root.bind(state.config["hotkeys"]["chooseSplit"], app.chooseSplit) splits = AllSplitNames.Splits() if not len(splits.getGames()): AddRun.SplitEditorD().show() splits.update() session = PracticeSession.Session(splits) if session.exit: sys.exit() state = PracticeState.State(session) rc.validateHotkeys(state.config) app = app.App(state, session) app.setupGui(True) setHotkeys(app, state) rootWindow = app.root