From b829b6ac5fad74a1397ed2a1d2b032a5599b9b05 Mon Sep 17 00:00:00 2001 From: Huluti Date: Fri, 22 Feb 2019 21:23:37 +0100 Subject: [PATCH 1/4] Minor cosmetics --- trimage/trimage.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/trimage/trimage.py b/trimage/trimage.py index 99dc858..e17f58c 100644 --- a/trimage/trimage.py +++ b/trimage/trimage.py @@ -14,15 +14,15 @@ from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * -from tools import human_readable_size from ThreadPool import ThreadPool +from tools import human_readable_size from ui import Ui_trimage VERSION = "1.0.5" -class StartQT5(QMainWindow): +class StartQt(QMainWindow): def __init__(self, parent=None): QWidget.__init__(self, parent) @@ -53,7 +53,6 @@ class StartQT5(QMainWindow): # disable recompress self.ui.recompress.setEnabled(False) - #self.ui.recompress.hide() # make a worker thread self.thread = Worker() @@ -75,11 +74,11 @@ class StartQT5(QMainWindow): self.systemtray = Systray(self) def commandline_options(self): - self.cli = False """Set up the command line options.""" + self.cli = False parser = OptionParser(version="%prog " + VERSION, description="GUI front-end to compress png and jpg images via " - "optipng, advpng and jpegoptim") + "advpng, jpegoptim, optipng and pngcrush") parser.set_defaults(verbose=True) parser.add_option("-v", "--verbose", action="store_true", @@ -141,14 +140,13 @@ class StartQT5(QMainWindow): directory = self.settings.value("directory", QVariant("")) fd.setDirectory(directory) - images = fd.getOpenFileNames(self, + images, _ = fd.getOpenFileNames(self, "Select one or more image files to compress", directory, # this is a fix for file dialog differentiating between cases "Image files (*.png *.jpg *.jpeg *.PNG *.JPG *.JPEG)") self.settings.setValue("fdstate", QVariant(fd.saveState())) - images = images[0] if images: self.settings.setValue("directory", QVariant(path.dirname(images[0]))) self.delegator([fullpath for fullpath in images]) @@ -534,7 +532,7 @@ class Systray(QWidget): if __name__ == "__main__": app = QApplication(sys.argv) - myapp = StartQT5() + myapp = StartQt() if myapp.showapp: myapp.show() From c040b63595cf6263dec4d8950ecb1cd8f531d6ba Mon Sep 17 00:00:00 2001 From: Huluti Date: Sat, 23 Feb 2019 20:48:49 +0100 Subject: [PATCH 2/4] Move two functions in the tools.py file --- trimage/tools.py | 43 ++++++++++++++++++++++++++++++++++++++++--- trimage/trimage.py | 41 +++-------------------------------------- 2 files changed, 43 insertions(+), 41 deletions(-) diff --git a/trimage/tools.py b/trimage/tools.py index 398df9e..f787c8c 100644 --- a/trimage/tools.py +++ b/trimage/tools.py @@ -1,9 +1,46 @@ #!/usr/bin/env python3 +import sys +import errno +from subprocess import call, PIPE -def human_readable_size(num, suffix='B'): - for unit in ['','K','M','G','T','P','E','Z']: + +def check_dependencies(): + """Check if the required command line apps exist.""" + exe = ".exe" if (sys.platform == "win32") else "" + status = True + dependencies = { + "jpegoptim": "--version", + "optipng": "-v", + "advpng": "--version", + "pngcrush": "-version" + } + + for elt in dependencies: + retcode = safe_call(elt + exe + " " + dependencies[elt]) + if retcode != 0: + status = False + print("[error] please install {}".format(elt), file=sys.stderr) + + return status + + +def safe_call(command): + """Cross-platform command-line check.""" + while True: + try: + return call(command, shell=True, stdout=PIPE) + except OSError as e: + if e.errno == errno.EINTR: + continue + else: + raise + + +def human_readable_size(num, suffix="B"): + """Bytes to a readable size format""" + for unit in ["", "K", "M", "G", "T", "P", "E", "Z"]: if abs(num) < 1024.0: return "%3.1f%s%s" % (num, unit, suffix) num /= 1024.0 - return "%.1f%s%s" % (num, 'Y', suffix) + return "%.1f%s%s" % (num, "Y", suffix) \ No newline at end of file diff --git a/trimage/trimage.py b/trimage/trimage.py index e17f58c..1f9da2b 100644 --- a/trimage/trimage.py +++ b/trimage/trimage.py @@ -2,10 +2,9 @@ import time import sys -import errno from os import listdir, path, remove, access, W_OK from shutil import copy -from subprocess import call, PIPE + from optparse import OptionParser from multiprocessing import cpu_count from queue import Queue @@ -15,8 +14,8 @@ from PyQt5.QtGui import * from PyQt5.QtWidgets import * from ThreadPool import ThreadPool -from tools import human_readable_size from ui import Ui_trimage +from tools import * VERSION = "1.0.5" @@ -41,7 +40,7 @@ class StartQt(QMainWindow): self.restoreGeometry(self.settings.value("geometry")) # check if dependencies are installed - if not self.check_dependencies(): + if not check_dependencies(): quit() # add quit shortcut @@ -240,46 +239,12 @@ class StartQt(QMainWindow): # enable recompress button self.enable_recompress() - """ - Helper functions - """ - def enable_recompress(self): """Enable the recompress button.""" self.ui.recompress.setEnabled(True) if QSystemTrayIcon.isSystemTrayAvailable() and not self.cli: self.systemtray.recompress.setEnabled(True) - def check_dependencies(self): - """Check if the required command line apps exist.""" - exe = ".exe" if (sys.platform == "win32") else "" - status = True - dependencies = { - "jpegoptim": "--version", - "optipng": "-v", - "advpng": "--version", - "pngcrush": "-version" - } - - for elt in dependencies: - retcode = self.safe_call(elt + exe + " " + dependencies[elt]) - if retcode != 0: - status = False - print("[error] please install {}".format(elt), file=sys.stderr) - - return status - - def safe_call(self, command): - """Cross-platform command-line check.""" - while True: - try: - return call(command, shell=True, stdout=PIPE) - except OSError as e: - if e.errno == errno.EINTR: - continue - else: - raise - def hide_main_window(self): if self.isVisible(): self.hide() From 9ea961e87cf01a353109736755e64563b4990f2d Mon Sep 17 00:00:00 2001 From: Huluti Date: Sat, 23 Feb 2019 20:54:27 +0100 Subject: [PATCH 3/4] Remove some extra spaces --- trimage/trimage.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/trimage/trimage.py b/trimage/trimage.py index 1f9da2b..a07fa68 100644 --- a/trimage/trimage.py +++ b/trimage/trimage.py @@ -22,7 +22,6 @@ VERSION = "1.0.5" class StartQt(QMainWindow): - def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui = Ui_trimage() @@ -261,7 +260,6 @@ class StartQt(QMainWindow): class TriTableModel(QAbstractTableModel): - def __init__(self, parent, imagelist, header, *args): """ @param parent Qt parent object. @@ -303,7 +301,6 @@ class TriTableModel(QAbstractTableModel): class ImageRow: - def __init__(self, image, waitingIcon=None): """Build the information visible in the table image row.""" self.image = image @@ -344,7 +341,6 @@ class ImageRow: class Image: - def __init__(self, fullpath): """Gather image information.""" self.valid = False @@ -405,7 +401,6 @@ class Image: class Worker(QThread): - update_ui_signal = pyqtSignal() def __init__(self, parent=None): @@ -448,7 +443,6 @@ class Worker(QThread): class Systray(QWidget): - def __init__(self, parent): QWidget.__init__(self) self.parent = parent From 5553e7fabe494035c175f2936fbe0ba2fddb053d Mon Sep 17 00:00:00 2001 From: Huluti Date: Sat, 23 Feb 2019 20:58:02 +0100 Subject: [PATCH 4/4] Fix a bug introcuded in 13f43bf: allow extensions even in upper case --- trimage/trimage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trimage/trimage.py b/trimage/trimage.py index a07fa68..a32a1d5 100644 --- a/trimage/trimage.py +++ b/trimage/trimage.py @@ -347,7 +347,7 @@ class Image: self.reset() self.fullpath = fullpath if path.isfile(self.fullpath) and access(self.fullpath, W_OK): - self.filetype = path.splitext(self.fullpath)[1][1:] + self.filetype = path.splitext(self.fullpath)[1][1:].lower() if self.filetype == "jpg": self.filetype = "jpeg" if self.filetype in ["jpeg", "png"]: