Merge pull request #52 from Huluti/cleaning

Just some cleaning
This commit is contained in:
Kilian Valkhof 2019-02-22 10:03:00 +01:00 committed by GitHub
commit be7fe35ba9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 45 deletions

View file

@ -3,26 +3,22 @@
import time
import sys
import errno
from os import listdir
from os import path
from os import remove
from os import access
from os import W_OK as WRITEABLE
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
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from tools import human_readable_size
from queue import Queue
from ThreadPool import ThreadPool
from multiprocessing import cpu_count
from ui import Ui_trimage
VERSION = "1.0.5"
@ -44,8 +40,8 @@ class StartQT5(QMainWindow):
if self.settings.value("geometry"):
self.restoreGeometry(self.settings.value("geometry"))
# check if apps are installed
if self.checkapps():
# check if dependencies are installed
if not self.check_dependencies():
quit()
# add quit shortcut
@ -190,7 +186,7 @@ class StartQT5(QMainWindow):
def walk(self, dir, delegatorlist):
"""
Walks a directory, and executes a callback on each file
Walks a directory, and executes a callback on each file.
"""
dir = path.abspath(dir)
for file in [file for file in listdir(dir) if not file in [".","..",".svn",".git",".hg",".bzr",".cvs"]]:
@ -203,7 +199,7 @@ class StartQT5(QMainWindow):
def add_image(self, fullpath, delegatorlist):
"""
Adds an image file to the delegator list and update the tray and the title of the window
Adds an image file to the delegator list and update the tray and the title of the window.
"""
image = Image(fullpath)
if image.valid:
@ -256,33 +252,27 @@ class StartQT5(QMainWindow):
if QSystemTrayIcon.isSystemTrayAvailable() and not self.cli:
self.systemtray.recompress.setEnabled(True)
def checkapps(self):
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
retcode = self.safe_call("jpegoptim" + exe + " --version")
if retcode != 0:
status = True
print("[error] please install jpegoptim", file=sys.stderr)
print("[error] please install {}".format(elt), file=sys.stderr)
retcode = self.safe_call("optipng" + exe + " -v")
if retcode != 0:
status = True
print("[error] please install optipng", file=sys.stderr)
retcode = self.safe_call("advpng" + exe + " --version")
if retcode != 0:
status = True
print("[error] please install advancecomp", file=sys.stderr)
retcode = self.safe_call("pngcrush" + exe + " -version")
if retcode != 0:
status = True
print("[error] please install pngcrush", file=sys.stderr)
return status
def safe_call(self, command):
""" cross-platform command-line check """
"""Cross-platform command-line check."""
while True:
try:
return call(command, shell=True, stdout=PIPE)
@ -393,11 +383,11 @@ class ImageRow:
class Image:
def __init__(self, fullpath):
""" gather image information. """
"""Gather image information."""
self.valid = False
self.reset()
self.fullpath = fullpath
if path.isfile(self.fullpath) and access(self.fullpath, WRITEABLE):
if path.isfile(self.fullpath) and access(self.fullpath, W_OK):
self.filetype = path.splitext(self.fullpath)[1][1:]
if self.filetype == "jpg":
self.filetype = "jpeg"
@ -426,7 +416,7 @@ class Image:
"jpeg": "jpegoptim" + exe + " -f --strip-all '%(file)s'",
"png": "optipng" + exe + " -force -o7 '%(file)s'&&advpng" + exe + " -z4 '%(file)s' && pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time '%(file)s' '%(file)s.bak' && mv '%(file)s.bak' '%(file)s'"
}
# Create a backup file
# create a backup file
copy(self.fullpath, self.fullpath + '~')
try:
retcode = call(runString[self.filetype] % {"file": self.fullpath},
@ -437,12 +427,12 @@ class Image:
self.newfilesize = QFile(self.fullpath).size()
self.compressed = True
# Checks the new file and copy the backup
# checks the new file and copy the backup
if self.newfilesize >= self.oldfilesize:
copy(self.fullpath + '~', self.fullpath)
self.newfilesize = self.oldfilesize
# Removes the backup file
# removes the backup file
remove(self.fullpath + '~')
else:
self.failed = True

View file

@ -1,9 +1,11 @@
#!/usr/bin/env python3
from os import path
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from os import path
class TrimageTableView(QTableView):
@ -34,12 +36,12 @@ class TrimageTableView(QTableView):
class Ui_trimage():
def get_image(self, image):
""" Get the correct link to the images used in the UI """
"""Get the correct link to the images used in the UI."""
imagelink = path.join(path.dirname(path.dirname(path.realpath(__file__))), "trimage/" + image)
return imagelink
def setupUi(self, trimage):
""" Setup the entire UI """
"""Setup the entire UI."""
trimage.setObjectName("trimage")
trimage.resize(600, 170)
@ -147,7 +149,7 @@ class Ui_trimage():
QMetaObject.connectSlotsByName(trimage)
def retranslateUi(self, trimage):
""" Fill in the texts for all UI elements """
"""Fill in the texts for all UI elements."""
trimage.setWindowTitle(QApplication.translate("trimage",
"Trimage image compressor", None))
self.addfiles.setToolTip(QApplication.translate("trimage",