fix command line options (was: app quitting before thread done)

This commit is contained in:
Kilian Valkhof 2010-02-05 22:48:10 +01:00
parent 0617a1dd5a
commit 5e39866f90

View file

@ -1,7 +1,7 @@
import sys import sys
from os import system from os import system
from os import listdir from os import listdir
import os.path from os import path
from subprocess import * from subprocess import *
from optparse import OptionParser from optparse import OptionParser
@ -84,11 +84,11 @@ class StartQT4(QMainWindow):
compress_file.""" compress_file."""
global showapp global showapp
showapp = False showapp = False
dirpath = os.path.abspath(os.path.dirname(directory)) dirpath = path.abspath(path.dirname(directory))
imagedir = listdir(directory) imagedir = listdir(directory)
filelist = QStringList() filelist = QStringList()
for image in imagedir: for image in imagedir:
image = QString(os.path.join(dirpath, image)) image = QString(path.join(dirpath, image))
filelist.append(image) filelist.append(image)
self.delegator(filelist) self.delegator(filelist)
@ -96,7 +96,7 @@ class StartQT4(QMainWindow):
"""Get the file and send it to compress_file""" """Get the file and send it to compress_file"""
global showapp global showapp
showapp = False showapp = False
image = os.path.abspath(image) image = path.abspath(image)
filecmdlist = QStringList() filecmdlist = QStringList()
filecmdlist.append(image) filecmdlist.append(image)
self.delegator(filecmdlist) self.delegator(filecmdlist)
@ -181,7 +181,7 @@ class StartQT4(QMainWindow):
def checkname(self, name): def checkname(self, name):
"""Check if the file is a jpg or png.""" """Check if the file is a jpg or png."""
return os.path.splitext(str(name))[1].lower() in [".jpg", ".jpeg", ".png"] return path.splitext(str(name))[1].lower() in [".jpg", ".jpeg", ".png"]
def enable_recompress(self): def enable_recompress(self):
"""Enable the recompress button.""" """Enable the recompress button."""
@ -246,70 +246,71 @@ class Worker(QThread):
def run(self): def run(self):
"""Compress the given file, get data from it and call update_table.""" """Compress the given file, get data from it and call update_table."""
global showapp
global imagelist
for image in self.images: for image in self.images:
#gather old file data #gather old file data
filename = image[0] filename = str(image[0])
icon = image[1] icon = image[1]
oldfile = QFileInfo(filename) oldfile = QFileInfo(filename)
name = oldfile.fileName() name = oldfile.fileName()
oldfilesize = oldfile.size() oldfilesize = oldfile.size()
oldfilesizestr = size(oldfilesize, system=alternative) oldfilesizestr = size(oldfilesize, system=alternative)
# get extention
print os.path, type(filename), type(os.path), str(filename)
baseName, extention = os.path.splitext(filename)
#decide with tool to use # get extention
if extention in ['.jpg', '.jpeg']: baseName, extention = path.splitext(filename)
runString = 'jpegoptim -f --strip-all "%(file)s"'
elif extention in ['.png']: #decide with tool to use
runString = 'optipng -force -o7 "%(file)s"; advpng -z4 "%(file)s"' if extention in ['.jpg', '.jpeg']:
else: runString = 'jpegoptim -f --strip-all "%(file)s"'
# This probably should never happen... elif extention in ['.png']:
raise Exception('File %s does not have the appropriate extention' % filename) runString = 'optipng -force -o7 "%(file)s"; advpng -z4 "%(file)s"'
else:
raise Exception('File %s does not have the appropriate'
'extention' % filename)
try: try:
retcode = call(runString % {'file' : filename}, shell = True, stdout = PIPE) retcode = call(runString % {'file' : filename}, shell=True,
stdout=PIPE)
runfile = retcode runfile = retcode
except OSError, e: except OSError, e:
runfile = e runfile = e
if runfile != 0: if runfile == 0:
#gather new file data
newfile = QFile(filename)
newfilesize = newfile.size()
newfilesizestr = size(newfilesize, system=alternative)
#calculate ratio and make a nice string
ratio = 100 - (float(newfilesize) / float(oldfilesize) * 100)
ratiostr = "%.1f%%" % ratio
# append current image to list
for i, image in enumerate(imagelist):
if image[4] == filename:
imagelist.remove(image)
imagelist.insert(i, (name, oldfilesizestr,
newfilesizestr,ratiostr, filename, icon))
self.emit(SIGNAL("updateUi"))
if not showapp:
# we work via the commandline
print("File:" + filename + ", Old Size:" + oldfilesizestr +
", New Size:" + newfilesizestr + ", Ratio:" +
ratiostr)
else:
# TODO nice error recovery # TODO nice error recovery
raise Exception('Some error occurred!') raise Exception('Some error occurred!')
if not showapp:
#gather new file data quit()
newfile = QFile(filename)
newfilesize = newfile.size()
newfilesizestr = size(newfilesize, system=alternative)
#calculate ratio and make a nice string
ratio = 100 - (float(newfilesize) / float(oldfilesize) * 100)
ratiostr = "%.1f%%" % ratio
# append current image to list
global imagelist
for i, image in enumerate(imagelist):
if image[4] == filename:
imagelist.remove(image)
imagelist.insert(i, (name, oldfilesizestr, newfilesizestr, ratiostr,
filename, icon))
self.emit(SIGNAL("updateUi"))
global showapp
if not showapp:
# we work via the commandline
print("File:" + filename + ", Old Size:" + oldfilesizestr +
", New Size:" + newfilesizestr + ", Ratio:" + ratiostr)
if __name__ == "__main__": if __name__ == "__main__":
app = QApplication(sys.argv) app = QApplication(sys.argv)
myapp = StartQT4() myapp = StartQT4()
if showapp: if showapp:
# no command line options called
myapp.show() myapp.show()
else:
quit()
sys.exit(app.exec_()) sys.exit(app.exec_())