def definetiles(self): self.uifont = self.zoom.font try: self.status.scale(self.uifont) for d in self.display: d.scale(self.uifont) except AttributeError: self.status = StatusBar(self.game, self._player, self.zoom) self.display = [GameScreen(self.game, self._player, self.uifont, self.zoom, self._pushdisplay, self._popdisplay)]
def createWidgets(self): self.selectLabel = ttk.Label(self, text = "Select:") self.selectLabel.grid(column = 0, row = 0, padx = 10, pady = 5) self.select = Select(self, textvariable = self.selectVar) self.select.grid(column = 1, row = 0, sticky = (E, W)) self.searchLabel = ttk.Label(self, text = "Search:") self.searchLabel.grid(column = 2, row = 0, padx = 10, pady = 5) self.search = Search(self, textvariable = self.searchVar) self.search.grid(column = 3, row = 0, sticky = (E, W)) self.filestorage = FileStorage(self) self.filetree = FileTree(self) self.filetree.grid(column = 0, row = 1, rowspan = 4, sticky = (N, S, E, W), columnspan = 4) self.scrollbar = ttk.Scrollbar(self, orient = VERTICAL, command = self.filetree.yview) self.scrollbar.grid(column = 4, row = 1, rowspan = 4, sticky = (N, S, E)) self.filetree.configure(yscrollcommand = self.scrollbar.set) self.tags = Tags(self) self.tags.grid(column = 5, row = 2, sticky = (E, W), padx = 5) self.tagsLab = ttk.Label(text = "Tags") self.tagsLab.grid(column = 5, row = 1, padx = 5, pady = 2) self.notes = Notes(self) self.notes.grid(column = 5, row = 4, sticky = (N, S, E, W), padx = 5) self.notesLab = ttk.Label(text = "Notes") self.notesLab.grid(column = 5, row = 3, padx = 5, pady = 2) self.scrollNotes = ttk.Scrollbar(self, orient = VERTICAL, command = self.notes.yview) self.scrollNotes.grid(column = 6, row = 4, sticky = (N, S, W)) self.notes.configure(yscrollcommand = self.scrollNotes.set) self.buttons = Buttons(self) self.buttons.grid(row = 5, column = 0, columnspan = 5, pady = 5, sticky = (E, W)) self.statusBar = StatusBar(self) self.statusBar.grid(row = 6, column = 0, columnspan = 5, padx = 5, pady = 5, sticky = (E, W))
class GUI(Tk): "represents GUI" def __init__(self): super().__init__() self.option_add("*tearOff", FALSE) self.initialized = False self.title("Papyer") x, y = 1500, 500 self.minsize(x, y) placeWindow(self, x, y) self.options = Options(self) self["menu"] = TopMenu(self) self.protocol("WM_DELETE_WINDOW", self.closeFun) self.base = os.getcwd() self.selectVar = StringVar() self.searchVar = StringVar() self.createWidgets() self.columnconfigure(1, weight = 1) self.columnconfigure(3, weight = 1) self.columnconfigure(5, weight = 1) self.rowconfigure(4, weight = 1) self.bind("<Control-d>", lambda e: self.filetree.keepDuplicates()) self.bind("<Control-a>", lambda e: self.filetree.selectAll()) self.mainloop() def refresh(self): # do in a smarter way - check changes in the files self.filestorage.save() self.filetree.saveSettings() selected = self.filetree.selection() self.createWidgets() self.filetree.selection_set(selected) def createWidgets(self): self.selectLabel = ttk.Label(self, text = "Select:") self.selectLabel.grid(column = 0, row = 0, padx = 10, pady = 5) self.select = Select(self, textvariable = self.selectVar) self.select.grid(column = 1, row = 0, sticky = (E, W)) self.searchLabel = ttk.Label(self, text = "Search:") self.searchLabel.grid(column = 2, row = 0, padx = 10, pady = 5) self.search = Search(self, textvariable = self.searchVar) self.search.grid(column = 3, row = 0, sticky = (E, W)) self.filestorage = FileStorage(self) self.filetree = FileTree(self) self.filetree.grid(column = 0, row = 1, rowspan = 4, sticky = (N, S, E, W), columnspan = 4) self.scrollbar = ttk.Scrollbar(self, orient = VERTICAL, command = self.filetree.yview) self.scrollbar.grid(column = 4, row = 1, rowspan = 4, sticky = (N, S, E)) self.filetree.configure(yscrollcommand = self.scrollbar.set) self.tags = Tags(self) self.tags.grid(column = 5, row = 2, sticky = (E, W), padx = 5) self.tagsLab = ttk.Label(text = "Tags") self.tagsLab.grid(column = 5, row = 1, padx = 5, pady = 2) self.notes = Notes(self) self.notes.grid(column = 5, row = 4, sticky = (N, S, E, W), padx = 5) self.notesLab = ttk.Label(text = "Notes") self.notesLab.grid(column = 5, row = 3, padx = 5, pady = 2) self.scrollNotes = ttk.Scrollbar(self, orient = VERTICAL, command = self.notes.yview) self.scrollNotes.grid(column = 6, row = 4, sticky = (N, S, W)) self.notes.configure(yscrollcommand = self.scrollNotes.set) self.buttons = Buttons(self) self.buttons.grid(row = 5, column = 0, columnspan = 5, pady = 5, sticky = (E, W)) self.statusBar = StatusBar(self) self.statusBar.grid(row = 6, column = 0, columnspan = 5, padx = 5, pady = 5, sticky = (E, W)) def closeFun(self): "ask for saving files on exit" self.filetree.saveSettings() self.filestorage.save() self.options.save() self.destroy()
class Renderer(object): def __init__(self, game, player, zoom): self.game = game self._player = player self.zoom = zoom self.definetiles() self.makescreen(display.get_surface().get_size()) @property def dt(self): return self.display[-1].dt def definetiles(self): self.uifont = self.zoom.font try: self.status.scale(self.uifont) for d in self.display: d.scale(self.uifont) except AttributeError: self.status = StatusBar(self.game, self._player, self.zoom) self.display = [GameScreen(self.game, self._player, self.uifont, self.zoom, self._pushdisplay, self._popdisplay)] def makebackground(self): self.status.resize(self.statussurf.get_size()) for d in self.display: d.resize(self.displaysurf.get_size()) def makescreen(self, size): self.screen = display.set_mode(size, HWSURFACE | RESIZABLE) self.statussurf = self.screen.subsurface(Rect((0, size[1]-2 * self.uifont.get_linesize()), (size[0], 2 * self.uifont.get_linesize()))) self.displaysurf = self.screen.subsurface(Rect((0, 0), (size[0], size[1]-2 * self.uifont.get_linesize()))) self.makebackground() def _pushdisplay(self, child): self.display.append(child) self.definetiles() self.makebackground() def _popdisplay(self): del self.display[-1] self.definetiles() def step(self): for e in event.get(): handled = self.display[-1].handle(e) if not handled: if e.type == QUIT: self.game.done = True elif e.type == KEYDOWN: pressed = key.get_pressed() shifted = pressed[K_LSHIFT] or pressed[K_RSHIFT] scroll = 10 if shifted else 1 if e.key == K_ESCAPE: self.game.done = True elif e.key == K_SPACE: self.game.paused = not self.game.paused elif e.unicode == '-': timeindex = self.game.timescales.index(0.1 / self.game.dt) if timeindex > 0: timeindex -= 1 self.game.dt = 0.1 / self.game.timescales[timeindex] elif e.unicode == '+': timeindex = self.game.timescales.index(0.1 / self.game.dt) if timeindex < len(self.game.timescales)-1: timeindex += 1 self.game.dt = 0.1 / self.game.timescales[timeindex] elif e.unicode == 'd': import pdb pdb.set_trace() elif e.type == MOUSEBUTTONUP: if e.button == 4: self.zoom.width += 2 self.zoom.height += 2 self.makescreen(self.screen.get_size()) self.definetiles() elif e.button == 5: self.zoom.width = max(self.zoom.width - 2, 2) self.zoom.height = max(self.zoom.height - 2, 4) self.makescreen(self.screen.get_size()) self.definetiles() elif e.type == VIDEORESIZE: self.makescreen(e.size) self.definetiles() self.display[-1].draw(self.displaysurf) self.status.draw(self.statussurf) display.flip() if self.game.done: self.game = None return None else: return self