class DictEditor(Frame, GUI_help): """Simple app to allow edit/save dicts in table""" def __init__(self, parent=None): self.parent = parent if not self.parent: Frame.__init__(self) self.main=self.master else: self.main=Toplevel() self.main.title('Dict Editor') self.main.geometry('600x600+200+200') bf=Frame(self.main) bf.pack(side=RIGHT) Button(bf,text='Load Pickle',command=self.loadDict).pack(side=TOP,fill=X) Button(bf,text='Save',command=self.saveDict).pack(side=TOP,fill=X) Button(bf,text='Import CSV',command=self.loadCSV).pack(side=TOP,fill=X) Button(bf,text='Save as CSV',command=self.saveCSV).pack(side=TOP,fill=X) Button(bf,text='Add Row',command=self.addRow).pack(side=TOP,fill=X) Button(bf,text='Quit',command=self.quit).pack(side=TOP,fill=X) self.tframe=Frame(self.main) self.tframe.pack(side=LEFT,expand=1,fill=BOTH) self.filename = None self.table=None return def loadDict(self, filename=None): if filename==None: import tkFileDialog filename=tkFileDialog.askopenfilename(defaultextension='.pickle', filetypes=[("pickle","*.pickle"), ("All files","*.*")], parent=self.main) if filename != None: self.dictdata = pickle.load(open(filename,'r')) self.loadTable(self.dictdata) self.filename = filename return def saveDict(self): """Pickle dict from table contents""" if self.table == None: return if self.filename == None: import tkFileDialog self.filename=tkFileDialog.asksaveasfilename(defaultextension='.pickle', filetypes=[("pickle","*.pickle"), ("All files","*.*")], parent=self.main) pickle.dump(self.model.data,open(self.filename,'w')) return def loadCSV(self): """Load a csv file as a dict and display""" from PEATDB.IO import Importer IM = Importer() IM.getLines() IM.showimportDialog() self.wait_window(IM.ask_csv) model = DictModel() model.importDict(IM.data) self.filename=None self.loadTable(model=model) return def saveCSV(self): """Export csv from table contents""" if self.filename == None: return self.table.exportTable() return def loadTable(self, dictdata=None, model=None): if model != None: self.model = model else: self.model = DictModel(dictdata) self.model.setSortOrder(0) self.table = TableCanvas(self.tframe, self.model) self.table.createTableFrame() return def addRow(self): """add a row""" if self.table == None: return self.table.add_Row() return def quit(self): self.main.destroy() return
class DictEditor(Frame, GUI_help): """Simple app to allow edit/save dicts in table""" def __init__(self, parent=None): self.parent = parent if not self.parent: Frame.__init__(self) self.main = self.master else: self.main = Toplevel() self.main.title('Dict Editor') self.main.geometry('600x600+200+200') bf = Frame(self.main) bf.pack(side=RIGHT) Button(bf, text='Load Pickle', command=self.loadDict).pack(side=TOP, fill=X) Button(bf, text='Save', command=self.saveDict).pack(side=TOP, fill=X) Button(bf, text='Import CSV', command=self.loadCSV).pack(side=TOP, fill=X) Button(bf, text='Save as CSV', command=self.saveCSV).pack(side=TOP, fill=X) Button(bf, text='Add Row', command=self.addRow).pack(side=TOP, fill=X) Button(bf, text='Quit', command=self.quit).pack(side=TOP, fill=X) self.tframe = Frame(self.main) self.tframe.pack(side=LEFT, expand=1, fill=BOTH) self.filename = None self.table = None return def loadDict(self, filename=None): if filename == None: import tkFileDialog filename = tkFileDialog.askopenfilename(defaultextension='.pickle', filetypes=[ ("pickle", "*.pickle"), ("All files", "*.*") ], parent=self.main) if filename != None: self.dictdata = pickle.load(open(filename, 'r')) self.loadTable(self.dictdata) self.filename = filename return def saveDict(self): """Pickle dict from table contents""" if self.table == None: return if self.filename == None: import tkFileDialog self.filename = tkFileDialog.asksaveasfilename( defaultextension='.pickle', filetypes=[("pickle", "*.pickle"), ("All files", "*.*")], parent=self.main) pickle.dump(self.model.data, open(self.filename, 'w')) return def loadCSV(self): """Load a csv file as a dict and display""" from PEATDB.IO import Importer IM = Importer() IM.getLines() IM.showimportDialog() self.wait_window(IM.ask_csv) model = DictModel() model.importDict(IM.data) self.filename = None self.loadTable(model=model) return def saveCSV(self): """Export csv from table contents""" if self.filename == None: return self.table.exportTable() return def loadTable(self, dictdata=None, model=None): if model != None: self.model = model else: self.model = DictModel(dictdata) self.model.setSortOrder(0) self.table = TableCanvas(self.tframe, self.model) self.table.createTableFrame() return def addRow(self): """add a row""" if self.table == None: return self.table.add_Row() return def quit(self): self.main.destroy() return