Пример #1
0
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
Пример #2
0
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