From d7cd915655d08b90ff92fbe0bfafaacb208068c4 Mon Sep 17 00:00:00 2001 From: Kilian Valkhof Date: Wed, 3 Feb 2010 15:31:11 +0100 Subject: [PATCH] hide output of cml apps, make icon prettier --- dialog-warning.png | Bin 542 -> 486 bytes todo | 3 ++- trimage-icon.png | Bin 4854 -> 4549 bytes trimage.py | 43 +++++++++++++++++++++++++++++-------------- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/dialog-warning.png b/dialog-warning.png index 704f1d7304568d9c5c550107453f996117fd7d40..39515219adaa25112b5c7bef4d43430b5069d298 100644 GIT binary patch delta 24 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 A5C8xG diff --git a/trimage.py b/trimage.py index ef32948..550c38d 100644 --- a/trimage.py +++ b/trimage.py @@ -2,6 +2,7 @@ import sys from os import system from os import listdir from os import path +from subprocess import * from PyQt4.QtCore import * from PyQt4.QtGui import * from hurry.filesize import * @@ -49,9 +50,9 @@ class StartQT4(QMainWindow): description="GUI front-end to compress png and jpg images via " "optipng, advpng and jpegoptim") parser.add_option("-f", "--file", action="store", type="string", - dest="filename", help="image to compress") + dest="filename", help="compresses image and exit") parser.add_option("-d", "--directory", action="store", type="string", - dest="directory", help="directory of images to compress", ) + dest="directory", help="compresses images in directory and exit", ) options, args = parser.parse_args() @@ -124,19 +125,26 @@ class StartQT4(QMainWindow): #decide with tool to use if path.splitext(str(filename))[1].lower() in [".jpg", ".jpeg"]: - runstr = 'jpegoptim --strip-all -f -q"' + str(filename) + '"' - runfile = system(runstr) - + runstr = 'jpegoptim -f --strip-all "' + str(filename) + '"' + try: + retcode = call(runstr, shell=True, stdout=PIPE) + runfile = retcode + except OSError, e: + runfile = e elif path.splitext(str(filename))[1].lower() in [".png"]: - # don't do advpng yet - runstr = ('optipng -q -force -o7 "' + str(filename) - + '"; advpng -z4 -q "' + str(filename) + '"') - #runstr = 'optipng -force -o7 "' + str(filename) + '"' - runfile = system(runstr) + runstr = ('optipng -force -o7 "' + str(filename) + + '"; advpng -z4 "' + str(filename) + '"') + try: + retcode = call(runstr, shell=True, stdout=PIPE) + runfile = retcode + except OSError, e: + runfile = e if runfile == 0: #gather new file data newfile = QFile(filename) + provider = QFileIconProvider() + newfileicon = provider.icon(QFileInfo(filename)) newfilesize = newfile.size() newfilesizestr = size(newfilesize, system=alternative) @@ -146,9 +154,15 @@ class StartQT4(QMainWindow): # append current image to list self.imagelist.append( - (name, oldfilesizestr, newfilesizestr, ratiostr, filename)) + (newfileicon, name, oldfilesizestr, newfilesizestr, ratiostr, + filename)) self.update_table() + if self.showapp != True: + # we work via the commandline + print("File:" + filename + ", Old Size:" + oldfilesizestr + + ", New Size:" + newfilesizestr + ", Ratio:" + ratiostr) + else: # TODO nice error recovery print("uh. not good") @@ -159,7 +173,7 @@ class StartQT4(QMainWindow): # set table model tmodel = TriTableModel(self, self.imagelist, - ["Filename", "Old Size", "New Size", "Compressed"]) + ["", "Filename", "Old Size", "New Size", "Compressed"]) tview.setModel(tmodel) # set minimum size of table @@ -175,8 +189,9 @@ class StartQT4(QMainWindow): for row in range(nrows): tview.setRowHeight(row, 25) - # set the first column to be longest - tview.setColumnWidth(0, 300) + # set the second column to be longest + tview.setColumnWidth(0, 30) + tview.setColumnWidth(1, 280) # enable recompress button self.enable_recompress()