Skip to content

Commit f28971f

Browse files
committedMay 17, 2019
Various Improvements
1 parent 73d622c commit f28971f

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed
 

‎Python Files/FileConverter/FileConverter.py

+33-10
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def __init__(self, master):
1414
self.frames = [Frame(self) for _ in range(3)]
1515
self.selectButton = Button(self.frames[0], text = 'Select File', command = self.select)
1616
self.convertButton = Button(self.frames[0], text = 'Convert', command = self.convert)
17+
self.revertButton = Button(self.frames[0], text = 'Revert', command = self.revert)
1718
self.fileLabel = Label(self.frames[1], text = 'File: ')
1819
self.filenameLabel = Label(self.frames[1])
1920
self.toLabel = Label(self.frames[1], text = 'Format: ')
@@ -25,30 +26,52 @@ def __init__(self, master):
2526
self.toEntry.select_range(0, END)
2627
for i, w in enumerate(self.frames):
2728
w.grid(row = i, column = 0, sticky = NSEW)
28-
for i, (w1, w2, w3) in enumerate(zip([self.selectButton, self.convertButton],
29-
[self.fileLabel, self.filenameLabel],
30-
[self.toLabel, self.toEntry])):
31-
w1.grid(row = 0, column = i, sticky = NSEW)
32-
w2.grid(row = 0, column = i)
33-
w3.grid(row = 1, column = i, sticky = NSEW)
29+
for i, w in enumerate([self.selectButton, self.convertButton, self.revertButton]):
30+
w.grid(row = 0, column = i, sticky = NSEW)
31+
for i, (w1, w2) in enumerate(zip([self.fileLabel, self.filenameLabel],
32+
[self.toLabel, self.toEntry])):
33+
w1.grid(row = 0, column = i)
34+
w2.grid(row = 1, column = i, sticky = NSEW)
35+
self.lastConversion = ()
3436

3537
def select(self):
3638
filename = filedialog.askopenfilename(initialdir = self.settings.setdefault(LAST_DIR, ''), \
3739
title = 'Select a File')
3840
if not filename: return
3941
self.settings[LAST_DIR] = os.path.dirname(filename)
4042
self.filenameLabel['text'] = filename
43+
self.lastConversion = ()
4144

4245
def convert(self):
4346
filename = self.filenameLabel['text']
4447
fileFormat = self.toEntry.get()
45-
if not filename or not fileFormat: return
4648
if fileFormat.startswith('.'):
4749
fileFormat = fileFormat[1:]
48-
if not fileFormat: return
50+
if not filename or not fileFormat:
51+
messagebox.showerror(title = 'Error', message = 'Nothing to Convert!')
52+
return
4953
self.settings[LAST_FORMAT] = fileFormat
50-
os.rename(filename, filename[:filename.find('.') + 1] + fileFormat)
51-
messagebox.showinfo(title = 'Finished', message = 'Done!')
54+
dot = filename.find('.')
55+
newFileName = filename + '.' + fileFormat if dot == -1 else filename[:dot + 1] + fileFormat
56+
self.__rename(filename, newFileName, 'Renaming Done!')
57+
58+
def revert(self):
59+
if not self.lastConversion:
60+
messagebox.showerror(title = 'Error', message = 'Nothing to Revert!')
61+
return
62+
fromFile, toFile = self.lastConversion
63+
self.__rename(toFile, fromFile, 'Reversion Done!')
64+
65+
def __rename(self, fromFile, toFile, doneMessage):
66+
try:
67+
os.rename(fromFile, toFile)
68+
except:
69+
messagebox.showerror(title = 'Error', message = 'File not found!')
70+
return False
71+
self.filenameLabel['text'] = toFile
72+
self.lastConversion = (fromFile, toFile)
73+
messagebox.showinfo(title = 'Finished', message = doneMessage)
74+
return True
5275

5376
root = Tk()
5477
app = Converter(root)

0 commit comments

Comments
 (0)
Please sign in to comment.