def discardCommand(self): if self.regex.get() and self.var.get(): self.regexString = '"'+str(self.var.get())+'='+self.regex.get()+'"' if (self.display.size() > 0): temp = tempfile.NamedTemporaryFile(delete=False) self.status = Mx.writeTemp(temp.file, self.collection) tempOutput = tempfile.NamedTemporaryFile(delete=False) temp.close() tempOutput.close() tstr = './mxtool'+' '+'-discard'+' '+self.regexString+' '+'<'+' '+temp.name+' '+'>'+' '+tempOutput.name os.system(tstr) self.tempCollection = self.collection self.status, self.collection, self.nrecs2 = Mx.readFile(tempOutput.name) if (self.status == 0): self.display.delete(0, END) for x in range (0, self.nrecs2): self.bibdata = Mx.marc2bib(self.collection, x) self.tempstring = str(x+1)+self.bibdata[0]+self.bibdata[1]+self.bibdata[2]+self.bibdata[3] self.display.insert(END,self.tempstring) self.label.config(text="Records Remaining: "+str(self.nrecs2)) else: self.label.config(text="Could not carry out regex operation") os.unlink(temp.name) os.unlink(tempOutput.name) self.undo.config(state=NORMAL) else: tkMessageBox.showerror("Error", "No XML File Open") else: tkMessageBox.showerror("Warning", "Make sure it is a proper regular expression and one of the buttons has been selected")
def appendCommand(self): #exactly the same as above except switches order of files being concat'd if (self.display.size() > 0): temp = tempfile.NamedTemporaryFile(delete=False) self.status = Mx.writeTemp(temp.file, self.collection) self.newfile = askopenfilename(filetypes=[("XML Files", "*.xml")]) tempOutput = tempfile.NamedTemporaryFile(delete=False) temp.close() tempOutput.close() tstr = './mxtool'+' '+'-cat'+' '+self.newfile+' '+'<'+' '+temp.name+' '+'>'+' '+tempOutput.name os.system(tstr) Mx.freeFile(self.collection) self.status, self.collection, self.nrecs2 = Mx.readFile(tempOutput.name) if (self.status == 0): self.display.delete(0, END) for x in range (0, self.nrecs2): self.bibdata = Mx.marc2bib(self.collection, x) #extract 4 string from subelem[recno] self.tempstring = str(x+1)+self.bibdata[0]+self.bibdata[1]+self.bibdata[2]+self.bibdata[3] self.display.insert(END,self.tempstring) self.label.config(text="Records Added: "+str(self.nrecs2-self.nrecs)+ " Total Records: " +str(self.nrecs2)) else: self.label.config(text="Could not concatenate XML Files") os.unlink(temp.name) os.unlink(tempOutput.name) else: tkMessageBox.showerror("Error", "No XML File Open")
def insertCommand(self): if (self.display.size() > 0): temp = tempfile.NamedTemporaryFile(delete=False) #tempfile for current display to be written to self.status = Mx.writeTemp(temp.file, self.collection) self.newfile = askopenfilename(filetypes=[("XML Files", "*.xml")]) tempOutput = tempfile.NamedTemporaryFile(delete=False) temp.close() tempOutput.close() tstr = './mxtool'+' '+'-cat'+' '+temp.name+' '+'<'+' '+self.newfile+' '+'>'+' '+tempOutput.name os.system(tstr) #command line execution: calls above statement Mx.freeFile(self.collection) self.status, self.collection, self.nrecs2 = Mx.readFile(tempOutput.name) #reads new file to update display if (self.status == 0): self.display.delete(0, END) for x in range (0, self.nrecs2): self.bibdata = Mx.marc2bib(self.collection, x) #extract 4 string from subelem[recno] self.tempstring = str(x+1)+self.bibdata[0]+self.bibdata[1]+self.bibdata[2]+self.bibdata[3] self.display.insert(END,self.tempstring) self.label.config(text="Records Added: "+str(self.nrecs2-self.nrecs)+ " Total Records: " +str(self.nrecs2)) else: self.label.config(text="Could not concatenate XML Files") os.unlink(temp.name) #removes temporary files now incase user decides to insert multiple times os.unlink(tempOutput.name) #in one session so as to not lose track of all files being created else: tkMessageBox.showerror("Error", "No XML File Open")
def bibCommand(self): if (self.display.size() > 0): self.newfile = asksaveasfilename(defaultextension=".txt") temp = tempfile.NamedTemporaryFile(delete=False) self.status = Mx.writeTemp(temp.file, self.collection) temp.close() tstr = './mxtool'+' '+'-bib'+' '+'<'+' '+temp.name+' '+'>'+' '+self.newfile os.system(tstr) if (self.nrecs2 != 0): self.label.config(text="Records saved as -lib format: " +str(self.nrecs2)) else: self.label.config(text="Records saved as -lib format: "+str(self.nrecs)) os.unlink(temp.name) else: tkMessageBox.showerror("Error", "No XML File Open")