add closing shortcut, change to tableview, file processing logic

This commit is contained in:
Kilian Valkhof 2010-02-01 21:14:47 +01:00
parent 0736a8f3a3
commit 95789e1920
3 changed files with 73 additions and 22 deletions

View file

@ -1,52 +1,66 @@
import sys import sys
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from ui import Ui_trimage from ui import Ui_trimage
from os.path import isfile
class StartQT4(QtGui.QMainWindow): class StartQT4(QtGui.QMainWindow):
def __init__(self, parent=None): def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent) QtGui.QWidget.__init__(self, parent)
self.ui = Ui_trimage() self.ui = Ui_trimage()
self.ui.setupUi(self) self.ui.setupUi(self)
self.quit_shortcut = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+Q"), self); # todo use standardKey Quit.
# connect signals with slots # connect signals with slots
QtCore.QObject.connect(self.ui.addfiles,QtCore.SIGNAL("clicked()"), self.file_dialog) QtCore.QObject.connect(self.ui.addfiles, QtCore.SIGNAL("clicked()"), self.file_dialog)
QtCore.QObject.connect(self.ui.recompress,QtCore.SIGNAL("clicked()"), self.recompress_files) QtCore.QObject.connect(self.ui.recompress, QtCore.SIGNAL("clicked()"), self.recompress_files)
QtCore.QObject.connect(self.quit_shortcut, QtCore.SIGNAL("activated()"), QtGui.qApp, QtCore.SLOT('quit()'))
# set recompress to false # set recompress to false
self.ui.recompress.setEnabled(False) self.ui.recompress.setEnabled(False)
def file_dialog(self): def file_dialog(self):
fd = QtGui.QFileDialog(self) fd = QtGui.QFileDialog(self)
images = fd.getOpenFileNames(self, images = fd.getOpenFileNames(self,
"Select one or more image files to compress", "Select one or more image files to compress",
"", # directory "", # directory
"Image files (*.png *.gif *.jpg)") "Image files (*.png *.gif *.jpg)")
for image in images: for image in images:
filename = image self.compress_file(image)
oldfilesize = QtCore.QFileInfo(image).size()
# send image to processing
def enable_recompress(self): def enable_recompress(self):
self.ui.recompress.setEnabled(True) self.ui.recompress.setEnabled(True)
def recompress_files(self): def recompress_files(self):
# get list of currently processed files # get list of currently processed files
# reprocess them # reprocess them
# update columnview # update columnview
self.setWindowTitle("check too!") self.setWindowTitle("check too!")
def compress_file(self, filename):
# check file extention
# get file size
# run correct command line tool and get reply
# get new file size
# add to columnview
self.setWindowTitle("check too!")
def add_to_columnview(self): def compress_file(self, filename):
# update column view with file info oldfile = QtCore.QFileInfo(filename);
name = oldfile.fileName()
oldfilesize = oldfile.size()
if name.endsWith("jpg"):
self.jpg = True
# run jpegoptim
else:
self.jpg = False
#run optipng
newfile = oldfile
newfilesize = newfile.size()
ratio = 100 - (newfilesize / oldfilesize * 100)
ratio_str = "%.1f%%" % ratio
# get new file size
# add to columnview name, newsize, ratio_str,
def add_to_tableview(self, filename, filesize, ratio):
# update table view with file info
self.setWindowTitle("check too!") self.setWindowTitle("check too!")
if __name__ == "__main__": if __name__ == "__main__":

20
ui.py
View file

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'window.ui' # Form implementation generated from reading ui file 'window.ui'
# #
# Created: Mon Feb 1 16:48:11 2010 # Created: Mon Feb 1 19:37:17 2010
# by: PyQt4 UI code generator 4.4.4 # by: PyQt4 UI code generator 4.4.4
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!
@ -13,12 +13,15 @@ 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)
self.centralwidget = QtGui.QWidget(trimage) self.centralwidget = QtGui.QWidget(trimage)
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget) self.gridLayout_2 = QtGui.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 = QtGui.QWidget(self.centralwidget)
self.widget.setEnabled(True) self.widget.setEnabled(True)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
@ -27,20 +30,25 @@ class Ui_trimage(object):
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 = QtGui.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 = QtGui.QFrame(self.widget)
self.frame.setObjectName("frame") self.frame.setObjectName("frame")
self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame) self.verticalLayout_2 = QtGui.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 = QtGui.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 = QtGui.QPushButton(self.frame)
font = QtGui.QFont() font = QtGui.QFont()
font.setPointSize(9) font.setPointSize(9)
@ -51,6 +59,7 @@ class Ui_trimage(object):
self.addfiles.setIcon(icon) self.addfiles.setIcon(icon)
self.addfiles.setObjectName("addfiles") self.addfiles.setObjectName("addfiles")
self.horizontalLayout.addWidget(self.addfiles) self.horizontalLayout.addWidget(self.addfiles)
self.label = QtGui.QLabel(self.frame) self.label = QtGui.QLabel(self.frame)
font = QtGui.QFont() font = QtGui.QFont()
font.setPointSize(8) font.setPointSize(8)
@ -60,6 +69,7 @@ class Ui_trimage(object):
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 = QtGui.QSpacerItem(498, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem) self.horizontalLayout.addItem(spacerItem)
self.recompress = QtGui.QPushButton(self.frame) self.recompress = QtGui.QPushButton(self.frame)
@ -67,14 +77,17 @@ class Ui_trimage(object):
font.setPointSize(9) font.setPointSize(9)
self.recompress.setFont(font) self.recompress.setFont(font)
self.recompress.setCursor(QtCore.Qt.PointingHandCursor) self.recompress.setCursor(QtCore.Qt.PointingHandCursor)
icon1 = QtGui.QIcon() icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap("view-refresh.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon1.addPixmap(QtGui.QPixmap("view-refresh.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.recompress.setIcon(icon1) self.recompress.setIcon(icon1)
self.recompress.setCheckable(False) self.recompress.setCheckable(False)
self.recompress.setObjectName("recompress") self.recompress.setObjectName("recompress")
self.horizontalLayout.addWidget(self.recompress) self.horizontalLayout.addWidget(self.recompress)
self.verticalLayout_2.addLayout(self.horizontalLayout) self.verticalLayout_2.addLayout(self.horizontalLayout)
self.processedfiles = QtGui.QColumnView(self.frame)
self.processedfiles = QtGui.QTableView(self.frame)
self.processedfiles.setEnabled(True) self.processedfiles.setEnabled(True)
self.processedfiles.setAcceptDrops(True) self.processedfiles.setAcceptDrops(True)
self.processedfiles.setFrameShape(QtGui.QFrame.NoFrame) self.processedfiles.setFrameShape(QtGui.QFrame.NoFrame)
@ -87,6 +100,9 @@ class Ui_trimage(object):
self.processedfiles.setDragDropMode(QtGui.QAbstractItemView.DropOnly) self.processedfiles.setDragDropMode(QtGui.QAbstractItemView.DropOnly)
self.processedfiles.setAlternatingRowColors(True) self.processedfiles.setAlternatingRowColors(True)
self.processedfiles.setTextElideMode(QtCore.Qt.ElideRight) self.processedfiles.setTextElideMode(QtCore.Qt.ElideRight)
self.processedfiles.setShowGrid(True)
self.processedfiles.setGridStyle(QtCore.Qt.NoPen)
self.processedfiles.setSortingEnabled(True)
self.processedfiles.setObjectName("processedfiles") self.processedfiles.setObjectName("processedfiles")
self.verticalLayout_2.addWidget(self.processedfiles) self.verticalLayout_2.addWidget(self.processedfiles)
self.verticalLayout.addWidget(self.frame) self.verticalLayout.addWidget(self.frame)

View file

@ -147,7 +147,7 @@
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QColumnView" name="processedfiles"> <widget class="QTableView" name="processedfiles">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
</property> </property>
@ -190,6 +190,27 @@
<property name="textElideMode"> <property name="textElideMode">
<enum>Qt::ElideRight</enum> <enum>Qt::ElideRight</enum>
</property> </property>
<property name="showGrid">
<bool>true</bool>
</property>
<property name="gridStyle">
<enum>Qt::NoPen</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
</widget> </widget>
</item> </item>
</layout> </layout>