implement drag and drop compression, also use advpng

This commit is contained in:
Kilian Valkhof 2010-02-03 13:12:35 +01:00
parent 26a421815b
commit 68ade9ba2e
3 changed files with 58 additions and 55 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Before After
Before After

View file

@ -40,16 +40,18 @@ class StartQT4(QMainWindow):
self.recompress_files) self.recompress_files)
QObject.connect(self.quit_shortcut, SIGNAL("activated()"), QObject.connect(self.quit_shortcut, SIGNAL("activated()"),
qApp, SLOT('quit()')) qApp, SLOT('quit()'))
QObject.connect(self.ui.processedfiles, SIGNAL("fileDropEvent"),
self.file_drop)
def commandline_options(self): def commandline_options(self):
"""Set up the command line options.""" """Set up the command line options."""
parser = OptionParser(version="%prog 1.0", parser = OptionParser(version="%prog 1.0",
description="GUI front-end to compress png and jpg images via " description="GUI front-end to compress png and jpg images via "
"optipng and jpegoptim") "optipng, advpng and jpegoptim")
parser.add_option("-f", "--file", action="store", type="string", parser.add_option("-f", "--file", action="store", type="string",
dest="filename", help="image to compress") dest="filename", help="image to compress")
parser.add_option("-d", "--directory", action="store", type="string", parser.add_option("-d", "--directory", action="store", type="string",
dest="directory", help="directory of images to compress") dest="directory", help="directory of images to compress", )
options, args = parser.parse_args() options, args = parser.parse_args()
@ -76,9 +78,12 @@ class StartQT4(QMainWindow):
if self.checkname(image): if self.checkname(image):
self.compress_file(image) self.compress_file(image)
def file_drop(self, files): def file_drop(self, image):
#TODO implement file drop handling """Get a file from the drag and drop handler and send it to
print("booya") compress_file."""
if self.checkname(image):
self.compress_file(image)
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."""
@ -123,9 +128,9 @@ class StartQT4(QMainWindow):
elif path.splitext(str(filename))[1].lower() in [".png"]: elif path.splitext(str(filename))[1].lower() in [".png"]:
# don't do advpng yet # don't do advpng yet
#runstr = ('optipng -force -o7 "' + str(filename) runstr = ('optipng -force -o7 "' + str(filename)
#+ '"; advpng -z4 "' + str(filename) + '"') + '"; advpng -z4 "' + str(filename) + '"')
runstr = 'optipng -force -o7 "' + str(filename) + '"' #runstr = 'optipng -force -o7 "' + str(filename) + '"'
runfile = system(runstr) runfile = system(runstr)
if runfile == 0: if runfile == 0:

90
ui.py
View file

@ -1,11 +1,11 @@
from PyQt4 import QtCore, QtGui from PyQt4.QtCore import *
from PyQt4.QtCore import QUrl, QString from PyQt4.QtGui import *
DEBUG = True DEBUG = True
class TrimageTableView(QtGui.QTableView): class TrimageTableView(QTableView):
def __init__(self, parent=None): def __init__(self, parent=None):
super(TrimageTableView, self).__init__(parent) super(TrimageTableView, self).__init__(parent)
@ -28,85 +28,83 @@ class TrimageTableView(QtGui.QTableView):
files = str(event.mimeData().data("text/uri-list")).strip().split() files = str(event.mimeData().data("text/uri-list")).strip().split()
for i, file in enumerate(files): for i, file in enumerate(files):
files[i] = QUrl(QString(file)).toLocalFile() files[i] = QUrl(QString(file)).toLocalFile()
if DEBUG:
for file in files: for file in files:
print("Drop received: %s" % file) self.emit(SIGNAL("fileDropEvent"), (file))
class Ui_trimage(object): class Ui_trimage(object):
def setupUi(self, trimage): def setupUi(self, trimage):
trimage.setObjectName("trimage") trimage.setObjectName("trimage")
trimage.resize(600, 170) trimage.resize(600, 170)
trimage.setWindowIcon(QtGui.QIcon("trimage-icon.png")) trimage.setWindowIcon(QIcon("trimage-icon.png"))
self.centralwidget = QtGui.QWidget(trimage) self.centralwidget = QWidget(trimage)
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget) self.gridLayout_2 = QGridLayout(self.centralwidget)
self.gridLayout_2.setMargin(0) self.gridLayout_2.setMargin(0)
self.gridLayout_2.setSpacing(0) self.gridLayout_2.setSpacing(0)
self.gridLayout_2.setObjectName("gridLayout_2") self.gridLayout_2.setObjectName("gridLayout_2")
self.widget = QtGui.QWidget(self.centralwidget) self.widget = QWidget(self.centralwidget)
self.widget.setEnabled(True) self.widget.setEnabled(True)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(1) sizePolicy.setHorizontalStretch(1)
sizePolicy.setVerticalStretch(1) sizePolicy.setVerticalStretch(1)
sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth())
self.widget.setSizePolicy(sizePolicy) self.widget.setSizePolicy(sizePolicy)
self.widget.setObjectName("widget") self.widget.setObjectName("widget")
self.verticalLayout = QtGui.QVBoxLayout(self.widget) self.verticalLayout = QVBoxLayout(self.widget)
self.verticalLayout.setSpacing(0) self.verticalLayout.setSpacing(0)
self.verticalLayout.setMargin(0) self.verticalLayout.setMargin(0)
self.verticalLayout.setObjectName("verticalLayout") self.verticalLayout.setObjectName("verticalLayout")
self.frame = QtGui.QFrame(self.widget) self.frame = QFrame(self.widget)
self.frame.setObjectName("frame") self.frame.setObjectName("frame")
self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame) self.verticalLayout_2 = QVBoxLayout(self.frame)
self.verticalLayout_2.setSpacing(0) self.verticalLayout_2.setSpacing(0)
self.verticalLayout_2.setMargin(0) self.verticalLayout_2.setMargin(0)
self.verticalLayout_2.setObjectName("verticalLayout_2") self.verticalLayout_2.setObjectName("verticalLayout_2")
self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(0) self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setMargin(10) self.horizontalLayout.setMargin(10)
self.horizontalLayout.setObjectName("horizontalLayout") self.horizontalLayout.setObjectName("horizontalLayout")
self.addfiles = QtGui.QPushButton(self.frame) self.addfiles = QPushButton(self.frame)
font = QtGui.QFont() font = QFont()
font.setPointSize(9) font.setPointSize(9)
self.addfiles.setFont(font) self.addfiles.setFont(font)
self.addfiles.setCursor(QtCore.Qt.PointingHandCursor) self.addfiles.setCursor(Qt.PointingHandCursor)
icon = QtGui.QIcon() icon = QIcon()
icon.addPixmap(QtGui.QPixmap("list-add.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon.addPixmap(QPixmap("list-add.png"), QIcon.Normal, QIcon.Off)
self.addfiles.setIcon(icon) self.addfiles.setIcon(icon)
self.addfiles.setObjectName("addfiles") self.addfiles.setObjectName("addfiles")
self.addfiles.setAcceptDrops(True) self.addfiles.setAcceptDrops(True)
self.horizontalLayout.addWidget(self.addfiles) self.horizontalLayout.addWidget(self.addfiles)
self.label = QtGui.QLabel(self.frame) self.label = QLabel(self.frame)
font = QtGui.QFont() font = QFont()
font.setPointSize(8) font.setPointSize(8)
self.label.setFont(font) self.label.setFont(font)
self.label.setFrameShadow(QtGui.QFrame.Plain) self.label.setFrameShadow(QFrame.Plain)
self.label.setMargin(1) self.label.setMargin(1)
self.label.setIndent(10) self.label.setIndent(10)
self.label.setObjectName("label") self.label.setObjectName("label")
self.horizontalLayout.addWidget(self.label) self.horizontalLayout.addWidget(self.label)
spacerItem = QtGui.QSpacerItem(498, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) spacerItem = QSpacerItem(498, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem) self.horizontalLayout.addItem(spacerItem)
self.recompress = QtGui.QPushButton(self.frame) self.recompress = QPushButton(self.frame)
font = QtGui.QFont() font = QFont()
font.setPointSize(9) font.setPointSize(9)
self.recompress.setFont(font) self.recompress.setFont(font)
self.recompress.setCursor(QtCore.Qt.PointingHandCursor) self.recompress.setCursor(Qt.PointingHandCursor)
icon1 = QtGui.QIcon() icon1 = QIcon()
icon1.addPixmap(QtGui.QPixmap("view-refresh.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon1.addPixmap(QPixmap("view-refresh.png"), QIcon.Normal, QIcon.Off)
self.recompress.setIcon(icon1) self.recompress.setIcon(icon1)
self.recompress.setCheckable(False) self.recompress.setCheckable(False)
@ -116,36 +114,36 @@ class Ui_trimage(object):
self.processedfiles = TrimageTableView(self.frame) self.processedfiles = TrimageTableView(self.frame)
self.processedfiles.setEnabled(True) self.processedfiles.setEnabled(True)
self.processedfiles.setFrameShape(QtGui.QFrame.NoFrame) self.processedfiles.setFrameShape(QFrame.NoFrame)
self.processedfiles.setFrameShadow(QtGui.QFrame.Plain) self.processedfiles.setFrameShadow(QFrame.Plain)
self.processedfiles.setLineWidth(0) self.processedfiles.setLineWidth(0)
self.processedfiles.setMidLineWidth(0) self.processedfiles.setMidLineWidth(0)
self.processedfiles.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.processedfiles.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.processedfiles.setTabKeyNavigation(True) self.processedfiles.setTabKeyNavigation(True)
self.processedfiles.setAlternatingRowColors(True) self.processedfiles.setAlternatingRowColors(True)
self.processedfiles.setTextElideMode(QtCore.Qt.ElideRight) self.processedfiles.setTextElideMode(Qt.ElideRight)
self.processedfiles.setShowGrid(True) self.processedfiles.setShowGrid(True)
self.processedfiles.setGridStyle(QtCore.Qt.NoPen) self.processedfiles.setGridStyle(Qt.NoPen)
self.processedfiles.setSortingEnabled(False) self.processedfiles.setSortingEnabled(False)
self.processedfiles.setObjectName("processedfiles") self.processedfiles.setObjectName("processedfiles")
self.processedfiles.resizeColumnsToContents() self.processedfiles.resizeColumnsToContents()
self.processedfiles.setSelectionMode(QtGui.QAbstractItemView.NoSelection) self.processedfiles.setSelectionMode(QAbstractItemView.NoSelection)
self.verticalLayout_2.addWidget(self.processedfiles) self.verticalLayout_2.addWidget(self.processedfiles)
self.verticalLayout.addWidget(self.frame) self.verticalLayout.addWidget(self.frame)
self.gridLayout_2.addWidget(self.widget, 0, 0, 1, 1) self.gridLayout_2.addWidget(self.widget, 0, 0, 1, 1)
trimage.setCentralWidget(self.centralwidget) trimage.setCentralWidget(self.centralwidget)
self.retranslateUi(trimage) self.retranslateUi(trimage)
QtCore.QMetaObject.connectSlotsByName(trimage) QMetaObject.connectSlotsByName(trimage)
def retranslateUi(self, trimage): def retranslateUi(self, trimage):
trimage.setWindowTitle(QtGui.QApplication.translate("trimage", "Trimage image compressor", None, QtGui.QApplication.UnicodeUTF8)) trimage.setWindowTitle(QApplication.translate("trimage", "Trimage image compressor", None, QApplication.UnicodeUTF8))
self.addfiles.setToolTip(QtGui.QApplication.translate("trimage", "Add file to the compression list", None, QtGui.QApplication.UnicodeUTF8)) self.addfiles.setToolTip(QApplication.translate("trimage", "Add file to the compression list", None, QApplication.UnicodeUTF8))
self.addfiles.setText(QtGui.QApplication.translate("trimage", "&Add and compress", None, QtGui.QApplication.UnicodeUTF8)) self.addfiles.setText(QApplication.translate("trimage", "&Add and compress", None, QApplication.UnicodeUTF8))
self.addfiles.setShortcut(QtGui.QApplication.translate("trimage", "Alt+A", None, QtGui.QApplication.UnicodeUTF8)) self.addfiles.setShortcut(QApplication.translate("trimage", "Alt+A", None, QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("trimage", "Drag and drop images onto the table", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QApplication.translate("trimage", "Drag and drop images onto the table", None, QApplication.UnicodeUTF8))
self.recompress.setToolTip(QtGui.QApplication.translate("trimage", "Recompress selected images", None, QtGui.QApplication.UnicodeUTF8)) self.recompress.setToolTip(QApplication.translate("trimage", "Recompress selected images", None, QApplication.UnicodeUTF8))
self.recompress.setText(QtGui.QApplication.translate("trimage", "&Recompress", None, QtGui.QApplication.UnicodeUTF8)) self.recompress.setText(QApplication.translate("trimage", "&Recompress", None, QApplication.UnicodeUTF8))
self.recompress.setShortcut(QtGui.QApplication.translate("trimage", "Alt+R", None, QtGui.QApplication.UnicodeUTF8)) self.recompress.setShortcut(QApplication.translate("trimage", "Alt+R", None, QApplication.UnicodeUTF8))
self.processedfiles.setToolTip(QtGui.QApplication.translate("trimage", "Drag files in here", None, QtGui.QApplication.UnicodeUTF8)) self.processedfiles.setToolTip(QApplication.translate("trimage", "Drag files in here", None, QApplication.UnicodeUTF8))
self.processedfiles.setWhatsThis(QtGui.QApplication.translate("trimage", "Drag files in here", None, QtGui.QApplication.UnicodeUTF8)) self.processedfiles.setWhatsThis(QApplication.translate("trimage", "Drag files in here", None, QApplication.UnicodeUTF8))