def __init__(self, master, parentw): self.master = master self.parentw = parentw self.tilemapwidget = TilemapWidget(master, parentw) self.selectedTile = StringVar(self.parentw) self.tileOption = apply( OptionMenu, (self.parentw, self.selectedTile) + tuple(TileConfig.tileoptions.keys()) ) self.tileOption.pack() self.tilemapwidget.canvas.bind("<B1-Motion>", self.motion) self.tilemapwidget.new_tilemap(6,8)
class GenProcess: def __init__(self, master, parentw): self.parentw = parentw self.master = master self.panedw = PanedWindow(parentw, orient=HORIZONTAL, bg="gray", sashwidth=8) self.config = GenConfig(self.panedw, master) self.config.pack(expand=True, fill="both") #self.gc.parentw.pack(side="top", expand=True, fill="both") self.resultingmap = TilemapWidget(master, self.panedw) self.resultingmap.tilesize = 10 self.resultingmap.new_tilemap(100, 100) self.panedw.pack(fill="both", expand=True) self.panedw.add(self.config) self.panedw.add(self.resultingmap.canvasframe)
class TilemapEdit: def __init__(self, master, parentw): self.master = master self.parentw = parentw self.tilemapwidget = TilemapWidget(master, parentw) self.selectedTile = StringVar(self.parentw) self.tileOption = apply( OptionMenu, (self.parentw, self.selectedTile) + tuple(TileConfig.tileoptions.keys()) ) self.tileOption.pack() self.tilemapwidget.canvas.bind("<B1-Motion>", self.motion) self.tilemapwidget.new_tilemap(6,8) def request_new_size(self): def edit_size_cb(x, y): self.tilemapwidget.new_tilemap(int(x), int(y)) d = RequestSizeDialog(self.master, edit_size_cb) self.master.wait_window(d.top) def save_json(self): file = tkFileDialog.asksaveasfile() json.dump(self.tilemapwidget.tilemap.tilemap, file) file.close() def load_json(self): file = tkFileDialog.askopenfile() self.tilemapwidget.load_tilemap(json.load(file)) file.close() def motion(self, event): canvas = event.widget x = canvas.canvasx(event.x) y = canvas.canvasy(event.y) tilesize = TileConfig.tilesize tilex = int(x / tilesize) tiley = int(y / tilesize) self.tilemapwidget.tilemap.tilemap[tiley][tilex] = TileConfig.tileoptions[self.selectedTile.get()] self.tilemapwidget.update_canvas()